为什么我们应该使用EJB?

40

EJB是什么,为什么我们应该使用它?请用简单的语言解释一下。谢谢。


3
有时我觉得需要Stack Overflow审核指南,一个对该技术全然不了解的新手希望有人能用简单易懂的语言来解释,而什么平台比Stack Overflow更好呢?这个问题在近10年前已经被问过了,而现在我也在问同样的问题。 - Vivek Shukla
这里是@Arjan Tijms提供的最简单的答案——"EJB bean专门设计用于实现应用程序的业务逻辑。因此,它们提供了在实现此类逻辑时经常需要的服务,例如事务、注入实体管理器(用于JPA,即Java持久性API)和bean池化。" - spandey
5个回答

29

企业级 Java Beans(EJB)是普通的 Java 类(自版本 3.0 起),其通过注释使您能够编写应用程序的业务逻辑,然后在 Java 企业版(Java EE)服务器上部署(或安装)。

如果您希望利用 Java 企业版(Java EE)服务器提供的以下服务,则必须考虑使用 EJB:

  • 集群。您可以在集群环境中部署 EJB(依赖于 Java EE 应用服务器),这为您提供了容错性和高可用性。
  • 无需使用线程的并发处理。所有 EJB 都通过对象池实例化,因此您的应用程序会获得更好的性能而且不需要处理线程复杂性。
  • 通过 JTA 实现事务处理。所有 EJB 都可以受益于不同资源的事务管理,其中最重要的是数据库。使用注释很容易确定每个事务的范围并进行管理。
  • 连接池到数据库。所有 EJB 都可以访问定义在 Java EE 应用服务器中的连接池,该连接池提供了对数据库复杂性的抽象。例如,您可以使用 XA 数据源,从而使您能够向不同的数据库执行两阶段提交。
  • 安全性。所有 EJB 都可以使用 JAAS 保护应用程序。JAAS 配置在 Java EE 应用服务器中,使您能够通过不同提供者的配置(例如使用 Active Directory、LDAP 或数据库)对 EJB 的方法进行身份验证和授权。
  • 调度服务。所有 EJB 都可以使用计时器服务,该服务使您能够实现后续执行或重复执行的任务。

还有其他服务和优点,但我认为这些是最重要的。如果您不需要这些好处,我的建议是不要使用 EJB(并非所有应用程序都是企业级应用程序)。


3
所有的EJB都可以使用JAAS来保护应用程序并非正确。EJB不使用JAAS。通过@RolesAllowed等方式进行安全保护的bean需要容器对用户/调用方进行身份验证,但规范并未描述该过程应该通过哪种机制进行。容器实现可以基于JAAS构建其代码,也可以完全使用其他方法。请参考以下链接了解更多细节:http://arjan-tijms.blogspot.com/2014/02/jaas-in-java-ee-is-not-universal.html 和 http://raymondkng.sys-con.com/node/171477。 - Arjan Tijms

19

EJB Bean 专门设计用于实现应用程序的业务逻辑。因此,它们提供了在实现这种逻辑时经常需要的服务,例如事务、注入实体管理器(用于 JPA,即 Java 持久化 API)和池化 Beans。

请参见此链接以获得更详细的答案和更多引用:What use are EJBs

简单来说,“EJB Beans 通过 JPA 处理数据库操作变得更加容易。”

如果不使用 EJB 来处理 JPA,则需要编写冗长且容易出错的代码,获取实体管理器、启动并提交或回滚事务。

使用 EJB 还有很多其他原因,但是根据经验,我认为这是使用 EJB 的主要原因。


7
企业级JavaBean架构(简称EJB)是一种用于开发和部署基于组件的强大、高度可扩展的商业应用程序的架构。这些应用程序具有可扩展性、事务性和多用户安全性。您可以开发应用程序,然后在任何一个符合Java EE 5标准的应用服务器上部署。有许多应用服务器可供选择,包括免费和商业版本。您可以选择适合您需求和预算的服务器进行开发和部署。 EJB的好处 EJB简化了小型和大型企业应用程序的开发。EJB容器为企业Bean提供系统级服务,Bean开发人员只需专注于开发解决业务问题的逻辑。
请参见wiki以获取更多详细信息。

1

-2

事务、远程等。也许可以买一本好的EJB书籍并阅读,或者进行一些谷歌搜索。从这里开始Java EE6 EJB。它可能会回答你所有的初始疑问。


1
哇,是的,Java EE 5教程已经有五年历史了,在互联网时代算是非常古老的了。但另一方面,它涵盖了EJB3,而这仍然非常流行。EJB 3.1更多地是一种进化性增强,没有改变任何基础架构方面的东西。 - Arjan Tijms

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接