为啥要使用 EJB? [关闭]

Posted

技术标签:

【中文标题】为啥要使用 EJB? [关闭]【英文标题】:Why should we use EJB? [closed]为什么要使用 EJB? [关闭] 【发布时间】:2011-08-21 15:49:11 【问题描述】:

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

【问题讨论】:

有时我觉得有必要使用 *** 来审查指南,刚接触该技术的人希望有人用简单的英语解释,还有什么比 *** 更好的平台?大约 10 年前有人问过这个问题,我在这里问的是同样的问题。 这里是@Arjan Tijms 的回答是我能想到的最简单的——“EJB bean 是专门为实现应用程序的业务逻辑而设计的。因此,它们提供了实现时经常需要的服务这样的逻辑,例如事务、实体管理器的注入(用于 JPA、Java Persistence API)和 bean 池。” 【参考方案1】:

EJB 或 Enterprise Java Bean 是普通的 Java 类(从 3.0 版开始),带有注释,使您能够编写应用程序的业务逻辑,然后在 Java Enterprise Edition Server 上部署(或安装)它。

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

集群。您可以将 EJB 部署在集群环境(依赖于 Java EE 应用服务器)上,这为您提供了容错和高可用性。 不使用线程的并发。所有 EJB 都通过对象池进行实例化,然后您的应用程序在性能上得到提升,并且没有线程复杂性。 通过 JTA 的事务性。所有 EJB 都可以从针对不同资源(最重要的数据库)的事务性管理中受益,使用注释可以轻松划分每个事务的边界并对其进行管理。 到数据库的连接池。所有 ejb 都可以访问定义在 Java EE 应用服务器中的连接池,这个连接池提供了数据库复杂性的抽象,例如,您可以使用 XA 数据源,使您能够对不同的数据库进行两阶段提交。 安全。所有 ejb 都可以使用 JAAS 来保护应用程序。 JAAS 被配置到 Java EE 应用服务器中,让您只需通过配置(例如使用 Active Directory、LDAP 或数据库)就可以通过不同的提供者对 EJB 的方法进行身份验证和授权。 安排服务。所有 ejb 都可以使用 Timer Service,它使您能够实现任务以进一步执行或包含重复执行。

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

【讨论】:

>All ejb can use JAAS for secure the applications - 这是不正确的。 EJB 不使用 JAAS。安全 bean(通过例如@RolesAllowed)要求容器对用户/调用者进行身份验证,但规范没有描述该过程应该通过哪种机制进行。容器实现可以基于 JAAS 的代码或完全使用其他东西。有关更多详细信息,请参阅这些:arjan-tijms.blogspot.com/2014/02/… 和 raymondkng.sys-con.com/node/171477【参考方案2】:

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

请参阅此以获得更详细的答案和更多参考:What use are EJBs

尽可能用最基本的措辞; “EJB bean 使通过 JPA 使用数据库变得更加容易”。

在 EJB 之外使用 JPA 需要大量冗长且容易出错的代码来获取实体管理器、启动事务并提交或回滚它。

使用 EJB 的原因还有很多,但根据经验,我认为这是第一大原因。

【讨论】:

【参考方案3】:

Enterprise JavaBeans 架构或简称 EJB 是一种用于开发和部署基于组件的健壮、高度可扩展的业务应用程序的架构。这些应用程序具有可扩展性、事务性和多用户安全性。您可以开发应用程序一次,然后部署在任何符合 Java EE 5 的应用程序服务器上。有许多可用的应用程序服务器,包括免费的和商业的。您可以选择适合您的需求和预算的服务器进行开发和部署。

EJB 的好处

EJB 简化了小型和大型企业应用程序的开发。 EJB 容器为企业 bean 提供系统级服务,bean 开发人员可以只专注于开发逻辑来解决业务问题。

请参阅wiki 了解更多详细说明

【讨论】:

【参考方案4】:

这里有一个更新的 Java EE 教程:http://download.oracle.com/javaee/6/tutorial/doc/。非常值得花时间和精力。

虽然 Wikipedia 可能是寻找答案的老生常谈的地方,但本文很好地概述了 EJB 是什么:http://en.wikipedia.org/wiki/Enterprise_JavaBean。

【讨论】:

【参考方案5】:

事务、远程等。也许买一本好的 EJB 书并阅读它,或者做一些谷歌搜索。从这里开始Java EE6 EJB。它可能会回答您所有的初始查询。

【讨论】:

Mwhoah,是的,Java EE 5 教程已经有 5 年的历史了,这在互联网时代已经很古老了。另一方面,它涵盖了 EJB3,这仍然是最新的。 EJB 3.1 更像是一种进化增强,并没有改变任何关于基础架构的东西。

以上是关于为啥要使用 EJB? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

为啥要使用 Mockito? [关闭]

为啥要使用面向堆栈的语言? [关闭]

为啥我们要在 softmax 中使用温度? [关闭]

我为啥要学习和使用struts? [关闭]

为啥要使用 websocket,使用它有啥好处? [关闭]

选择将 Oracle PL/SQL 迁移到 Java 类/EJB [关闭]