首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

EJB读书笔记(1)

2012-10-06 
EJB读书笔记(一)EJB五个步骤Bean接口Xml部署描述文件 Ejb-jar部署?组件接口里面声明所有业务方法客户使用h

EJB读书笔记(一)


EJB五个步骤

    Bean接口Xml部署描述文件 Ejb-jar部署


?

组件接口里面声明所有业务方法

客户使用home接口来请求组件接口的一个引用

?

组件接口必须扩展EJBObject

Bean必须实现sessionBean接口,但bean不能实现组件接口

?

部署描述文件描述的是bean的结构,包括三个文件(组件接口、home接口和bean类)相互之间如何关联

部署描述文件的名字必须是“ejb-jar.xml”,而且必须放在一个名为“META-INF”的目录下



EJB体系结构

如果你是一个对象,而且你有另一个对象的引用,那个对象就必须和你在同一个堆中。

JAVARMI(远程方法调用)为客户提供一个代理对象,即桩(sub),这个代理对象相当于客户和远程对象之间的中间人,客户在桩上调用方法,桩则负责完成与远程对象的底层通信(socket和流)

利用RMI,客户对象会表现得好像在做一个远程方法调用。但实际上,它只是在一个“代理”对象上调用方法,这个代理对象在客户所在的同一个堆中运行。这个代理称为“桩”,它会处理所有底层的网络socket和流。

服务器端有这么一个“东西“(骨架skeleton),桩知道怎么和它通信,另外它也知道怎么解释来自桩的消息,并在远程对象上调用一个方法

?

不需要自己建立桩和骨架。对于普通的RMI,使用RMI编译器就可以生成桩和骨架。

远程对象和桩都实现相同的接口(远程接口),这个接口包括了客户想调用的方法。远程接口必须扩展java.rmi.Remote。而且每个方法都必须声明一个RemoteException

?

在EJB中,远程对象不是bean,它是bean的保镖—EJBObject

远程对象和桩都实现了同一个接口,即业务接口(也称为组件接口),不过没有实际的业务逻辑行为

Bean类没有实现业务接口,不过bean才有真正的业务逻辑功能

RMI接口和远程组件接口之间的主要区别在于,在EJB中,远程组件接口扩展的是javax.ejb.EJBObject而不是java.rmi.Remote。EJBObject接口扩展了Remote,所以EJBObject是一个远程接口。通过组件接口将业务方法展现给客户。

?

谁来创建EJBObject类?

由容器来建,你来声明方法,由容器实现你的组件接口。

?

我们创建:组件接口,bean类,home接口

容器创建:EJBObject类,EJBObject桩类,Home类,Home桩类

?

EJBObject类提bean类完成安全、事务等事项,而桩就像上面说的来负责完成与远程对象的底层通信

?

每个会话bean和实体bean都有一个Home,消息驱动bean没有home。Home的任务就是分发该bean组件接口的引用。


客户远程方法调用流程(假设AdviceBean是个sessionBean):

1.?AdviceBean得到部署,服务器实例化一个AdviceBean Home对象,并向JNDI注册该Home对象?

2.?客户对Home完成一个JNDI查找,这里使用前面注册的名字“Advisor“

3.?JNDI发回远程Home对象的一个桩?

4.?客户通过调用create()向Home请求组件接口的一个引用。(客户想“创建“一个bean,并得到该bean EJBObject的一个桩)

5.?现在“服务“介入,bean得到创建?

6.?建立EJBObject,它的桩返回给客户?

7.?客户在bean上调用一个业务方法?

8.?客户不想访问该类的更多bean时,可以删除他的home桩,不过即使删除了Home桩,仍然可以继续调用组件接口上的方法。?

?

?

热点排行