首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >EJB和安全发布

EJB和安全发布
EN

Stack Overflow用户
提问于 2015-09-24 22:02:54
回答 1查看 25关注 0票数 1

我最近一直在阅读关于安全发布Java对象的文章(例如:http://shipilev.net/blog/2014/safe-public-construction/)。

到目前为止,当我依赖容器管理的并发性时,我是毫无疑问地信任EJB容器。

现在我想知道1) EJB容器如何确保EJB本身被安全发布? 2) EJB容器如何确保由其EJB创建的对象被安全发布(例如EJB实例变量)?

例如,随着时间的推移,无状态会话bean可能会被不同的线程访问(我不是一定要同时说),所以不安全的发布是一个潜在的问题。

对于1),我粗略地看到了一些可能性,例如,通过包装EJB和使用一些易失性访问来保证总顺序。

对于2),我不明白EJB容器如何执行它。也许EJB3.1规范禁止在EJB中保留实例变量,如果它可以被不同的线程访问的话?也许“不要担心容器管理的EJB中的并发性”这句话是不正确的,我应该在EJB实例变量中使用的类的类定义中使用安全发布模式(包括volatile和/或final关键字)?

作为一名Java开发人员,我错过了这个基本问题这么多年,这让我很惊讶。

致敬,拉尔斯

EN

回答 1

Stack Overflow用户

发布于 2015-09-25 03:44:33

如果EJB容器正在重用实例,它必须将它们存储在线程安全的对象池中,该对象池必须使用某种同步(synchronized、比较和交换等),这将确保第一个线程写入的所有内容都将“发生在”第二个线程上发生的所有事情之前。EJB开发人员不需要担心同步(除非他们使用具有bean管理的并发的单例会话bean,或者EJB通过将数据存储在静态变量中而超出了EJB规范的范围)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32763428

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档