EJB的存根和骨架的工作原理 - 编程入门网
了,Client和Server不在一个JVM里。
这好办,我们不是有RMI吗?好,这个问题就这么解决了: 1. UserServiceBeanInterface.getUserInfo() 2. UserServiceBeanStub 3. UserServiceBeanSkeleton 4. UserServiceBean EJB的存根和骨架的工作原理(14)时间:2011-04-30用着用着,第二个问题来了,UserServiceBean只有人用,没人管理,transaction logic, security logic, bean instance pooling logic这些不得不考虑的问题浮出水面了。 OK,我们想到用一个delegate,EJBObject,来进行所有这些logic的管理。client和EJBObject打交道,EJBObject调用UserServiceBean。 注意,这个EJBObject也是一个Interface,#6.UserService这个interface正是从它extends而来。并且EJBObject所管理的这些logic,正是AppServer的一部分。 现在的流程变为了: EJBObject 1. UserService.getUserInfo() 2. UserServiceStub 3. UserServiceSkeleton 4. UserServiceImp 5. UserServiceBean 这已经和整幅图里的#6, #7, #8, #9, #10一一对应了。 现在能满足我们的需求了吗?不,第三个问题又来了: 既然是分布式开发,那么我当然没理由只用一个Specified Server,我可能需要用到好几个不同的Server,而且EJBObject也需要管理呀! OK,为了适应你的需要,我们还得加再一个HomeObject,首先它来决定用哪个Server(当然,是由你用JNDI String设定的),其次,它来管理EJBObject。 注意,这个EJBHome也是一个Interface,#1.UserServiceHome这个interface正是从它extends而来。并且EJBHome管理EJBObject的logic,也是AppServer的一部分。 现在的调用次序是: 1. EJBHome.create() 2. EJBHomeStub 3. EJBHomeSkeleton 4. EJBHomeImp(EJSWrapper) 5. EJSHome 得到EJBObject。 6. UserService.getUserInfo() 7. UserServiceStub 8. UserServiceSkeleton 9. UserServiceImp 10. UserServiceBean 现在已经完全和流程图的调用顺序一致了。 //EJB的基础是RMI IIOP,原理并不是很难,关键是实现起来比较绕,一个简单的功能要用10个(或更多)类来实现,但每一个都不是多余的。 //EJB的这种模式(或说RMI)完全屏蔽了底层的网络,并很好的实现了对业务代码的保护。 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |