EJB体系结构

EJB应用基本方式就是容器/组件方式。容器对应于上述应用服务器,如Weblogic Server 8.1(使用见后)。由此可见,这里的组件指完成业务逻辑的软件,容器不仅是组 件运行环境,而且向组件提供的公共服务接口。前面介绍的Applet、Servlet在一定程度上就是这里所说的组件。支持它们运行的环境就是这里所说的容器。

EJB组件包括远程接口、Home接口和企业Bean(也简称Bean)。EJB包括组件和EJB部署文件。EJB模块往往指由多个EJB组件和其他类构成的的架构。

EJB体系结构如图9-3。组件的每个部分分别介绍如下。为了表示Bean组件各成分之间的内在联系,Bean名和其远程接口名、Home接口名、使用EJB的客户程序名一般都遵守EJB命名规范。

            图9-3  EJB的体系结构

1.远程接口与本地接口

每个EJB必须有对外接口,它定义了企业Bean的业务方法接口。其他程序必须通过它调用企业Bean方法。

EJB对外接口分为两类:本地接口(local interface)和远程接口(remote interface)和。

本地接口的名是EJB组件名+Local。本地接口为本机客户使用的企业Bean对象提供方便,它继承javax.ejb.EJBLocalObject。

远程接口(remote interface)服务于远程调用。通常,远程接口的名和EJB组件名相同。远程接口必须继承javax.ejb.EJBObject,此接口又是从java.rmi.Remote继承。实现了这个接口的对象都是远程对象,都可以进行远程调用。EJB远程接口实际上就像Java RMI远程接口。

RMI是EJB的一个基本部分。在EJB中,许多分布式对象用RMI作为标准的网络API.

EJB对象首先要实现EJBObject接口中定义的方法,然后需要实现用户定义的Remote接口中的方法。

EJB远程接口的具有下列一些特性:EJB远程接口继承java.rmi.Remote;EJB远程接口中的每一个方法必须接收Java RMI有效类型的参数(是持续性的、可串行化的远程对象);EJB 对象实现远程接口,但并不需要编写EJB对象,它是由EJB容器工具自动生成的。因为EJB对象必须包含处理事务的私有逻辑,以私有的方式与容器相互作用,在Bean崩溃时执行容错处理,以及其他涉及容器的操作。这就是为什么应该将EJB对象看成是容器的一部分。

2.企业Bean

企业Bean简称Bean。应用开发人员的主要工作就是实现这些类。必需注意到的是,这个类并没有实现如网络连接和远程对象的定位等功能,也没有涉及要求实现的事务处理和安全性。也就是说,这个类不与服务器中间层API打交道(见图9-3)。

Bean的命名一般规则是EJB组件名+“Bean”,如果EJB组件名叫Simple, 对应的Bean类名叫SimpleBean。

所有的Bean必需实现下面的基本的接口:

 

public interface javax.ejb.EnterpriseBean extends java.io.Serializable{}

 

实现这个接口的类表明它是一个真正的企业Bean类。该接口继承了java.io.Serializable,意味着所有的企业Bean类的对象可以序列化,并具有Serializable对象的所有属性。

EnterpriseBean接口及其子类接口与业务逻辑毫无关系,它们主要用于Bean对象生命周期的控制。它包括下列方法:

(1)ejbActivate():Bean对象激活。

(2)ejbPassivate():挂起Bean对象。

(3)ejbRemote():撤消Bean对象。

(4)setSessionContext():设置Bean对象与容器会话的上下文。

(5)ejbCreate():创建Bean对象。

3.Home接口与Home对象

Bean对象通常和它的客户端不在同一台机器上,所以客户端是不能直接初始化企业Bean对象的。另外企业Bean提供了位置透明性,客户端根本无法知道企业EJB对象具体在什么位置。客户端如何找到EJB对象呢?即如何创建EJB对象呢?为此,EJB规范了自己专门的接口。

Home对象就是用来创建EJB对象,其主要功能就是:创建、查找、删除对象。Home接口由专门的工具自动生成。

        

图9-4  Home对象和Home接口在EJB结构中的作用

Home对象如何知道EJB对象的初始化方法呢?例如,一个EJB对象要求整型参数,另一个EJB对象要求字符串类型的参数。建立Home对象之前,容器必须知道使用哪些信息来建立Home对象。这些信息是由Home接口定义的,这个接口定义了创建、删除和查找EJB对象的基本方法,当然,这个接口是由程序员定义的,而它的实现则是由工具自动生成。图9-4描述了Home对象和Home接口在EJB结构中的作用。Home接口的名按规范应该为EJB组件名+“Home”,例如:上述名为Simple的EJB组件,其Home接口名为SimpleHome。

使用命名服务接口JNDI来查询Home对象,一旦有了一个Home对象,就使用Java RMI来调用它。Home接口也是一个Java RMI远程接口,并且它遵循Java RMI规则。

4.EJB对象与远程访问

 

 

 

 

 

 

 

 

 

 

 

图9-5  EJB对象在运行结构中的作用

图9-5中的 EJB对象(EJB Object)承担了请求拦截远程对象的任务。另外,EJB对象代表企业Bean类来响应客户端调用。EJB对象在物理上是属于EJB容器的,因为不同的容器处理中间层的方法不一样,所以EJB对象包含了与容器相关的代码。但是对于开发人员而言只需要提供企业Bean类和一些接口以及描述文件,就可以在新的服务器上重新生成EJB对象,这就保证了J2EE应用程序的可移植。

每个EJB容器都有专门的工具把Bean类集成到EJB容器运行环境中,这些工具用来生成支持EJB分布运行必须的类,正如RMI、CORBA环境下的Stub和Skeleton一样。

当客户端想使用企业Bean对象时,客户端从未真正直接调用存在的企业Bean对象方法,客户请求的远程对象是EJBObject。

企业Bean不具有网络功能,通过把Bean绑定到具有网络功能的对象中,由EJB容器来处理与网络相关的事件。具有网络功能的对象接收客户端的调用,并将这些调用传递给企业Bean类所构造的对象。

通过截获客户端的请求,EJB容器能自动实现一些必要的管理,包括:事务处理,安全服务,Bean对象集以及EJB容器可能要求的其他服务。

4.EJB部署文件

EJB部署文件是EJB的一个重要部分,它是EJB的说明文件。服务器容器按照部署文件来管理EJB。EJB部署文件是标准的XML文件,它遵守 XML和相关的文档类型DTD语法规则。

EJB部署文件至少有两个,一个ejb-jar.xml文件,它描述了EJB自身的特征,如名称、组成、EJB类型等。另一个文件与选择的应用服务器有关,如weblogic-ejb-jar.xml文件,它描述了部署有关的信息。详细内容参见9.3.2介绍的示例相关部分。

5.集成打包

编写好了Bean、Home接口、Remote接口、本地接口和部署描述文件,就需要存档(打包)。图9-6描述了有关文件的存档。

           图9-6  Bean有关文件的存档(EJB组件)

 

 

你可能感兴趣的:(应用中间件(jboss))