ejb 的部件
a. ejb 类:
以计算罚款处理为例,EJB类包括核心逻缉:算罚款.
所有EJB类必须实现 javax.ejb.EnterpriseBean 接口
实际上三类 ejb 实现各自的接口,比如 sessionBean 等,而 sessionBean 最终实现 EnterpriseBean 接口
b.ejb对象:
Ejb放在远程机器上,而客户在本地机器上.
客户不可以直接调用远程ejb,要通过网络
客户不希望自己控制安全,事务等
拦截器在j2ee里实现为一个EJB对象
c.两者的关系
![](/images/blog_csdn_net/accept1983/ejbObject.jpg)
d .远程接口
远程接口 ,EJB提供者写,表明
1 给用户看见多少业务方法
2 实现哪些系统方法
Public interface javax.ejb.EJBObject
{ getEJBHome,getHandle,..}
作用:
客户不直接和ejb或者ejb对象打交道
Ejb有些什么方法,只能看远程接口里写了多少方法
远程接口是ejb的对外表现形式.
远程接口里的业务方法全部可以通过网络远程调用.
e. JNDI
Ejb可以存在任何一台机器上
http://127.0.0.1/ejb名,这种形式不灵活
所以用到JNDI,要找一个ejb您必须:
1连接到JNDI服务器
2查到ejb名字,再取得引用
3把引用返回给客户
4客户创建一个ejb实例
f. home对象和home接口
Home对象负责在本地:
生成ejb实例
删除ejb实例
生成和删除和容器紧密相关,所以
Home对象由系统生成(容器)
Home接口:
Home对象用户看不见
创建ejb 实例的时候,需要参数初始化
参数通过Home接口传给容器,然后传给Home对象,然后给远程接口
Home接口用于
指明定义,生成,回收查找ejb实例
具体工作由Home对象来做
如图所示:
g.本地对象和本地接口
Ejb的调用过程本质上还是通过stub-skeleton的.
通过网络连接比较费时
本地调试时用EJBLocalHome代替EJBHome,不通过网络连接本机
牺牲了所有的分布网络特性,所以一般在调试时使用
h.部署描述
安全性,事务,数据库都交给容器了,用户不必要编码.
但必须告诉容器,处理的方式
Xml来告诉容器,称为部署描述
Bean的生命期,安全性,事务都在xml里面指定
和 web.xml 有点象. Web.xml 描述 web 应用程序,这里是 ejb-jar.xml 描述.和 web.xml 是同一级的i.ejb-jar文件
![](/images/blog_csdn_net/accept1983/deploy.jpg)