ejb的調用機制

由於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應答消息解析成返回值。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章