6

为什么我应该使用 EJB?我能从中得到什么是其他方式无法得到的?

与 POJO 相比,使用 EJB 有什么优势?

4

1 回答 1

8

EJB由 Java EE 应用程序服务器管理和监视,它负责通过依赖注入创建它们并将它们提供给客户端,并管理它们的生命周期。EJB 由应用服务器保存在池中。每次客户端获取 EJB 时,应用程序服务器都会从池中挑选一个并将其分配给客户端。在客户端完成后(客户端没有对它的引用),它将返回到池中并准备分配给其他客户端。

池化对于应用程序的可扩展性非常重要。您不必对已部署的应用程序进行任何更改来处理不断增长的负载,并且由于资源数量有限,如果负载过高,您的应用程序不会让应用服务器屈服。一切都是通过配置应用服务器来完成的。

EJB 可以(如果有相应的注释)处理事务和异步执行,并且可以暴露给远程客户端。

有四种类型的 EJB:

会话 bean

  1. 无状态 EJB:让客户端执行一些操作并返回,不能用于保存状态,因为服务器可能会将其分配给其他客户端(您可以将其用作客户端之间的一种通信,例如,如果您有一个实例变量将其设置为一个值,则该值可能会被其他客户端看到)。您可以将无状态 EJB 方法视为类的函数式编程或静态方法。
  2. Statefull EJB:让客户端在多个请求中维护一个状态(客户端必须持有对它的引用,否则应用服务器可能会将其分配给另一个客户端)
  3. 单例 EJB:顾名思义,服务器保证此实例对于整个应用程序是唯一的。

消息驱动的 bean

  1. 消息驱动的 EJB:也是无状态的,通常与 JMS 结合用于发送和接收消息。消息处理函数异步执行。

虽然 EBJ 提供了所有这些,并且可能提供其他东西,但 POJO 只是 POJO,仅此而已。

于 2013-03-24T23:48:01.220 回答