- OMG 的对象事务服务 (OTS)
- Sun Microsystems 的 Transaction Service (JTS)
- Sun Microsystems 的 Java Transaction API (JTA)
- 开放组 (X/Open) 的 XA 接口
这种与语言无关的对象事务服务,为一个强健的分布式事务服务提供了基本概念、定义和功能。
Java Transaction Service 是 OTS 的 Java 映 射,在 org.omg.CosTransactions 和 org.omg.CosTSPortability 这两个 包中定义。JTS 对事务分界和事务环境的传播之类的服务提供支持。JTS 功能由应用程序通过 Java Transaction API 访问。
Java Transaction API 指定事务管理器与分布式事务中涉及的其他系统组件之间的各种高级接口,这些系统组件有应用程序、应用程序 服务器和资源管理器等。JTA 功能允许事务由应用程序本身、由应用程序服务器或由一个外部事务管理器来管理。JTA 接口包含 在 javax.transaction 和 javax.transaction.xa 这两个包中。
XA 接口定义了资源管理器和分布式事务环境中外部事务管理器之间的约定。外部事务管理器可以跨多个资源协调事务。XA 的 Java 映射包含在 Java Transaction API 中。
Ken Nordby
IBM 软件工程师
2000 6 月
本文的第二部分说明创建 Enterprise JavaBean 组件所需的 Java 接口和类的作用。除了对 bean 类本身进行编码外,EJB 开发人员还必须为 bean 定义一个本地接口和一个远程接口。这些接口的实现类通常由容器生成,因此部署 EJB 组件是开发人员和 EJB 容器的合作行为。第二部分还区分了 enterprise bean 的两种主要类型,即会话 bean 和实体 bean,并说明了 EJB 容器和 EJB 服务器之间的关系。
enterprise bean 的编程模型的三个关键特征是:面向对象、对象的分布式和使用代理对象。由于此编程模型使用 Java 技术,因此它在本质上就是面向对象的。此模型也是分布式的,这是指 bean 在理论上是位置透明的。根据 Enterprise JavaBeans (EJB) 规范,“一般说来,EJB 类和 EJB 容器的实际位置对客户机是透明的。”在客户机想要访问 EJB 组件时使用代理对象。bean 本身对于客户机是不可访问的,对 bean 方法的访问则由 helper 类提供。
接口、委托和代理
当 Java 程序员编写一个 Enterprise JavaBeans 组件时,他们所创建的类必须实现一个 EJB 接口,并且它必须包含一个名为 ejbCreate() 的方法。一个 EJB 接口 -- 例如 SessionBean 接口 -- 指定了一些方法,它们包括以下各项:
ejbActivate()ejbPassivate()ejbRemove()setSessionContext()
ejbActivate() 和 ejbPassivate() 方法通知一个 bean,管理该 bean 的容器组件正在主动和被动之间切换 bean 的状态(这通常是指在内存中还是交换到磁盘)。ejbRemove() 方法使 bean 知道它已被从容器中删除。setSessionContext() 方法使 bean 与一个上下文对象相关联,此上下文对象是为了便于 bean 与其容器进行通信。
ejbCreate() 方法并不是从零做起创建 enterprise bean 的。当客户机想要创建新的 enterprise bean 时,bean 的容器将调用这个 bean 的类的 newInstance() 方法,来实例化新的 bean 对象。然后容器调用 setSessionContext() 方法来建立上下文对象,用于与 bean 进行通信。最后,容器调用新 bean 中的 ejbCreate() 方法。像 ejbCreate()、ejbActivate() 和 ejbPassivate() 这样的方法有时称为对象生存周期方法,以区别于业务逻辑方法。
当开发人员设计一个新的 EJB 组件时,编写组成 enterprise bean 类的代码本身是不够的。EJB 程序员还必须编写两个将由 helper 类使用的 Java 接口。这些强制性接口必须扩展标准的 EJBObject 和 EJBHome 接口,而这两个接口则都是 java.rmi.Remote marker 接口的扩展。扩展标准 EJBObject






