ejb的调用机制

来源:互联网 发布:电子刊物制作软件 编辑:程序博客网 时间:2024/05/17 18:13

由于EJB的调用过程对开发者来说是透明的,以至于我们错误地认为:lookup()方法返回的对象就是bean实例。实际上,客户端与Session bean交互,它并不直接与Bean实例打交道,而是经由bean的远程或本地接口。当你调用远程或本地接口的方法时,接口使用的是存根(stub)对象。该存根实现了session bean的远程或本地接口。它负责将方法调用经过网络发送到远程EJB容器,或将请求路由到位于本地JVM内的EJB容器。存根是在部署期间使用JDK所带的java.lang.reflect.Proxy动态生成。


第一步:客户端调用远程接口的SayHello()方法(实际上调用的是存根对象的SayHello()方法,该存根实现了HelloWorld的远程接口)。

第二步:方法调用经过IIOPRuntime被转换成CORBA IIOP消息发往应用服务器。

第三步:应用服务器接收到请求消息后,交由骨架(skeleton)处理。骨架通过IIOP Runtime解析协议消息,并根据协议要求调用bean实例的SayHello()方法。所以bean实例是由骨架进行调用的

第四步:骨架(skeleton)将SayHello()方法的返回值经过IIOPRuntime转换成CORBA IIOP应答消息发回客户端。

第五步:存根对象通过IIOP Runtime将CORBAIIOP应答消息解析成返回值。