何时使用Java Beans何时使用Enterprise Java Bean

时间:2013-07-03 08:22:54

标签: java jsf ejb javabeans

我想我了解Java Bean(JB)和Enterprise Java Bean(EJB)之间的区别。这个问题有很多答案。但我没有真正找到答案:

如果我使用JSF编写Java EE软件代码,我是否更愿意使用EJB编写所有内容(我不需要像模型那样使用CDI)或只编写我在EJB中看到优势的内容。例如,如果可以使用无状态EJB,或者因为我需要事务管理?

例如,我想编写一个在线计算器。视图的模型是CDI。但是根据模型的要求进行计算的类是什么。有没有理由为他们使用EJB?

2 个答案:

答案 0 :(得分:1)

无状态会话bean被合并,并“分配”给来自客户端的单个调用。

这意味着它们是自动线程安全的,并且可以保持昂贵的创建资源,而无需一次又一次地创建这些资源,或者将bean放在共享范围内(它将对线程安全问题开放)。

如果您发现自己处于需要的状态,那么无状态bean可以提高性能。

它们还可以通过使用无状态会话bean时发生的隐式请求限制来稳定系统性能;如果池耗尽,则不会接受对bean的新请求。这有助于防止系统过载。通过的呼叫将体验到更好的服务,但有些呼叫会被取消。这通常比所有来电者得到蹩脚的慢响应更好。

然后有一些服务目前只能在EJB bean中使用,比如Java EE计时器服务。有人要求将此服务和其他服务提供给所有bean,但在Java EE 6甚至Java EE 7中它只是EJB。

答案 1 :(得分:0)

EJB使用的主要原因是自动事务处理。如果您没有执行数据库工作,那么使用EJB将无法获得太多收益。使用EJB也没有性能优势。