当前位置: 首页 > 知识库问答 >
问题:

EJB3单例会话Bean和ConcurrentHashMap

栾耀
2023-03-14

如果使用EJB3单例会话Bean,那么让ConcurrentHashMap状态变量-correct没有意义?我可以只使用一个由容器并发管理器管理的常规HashMap?

共有2个答案

蒋寒
2023-03-14

默认情况下,所有方法的@concurrentymanagement(CONTAINER)都带有@Lock(WRITE),但扩展不如ConcurrentHashMap好,因为所有方法调用都会阻止等待写锁。您可以使用@Lock(READ)ConcurrentHashMap来允许多个线程,但此时,您还可以使用@Concurrentymanagement(BEAN)来完全摆脱容器管理的并发。

苍轶
2023-03-14

这是正确的。如果未指定其他内容,则缺省情况下,单例会话bean使用容器托管并发。此外,如果未指定,则默认情况下,每个业务和超时方法都具有LockType。写作。结果是,在单例中没有多个线程同时执行方法,因此使用常规java.util.HashMap非常好。

 类似资料:
  • > 在EJB3.0及其之前的版本中,该问题是如何处理的? 如果它保留了客户端特定的会话状态,那么单个实例将拥有所有客户端(试图并发访问)的特定数据?它会安全吗?? 如果我们可以在其他会话bean中使用静态最终变量和静态初始值设定项块或静态方法来初始化它们(因为静态变量也是每个类的数据,而不是每个实例的数据),以便跨bean共享公共数据,那么单例会话bean需要什么呢? 在singleton中使用业

  • 我不知道这是否是实现我的解决方案的更好方法: 该类是可序列化的,因为我从数据库的Json中获取内容,并将内容映射到对象GetFromJson中(我只需要在数据库中执行一次查询)。因为这个原因,我需要在我所有的应用程序中使用对象,因为这个原因,我认为我需要使用一个单例 有人给我发布了一个库来从数据库中获取JSON。JSON对象解析为,因此我创建了我的类。 现在我有很多rest服务,在我的rest服务

  • 我对EJB有点陌生。我已经理解了HTTPSession是如何维护的(所有cookie funda)。互联网上所有的资源都写着“有状态会话Bean维护会话(记住客户机)”,但我找不到答案

  • 我正在再次浏览Javaee7 oracle文档,下面是所述内容。 “单个会话bean在每个应用程序中实例化一次,并在应用程序的生命周期内存在。单个会话bean是为单个企业bean实例在客户端之间共享并由客户端并发访问的情况而设计的。” 我完全明白它在说什么。然而,仔细想想,session这个词在这里是非常误导人的。由于它存在于应用程序级别,“会话”一词在这里似乎不适用。 当我想到会话这个词时,我认

  • 问题内容: 有状态会话bean和HTTP会话之间有什么关系吗?我们将需要有状态会话Bean的用例是什么,而HTTP会话需要哪些用例。我可以将有状态会话Bean公开为静态Web服务吗? 问题答案: HTTP是一种无状态协议, 这意味着 它是服务器和客户端之间的实际传输协议- 是“无状态的, 因为它在调用之间不记得任何东西。 现在,首先阅读一下什么是HTTPSession和什么是Session Bea

  • 我是EJB的新手,最近开始研究EJB(3.0)。我已经使用Java6年了,但以前从未使用过EJB。至少可以说,整个EJB业务的复杂性让我不知所措。我不明白我可以在哪里实际应用一些概念。 在理解无状态会话bean后,我想到的一个问题是,你能不能不要总是用一个没有本地成员的类的共享实例来替换无状态会话bean(实际上使其无状态)?我了解到正在为无状态会话bean进行实例池。如果没有状态,就不能简单地使