天天看點

ejb的調用機制

由于EJB的調用過程對開發者來說是透明的,以至于我們錯誤地認為:lookup()方法傳回的對象就是bean執行個體。實際上,用戶端與Session bean互動,它并不直接與Bean執行個體打交道,而是經由bean的遠端或本地接口。當你調用遠端或本地接口的方法時,接口使用的是存根(stub)對象。該存根實作了session bean的遠端或本地接口。它負責将方法調用經過網絡發送到遠端EJB容器,或将請求路由到位于本地JVM内的EJB容器。存根是在部署期間使用JDK所帶的java.lang.reflect.Proxy動态生成。

ejb的調用機制

第一步:用戶端調用遠端接口的SayHello()方法(實際上調用的是存根對象的SayHello()方法,該存根實作了HelloWorld的遠端接口)。

第二步:方法調用經過IIOPRuntime被轉換成CORBA IIOP消息發往應用伺服器。

第三步:應用伺服器接收到請求消息後,交由骨架(skeleton)處理。骨架通過IIOP Runtime解析協定消息,并根據協定要求調用bean執行個體的SayHello()方法。是以bean執行個體是由骨架進行調用的

第四步:骨架(skeleton)将SayHello()方法的傳回值經過IIOPRuntime轉換成CORBA IIOP應答消息發回用戶端。

第五步:存根對象通過IIOP Runtime将CORBAIIOP應答消息解析成傳回值。