ejb调用原理分析

ejb调用原理分析

ID:41560508

大小:59.92 KB

页数:4页

时间:2019-08-27

ejb调用原理分析_第1页
ejb调用原理分析_第2页
ejb调用原理分析_第3页
ejb调用原理分析_第4页
资源描述:

《ejb调用原理分析》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、ejb调用原理分析一个远程对彖至少要包括4个class文件:远程对彖;远程对彖的接口;实现远程接口的对象的stub;对象的skeleton这4个class文件。在EJB中则至少要包括10个class:Bean类,特定AppServer的Bean实现类Bean的remote接口,特定AppServer的remote接口实现类,特定AppServer的remote接U1的实现类的stub类和skeleton类Bean的home接口,特定AppServer的home接口实现类,特定AppServer的ho

2、me接口的实现类的stub类和skeleton类和RMI不同的是,EJB中这10个class真正需要用户编写的只有3个,分别是Bean类和它的remote接口,home接口,至于其它的7个class到底是怎么生成,被打包在什么地方,或者是否需要更多的类文件,会根据不同的AppServer表现出比较人的差异,不能一概而论。拿我最熟悉的Weblogic的來说吧,Weblogic的Bean实现类,以及两个接口的Weblogic的实现类是在ejbc的时候被打包到EJB的jai■包里面的,这3个class文件

3、可以看到。而home接口和remote接口的Weblogic的实现类的stub类和skeleton类是在EJB被部署到Weblogic的时候,由Wcblogic动态生成stub类和Skeleton类的字节码,因此看不到这4个类文件。对于一次客户端远程调用EJB,要经过两个远程对彖的多次RMI循环。首先是通过JNDI查找Home接口,获得Home接口的实现类,这个过程其实相当复杂,首先是找到Home接口的Weblogic实现类,然后创建一•个Home接口的Weblogic实现类的stub类的对象实例,

4、将它序列化传送给客户端(注意stub类的实例是在第1次RMI循环中,由服务器动态发送给客户端的,因此不需要客户端保存Home接口的Weblogic实现类的stub类),最后客八端获得该stub类的对象实例(普通的RMI需要在客户端保存stub类,而EJB不需要,因为服务器会把stub类的对象实例发送给客户端)。客八端拿到服务器给它的Home接口的Wcblogic实现类的stub类对象实例以后,调用stub类的create方法,(在代码上就是home.create(),但是后台要做很多事情),于是经过

5、笫2次RMI循环,在服务器端,Home接口的Weblogic实现类的skeleton类收到stub类的调用信息后,由它再去调用Home接口的Weblogic实现类的create方法。在服务端,Home接口的Weblogic实现类的create方法再去调用Bean类的Weblogic实现类的ejbCreate方法,在服务端创建或者分配一个EJB实例,然后将这个EJB实例的远程接口的Weblogic实现类的stub类对彖实例序列化发送给客户端。客户端收到remote接口的Weblogic实现类的stub

6、类的对象实例,对该对象实例的方法调用(在客户端代码中实际上就是对remote接口的调用),将传送给服务器端remote接口的Weblogic实现类的skeleton类对象,而skeleton类对象再调用相应的remote接口的Weblogic实现类,然后remote接口的Weblogic实现类再去调用Bean类的Weblogic实现类,如此就完成一次EJB对象的远程调用。看了一遍帖子,感觉还是没有说太清楚,既然写了帖子,就想彻底把它说清楚。先拿普通RMI來说,有4个class,分别是远程对象,对象的

7、接口,对象的stub类和skeleton类。而对象木身和对象的stub类同时都实现了接口类。而我们在客八端代码调用远程对象的时候,虽然在代码中操纵接口,实质上是在操纵stub类,例如:接口类:Hello远程対象:Hello_Serverstub类:Hello_Stubskeleton类:Hello_Skeleton客户端代码要这样写:Helloh=newHello_Stub();h.getStringO;我们不会这些写:Hcllo_Stubh=newHcllo_Stub();h.getStringO

8、;因为使用接口适用性更广,就算更换了接口实现类,也不需要更改代码。因此客户端需要Hello.class和Hcllo_Stub.class这两个文件。但是对于EJB来说,就不需要Hello_Stub.class,因为服务器会发送给它,但是Hello.class文件客户端是省不了的,必须有。表面上我们的客户端代码在操纵Hello,但别忘记了Hello只是一个接口,抽彖的,实质上是在操纵HelloStubo拿Wcblogic上的EJB举例子,10个class分别是:Bean

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。