It's difficult to tell what is being asked here. This question is ambiguous, vague, incomplete, overly broad, or rhetorical and cannot be reasonably answered in its current form. For help clarifying this question so that it can be reopened, visit the help center




7年前关闭。




为什么我应该使用EJB?我能从其他方式中得到什么呢?

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

最佳答案

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

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

EJB可以(如果有注释)可以处理事务和异步执行,并且可以向远程客户端公开。

EJB有四种类型:

会话bean

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

  • 消息驱动的豆
  • Message driven EJBs:也是无状态的,通常与JMS一起用于发送和接收消息。消息处理程序函数异步执行。

  • 尽管EBJ提供了所有这些以及可能的其他功能,但POJO只是POJO而已,仅此而已。

    08-18 12:58