首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JavaEE7:有没有CDI的EJB生命周期管理?有什么不同?

JavaEE7:有没有CDI的EJB生命周期管理?有什么不同?
EN

Stack Overflow用户
提问于 2015-04-11 15:50:22
回答 2查看 364关注 0票数 0

我对此真的很困惑。Enterprise Javabeans有一个管理bean生命周期的系统,它们是@Stateful@Stateless@Singleton,所以它显然是在管理生命周期。然而,CDI也有另一个与此对应的系统,包括@Dependent@RequestScoped@SessionScoped@Application,它们看起来相当于EJB中的@Singleton

如果我理解正确,EJB必须选择使用一个系统还是另一个系统?但是使用CDI提供了更细粒度的控制,例如EJB系统不识别请求与会话,哪个CDI识别呢?这是正确的吗?

还有一些书指出,CDI有上下文,而EJB生命周期管理没有,需要手动关闭资源。我不明白这是什么意思,因为EJB容器也在管理mean的生命周期,那么CDI提供而EJB不提供的“上下文”是什么呢?

谢谢

EN

回答 2

Stack Overflow用户

发布于 2015-04-13 15:29:58

CDI和会话Bean (@Singleton也是会话Bean)的语义略有不同:会话Bean为您提供事务管理和并发,而CDI不提供。当然,您可以为每个会话Bean编写一个生产者,并在应用程序中使用CDI注入它们。

票数 0
EN

Stack Overflow用户

发布于 2015-04-14 14:51:09

CDI在EJB之上提供了额外的特性。它们提供EJB (会话bean)的“上下文”生命周期管理。“上下文”意味着允许容器创建和销毁实例,并使它们可用于在相同上下文中执行的其他bean。你可以通过使用@RequestScoped等与作用域相关的注解来定义bean的上下文。我写了一个关于这方面的small blog post (可能会有帮助)。我强烈推荐阅读CDI specification document --第1.2.2、3.2、7.3.2、7.3.3节

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

https://stackoverflow.com/questions/29575473

复制
相关文章

相似问题

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