本主题对 Sun Microsystems Enterprise JavaBeans™(EJB)体系结构规范中定义的分布式组件体系结构进行了高度概述。
完整的 Enterprise JavaBeans 技术规范和描述可从 java.sun.com Web 站点获取。
企业 bean 为应用程序开发者提供了几个好处:
- 它们允许通过将使用不同供应商的工具所开发的组件组合在一起来构建分布式应用程序。
- 它们使编写应用程序变得更容易。开发者不需要处理事务的低级细节和状态管理、多线程、资源合用以及其他复杂的低级 API。但是,如果需要,高级程序员仍然可以直接访问低级 API。
- 可以开发一次,然后不用重新编译或修改源代码即可将它们部署在多个平台上。
- 用来管理企业 bean 的使用的 EJB 规范与其他 Java™ API 和 CORBA 兼容。它还提供了企业 bean 与非 Java 应用程序之间的互操作性。
- 企业 bean
- 企业 bean 是面向事务的分布式企业应用程序的不可视组件。企业 bean 通常部署在 EJB 容器中,并在 EJB 服务器上运行。可以通过更改它们的部署描述符来定制它们以及通过将它们与其他 bean 组装在一起来创建新的应用程序。有三种类型的企业 bean:会话 bean、实体 bean 和消息驱动的 bean。
- 会话 bean:会话 bean 是非持久企业 bean。它们可以是有状态的,也可以是无状态的。有状态会话 bean 充当单个客户机,并且维护跨越多个方法调用和事务的特定于客户机的会话信息(称为对话状态)。它会在单个客户机/服务器会话期间存在。相反,无状态会话 bean 不会维护任何对话状态。无状态会话 bean 由它们的容器合用,处理来自多个客户机的多个请求。
- 实体 bean:实体 bean 是包含持久数据及可以保存在各种持久数据存储中的企业 bean。每个实体 bean 都有它自己的标识。管理它们自己的持久性的实体 bean 被称为 bean 管理的持久性(BMP)实体 bean。将持久性委托给 EJB 容器的实体 bean 称为容器管理的持久性(CMP)实体 bean。
- 消息驱动的 bean:消息驱动的 bean 是接收和处理 JMS 消息的企业 bean。与会话 bean 或实体 bean 不同,消息驱动的 bean 没有接口。只能通过消息传递访问它们并且它们不会维护任何对话状态。消息驱动的
bean 允许队列与侦听器之间的异步通信,并将消息处理与业务逻辑隔开。
- 远程客户机视图
- 远程客户机视图规范从 EJB 1.1 起即可用。企业 bean 的远程客户机视图与位置无关。在
bean 实例所在 JVM 中运行的客户机与在同一机器或不同机器上的另一 JVM 中运行的客户机使用同一 API 来访问该 bean。
- 远程接口:远程接口指定客户机可以对企业 bean 调用的远程业务方法。
- 远程 home 接口:远程 home 接口指定远程客户机用于定位、创建和除去企业 bean 类的实例的方法。
- 本地客户机视图
- 本地客户机视图规范在 EJB 2.0 或更新版本中可用。与远程客户机视图不同,bean
的本地客户机视图与位置有关。本地客户机视图访问企业 bean 时要求本地客户机与提供本地客户机视图的企业 bean 在同一个 JVM 中。因此,本地客户机视图不提供远程客户机视图所提供的位置透明性。本地接口和本地
home 接口提供从作为本地客户机的企业 bean 进行的轻量级访问支持。会话
bean 和实体 bean 可与它们的客户机紧耦合,从而在访问时没有通常与远程方法调用相关联的开销。
- 本地接口:本地接口是远程接口的轻量级版本,但用于本地客户机。它包括可由本地客户机调用的业务逻辑方法。
- 本地 home 接口:本地 home 接口指定本地客户机用于定位、创建和除去企业 bean 类的实例的方法。
- Web service 客户机视图
- 在 EJB 2.1 规范中,EJB 体系结构引进对 Web service 的支持。会话 bean 的客户机可以是 Web service 客户机。Web Service 客户机可以使用无状态会话 bean 的 Web Service 客户机视图,该会话 bean 具有相应的服务端点接口。
- 服务端点接口
- 无状态会话 bean 的服务端点接口将该会话 bean 的功能表现为 Web service 端点。Web service 的 Web 服务描述语言(WSDL)文档将 Web service 描述为对消息产生作用的一组端点。WSDL 文档可以包括无状态会话 bean 的服务端点接口,从而将其作为端点之一。您可以将现有无状态会话 bean 修改为包括 Web service 客户机视图,或者可以从现有的 WSDL 映射服务端点接口,以提供正确的接口。
Web service 客户机视图与位置无关,您可以通过远程调用进行访问。
- EJB 客户机 JAR 文件
- EJB 客户机 JAR 文件是可选的 JAR 文件,它可以包含客户机接口,客户机程序使用包含在 EJB JAR 文件中的企业 bean 的客户机视图时需要这些接口。如果您决定不为 EJB 模块创建 EJB 客户机 JAR 文件,则所有客户机接口类将位于 EJB JAR 文件中。缺省情况下,工作台为每个相应的 EJB 项目创建 EJB 客户机 JAR 项目。
- EJB 容器
- EJB 容器是管理一个或多个企业 bean 的运行时环境。EJB 容器管理企业 bean 对象的生命周期、协调分布式事务和实现对象安全性。通常,每个 EJB 容器都是由 EJB 服务器提供的,它包含在该服务器上运行的一组企业 bean。
- 部署描述符
- 部署描述符是与 EJB JAR 文件或 EAR 文件中的企业 bean 一起打包的 XML 文件。它包含用来描述企业 bean 的内容和结构的元数据以及 EJB 容器的运行时事务和安全性信息。
- EJB 服务器
- EJB 服务器是一种高级进程或应用程序,可提供运行时环境来支持使用 企业 bean 的服务器应用程序的执行。EJB 服务器提供了 JNDI 可访问的命名服务,管理和协调客户机应用程序的资源分配,提供对系统资源的访问,并提供事务服务。例如,EJB 服务器可以由数据库或应用程序服务器提供。