专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »Java教程 » javaejb:深入掌握Java技术EJB调用原理分析一 »正文

javaejb:深入掌握Java技术EJB调用原理分析一

来源: 发布时间:星期四, 2009年1月8日 浏览:31次 评论:0
  个远程对象至少要包括4个文件:远程对象;远程对象接口;实现远程接口对象stub;对象skeleton这4个文件

  在EJB中则至少要包括10个:

  Bean类特定App ServerBean实现类Beanremote接口特定App Serverremote接口实现类特定App Serverremote接口实现类stub类和skeleton类

  Beanhome接口特定App Serverhome接口实现类特定App Serverhome接口实现类stub类和skeleton类和RMI区别EJB中这10个真正需要用户编写只有3个分别是Bean类和它remote接口home接口至于其它7个到底是如何生成被打包在什么地方或者是否需要更多类文件会根据区别App Server表现出比较大差异不能概而论

  拿我最熟悉Weblogic来说吧WeblogicBean实现类以及两个接口Weblogic实现类是在ejbc时候被打包到EJBjar包里面这3个文件可以看到而home接口和remote接口Weblogic实现类stub类和skeleton类是在EJB被部署到Weblogic时候由Weblogic动态生成stub类和Skeleton类字节码因此看不到这4个类文件

  对于次客户端远程EJB要经过两个远程对象多次RMI循环首先是通过JNDI查找Home接口获得Home接口实现类这个过程其实相当复杂

  首先是找到Home接口Weblogic实现类然后创建个Home接口Weblogic实现类stub类对象例子将它序列化传送给客户端(注意stub类例子是在第1次RMI循环中由服务器动态发送给客户端因此不需要客户端保存Home接口Weblogic实现类stub类)最后客户端获得该stub类对象例子(普通RMI需要在客户端保存stub类而EJB不需要服务器会把stub类对象例子发送给客户端)

  客户端拿到服务器给它Home接口Weblogic实现类stub类对象例子以后stub类create思路方法(在代码上就是home.create但是后台要做很多事情),于是经过第2次RMI循环在服务器端Home接口Weblogic实现类skeleton类收到stub类信息后由它再去Home接口Weblogic实现类create思路方法

  在服务端Home接口Weblogic实现类create思路方法再去Bean类Weblogic实现类ejbCreate思路方法在服务端创建或者分配个EJB例子然后将这个EJB例子远程接口Weblogic实现类stub类对象例子序列化发送给客户端

  客户端收到remote接口Weblogic实现类stub类对象例子对该对象例子思路方法(在客户端代码中实际上就是对remote接口)将传送给服务器端remote接口Weblogic实现类skeleton类对象而skeleton类对象再相应remote接口Weblogic实现类然后remote接口Weblogic实现类再去Bean类Weblogic实现类如此就完成次EJB对象远程

  看了遍帖子感觉还是没有说太清楚既然写了帖子就想彻底把它说清楚

  先拿普通RMI来说有4个分别是远程对象对象接口对象stub类和skeleton类而对象本身和对象stub类同时都实现了接口类而我们在客户端代码远程对象时候虽然在代码中操纵接口实质上是在操纵stub类例如:

  接口类:Hello

  远程对象:Hello_Server

  stub类:Hello_Stub

  skeleton类:Hello_Skeleton

  客户端代码要这样写:

  Hello h = Hello_Stub;

  h.getString;

  我们不会这样写:

  Hello_Stub h = Hello_Stub;

  h.getString;

  使用接口适用性更广就算更换了接口实现类也不需要更改代码因此客户端需要Hello.和Hello_Stub.这两个文件

  但是对于EJB来说就不需要Hello_Stub.服务器会发送给它但是Hello.文件客户端是省不了必须有表面上我们客户端代码在操纵Hello但别忘记了Hello只是个接口抽象实质上是在操纵Hello_Stub

  拿Weblogic上EJB举例子10个分别是:

  Bean类:HelloBean (用户编写)

  Bean类Weblogic实现类:HelloBean_Impl (EJBC生成)

  Home接口:HelloHome (用户编写)

  Home接口Weblogic实现类 ((Hello Bean))_HomeImpl(EJBC生成)

0

相关文章

读者评论

发表评论

  • 昵称:
  • 内容: