EJB的存根和骨架的工作原理 - 编程入门网
当然,它也implements UserService。并且,它负责调用UserServiceBean——也就是我们所写的Bean实现类——里面的business method。
那么,各个类之间的调用关系到底是怎么样的呢?简单的说,就是两次RMI循环。 EJB的存根和骨架的工作原理(6)时间:2011-04-30第一个RMI循环 先来看看Client端的程序是怎么写的: 代码:
在第一步之后,我们得到了一个UserServiceHome(interface)定义的对象home,那么,home到底是哪个class的instance呢?用debug看一下,知道了home原来就是_UserServiceHome_Stub的实例。 从第二步开始,就是我们的关注所在,虽然只有简单的一行代码,
但是他背后的系统是怎么运做的呢?我们进入代码来看吧! 1、调用home.create() 代码:
2、实际是调用_UserServiceHome_Stub.create(),在这个方法里面,Stub向Skeleton发送了一个create的字串: 代码:
EJB的存根和骨架的工作原理(7)时间:2011-04-303、Server端的Skeleton接收Stub发来的request,并调用相应的方法: 代码:
代码:
4、Skeleton调用的是UserServiceHome的Server端实现类的create方法 代码:
5、#4又调用EJSStatelessUserServiceHomeBean_a940aa04.create() 代码:
至此,我们终于结束了第一个RMI循环,并得到了Remote接口UserService的Stub类_UserService_Stub,就是#5里面的result。 这里有一个问题,为什么#4不直接create _UserService_Stub,而又转了一道#5的手呢?因为#4 extends from EJSWrapper,它没有能力create Stub,因此必须借助#5,which extends from EJSHome,这样才可以生成一个Stub。如果不是为了生成这个Stub,应该可以不走#5这一步。 EJB的存根和骨架的工作原理(8)时间:2011-04-30第二个RMI循环 OK, now we got the object which is instanceOf _UserService_Stub, and implements UserService 现在我们的Client端走到第三步了:
继续看代码,开始第二个RMI循环: 1、调用object.getUserInfo() 代码 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |