0

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

如果我使用 JSF 编写 Java EE 软件,我应该更喜欢使用 EJB 编写所有东西(我不需要像模型那样的 CDI)还是只编写我认为 EJB 有优势的东西。例如,如果无状态 EJB 是可能的,还是因为我需要事务管理?

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

4

2 回答 2

1

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

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

如果您发现自己需要这样做,无状态 bean 可以提高性能。

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

还有一些服务目前只能在 EJB bean 中使用,比如 Java EE 计时器服务。有人要求让所有 bean 都可以使用此服务和其他服务,但在 Java EE 6 甚至 Java EE 7 中,它只是 EJB。

于 2013-07-07T10:27:39.980 回答
0

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

于 2013-07-03T10:16:34.660 回答