posts - 66,  comments - 11,  trackbacks - 0
EJB技术有赖于2种重要技术的存在:Java RMI-IIOP和JNDI.EJB客户仅仅同其暴露的单一接口进行交互。其中暴露的接口

和企业Bean本身必须遵循EJB规范。EJB规范要求企业Bean暴露若干所要求的方法,而这些暴露的方法是供EJB容器统一管理他

们使用的,无论EJB组件部署在何种EJB容器中。
    EJB2.1规范定义了3种EJB组件类型。
  会话Bean:会话Bean用于建模业务过程。即为完成某些任务而存在。
  实体Bean:实体Bean用于建模业务数据。他们是数据对象。实体Bean是用于缓存数据库信息的Java对象。
  消息驱动Bean:MDB类似于会话Bean,因为它们都是为完成某些任务而存在的。

    EJB组件是基于分布式对象构建的,远程系统能够调用分布式对象。当然,进程内的客户、进程外的客户及网络中的其他

客户都能够与分布式对象进行交互。具体过程如下:
    客户调用存根:即为客户端提供的代理对象。存根负责将网络通信屏蔽掉,这对于客户而言意义深远。存根能够使用

Socket访问网络中的其他资源,其间将调用所需的参数构建成网络要求的调用格式。
    借助于网络:存根能够实现与服务器端的骨架进行交互。骨架是为服务器端提供的代理对象。骨架负责将网络通信屏蔽

掉,这对于分布式对象而言意义深远。骨架能够处理来自Socket的访问请求。当然,骨架还能够将存根构建好的参数转换成

Java表示。
    骨架将具体的客户调用委派给合适的分布式对象实现。因此,该对象将完成具体的访问请求,并将结果返回给骨架。依

此类推,骨架将结果返回给存根,最后客户将获得分布式对象的响应结果(通过存根获得)。
    重要:存根和服务器端实现的对象都实现了同一接口(称之为远程接口)。其意味着存根克隆了分布式对象的方法签名。

调用存根中的方法的客户以为其自身直接调用了分布式对象,但实际情况是客户直接调用存根,而存根处理具体的网络访问

工作。因此,这可以称之为分布透明性。
    分布式对象是对如下几个协作对象的一种抽象:存根、骨架、实现的对象,单一的参与者不可能构成分布式对象。
    分布式对象是很诱人的,因为开发者能够基于网络构建应用。在开发大型的分布式对象应用的时候,需要借助于中间件

服务,如事务和安全性。
   
    远程对象:
    (1)、企业Bean的业务逻辑需要在Bean类中实现。EJB规范定义了企业Bean类待实现的若干接口。这些接口使得所有的企

业Bean类能够暴露同一套接口。各种企业Bean的Bean类都需要实现javax.ejb.EnterpriseBean接口。
    当然,EJB规范分别为会话Bean、实体Bean和消息驱动Bean提供了更专属的接口类型,

SessionBean,EntityBean,MessageDriverBean.
    (2)、当客户使用企业Bean类的某实例时,它并不是直接调用Bean类的方法,EJB容器将拦截客户调用,然后委派给企业

Bean实例。通过拦截客户请求,EJB容器能够自动操作隐式中间件服务。
    因此,在客户和EJB组件间,引入了间接层,即EJB容器。引入的间接层将自身封装为单一的网络使能对象,即EJB对象,

EJB对象正是请求拦截器。EJB对象是代理对象,它可以与网络、事务、安全性等进行交互。企业Bean客户调用EJB对象提供的

方法,而不是企业Bean本身。因此,EJB对象必须复制企业Bean类暴露的业务方法。但是,自动生成EJB对象的工具是怎么知

道业务方法的呢?答案是,通过企业Bean提供者提供的接口来实现,即远程接口。这个接口复制企业Bean类暴露的业务方法。

EJB容器负责管理EJB组件,通过调用EJB组件提供的回调方法,EJB容器能够同EJB组件交互。这些回调方法仅供EJB容器管理

EJB组件使用。
    EJB容器最为重要的一项工作是,提供EJB组件运行的环境。EJB容器宿主了EJB组件,从而供远程客户调用。因此,可以

认为EJB容器充当了客户和EJB组件的中间人。EJB容器负责将客户连接到EJB组件,完成事务协调工作,提供持久化能力,管

理EJB组件的声明周期及其他任务。
    EJB的远程接口还需复制企业Bean类的业务方法。一旦企业Bean客户调用业务方法,EJB对象将把调用操作委派给相应的

Bean类。
    (3)、Java RMI-IIOP和EJB对象:javax.ejb.EJBObject继承于java.rmi.Remote.任何实现了Remote接口的对象都是远程

对象,即能够从其他JVM中访问到它,这就是Java实现RMI方式。由于容器提供的EJB对象实现了EJB组件的远程接口,因此EJB

对象也间接实现了java.rmi.Remote接口。EJB对象是具有完整网络功能的RMI-IIOP对象,供其他JVM或者网络中其他物理机器

访问。实际上,EJB远程接口仅仅是RMI-IIOP远程接口,只不过它还遵循EJB规范罢了。
    远程接口还必须遵从RMI-IIOP的参数传递约定。并不是所有的内容都能够跨越JVM传递的。方法中传递的参数必须是符合

RMI-IIOP约定的有效Java类型,如Java原型、序列化对象和RMI-IIOP对象。
    总之,EJB容器需要负责权衡资源管理和管理已部署EJB组件的生命周期。
posted on 2009-10-28 15:39 王永庆 阅读(254) 评论(0)  编辑  收藏 所属分类: EJB学习笔记

只有注册用户登录后才能发表评论。


网站导航:
 
<2009年10月>
27282930123
45678910
11121314151617
18192021222324
25262728293031
1234567

常用链接

留言簿(1)

随笔分类

随笔档案

关注blogs

搜索

  •  

最新评论

阅读排行榜

评论排行榜