由于EJB对象可以运行在与客户不同的机器上,因此客户不能够直接实例化EJB对象。EJB推崇位置透明性,因此从这个角
度考虑客户不应该对EJB对象的位置信息进行关注。
为获得对EJB对象的引用,客户代码需要从EJB对象工厂中请求EJB对象。该工厂负责实例化EJB对象。EJB规范将这种工厂
称之为Home对象。Home对象的职责主要有:
1、创建EJB对象
2、查找现有的EJB对象
3、删除EJB对象
同EJB对象一样,Home对象专属于特定的EJB容器。Home对象含有容器特定的逻辑,如负载均衡逻辑、借助于图形化管理
控制台追踪信息等。与此同时,Home对象也是EJB容器的组成部分,通过容器提供的工具能够自动创建它。
Home对象是创建EJB对象的工厂。但是Home对象是如何实例化EJB对象的呢?为创建Home对象,EJB容器需要掌握这方面的
信息。通过指定Home接口给容器即可完成这方面信息的注入。Home接口简单的定义了用于创建、销毁和查找EJB对象的方法。
容器的Home对象实现了Home接口。
使用Home接口存在一个问题,即通过Home接口创建EJB实例速度很慢,而且,借助于远程接口调用EJB实例也是如此。当
访问EJB对象时,通常会依次触发如下内容:
1、客户调用本地存根
2、存根将参数压包成适合网络传输格式
3、存根借助于网络将参数传递给骨架
4、骨架将参数解包成适合Java的格式。
5、骨架调用EJB对象。
6、EJB对象获得所需的中间件服务,如连接池、事务、安全性和生命周期服务。
7、EJB对象调用企业Bean实例,Bean实例处理客户请求。
从EJB2.0开始,客户能够通过本地对象(而不是EJB对象)快速、高效的访问企业Bean组件。具体过程如下:
1、客户访问本地对象
2、本地对象获得所需的中间件服务
3、一旦企业Bean实例处理完客户请求,则将结果返回给本地对象,最终传回给客户。
EJB对象指请求拦截器,远程接口指供请求拦截器使用的接口,Home对象指工厂,Home接口指工厂接口。
本地接口存在的缺点:
1、只在同一进程中有效。如在同一应用服务器中存在访问银行账号实体Bean的银行出纳会话Bean,如果EJB组件代码本身依赖
于本地接口实现,则不能够通过远程访问到它。
2、通过引用(传址),而不是传值来marshal参数。
部署描述符:借助于部署描述符文件,EJB组件能够声明其依赖的中间件服务。然后,EJB容器将通过部署描述符了解到组件
待使用的中间件服务。
posted on 2009-10-29 15:56
王永庆 阅读(195)
评论(0) 编辑 收藏 所属分类:
EJB学习笔记