專利名稱:對(duì)客戶端調(diào)用遠(yuǎn)程接口訪問(wèn)ejb進(jìn)行處理的方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算機(jī)應(yīng)用領(lǐng)域,尤其涉及一種對(duì)客戶端調(diào)用遠(yuǎn)程接口訪問(wèn)EJB進(jìn)行處理的方法和裝置。
背景技術(shù):
EJB(企業(yè)Java組件)客戶端可以調(diào)用遠(yuǎn)程接口或者本地接口來(lái)訪問(wèn)EJB,EJB容器負(fù)責(zé)創(chuàng)建和管理EJB。EJB客戶端在調(diào)用遠(yuǎn)程接口和本地接口時(shí)EJB容器的處理方式不一樣。
EJB客戶端對(duì)本地接口的調(diào)用只有在EJB客戶端和EJB容器運(yùn)行在同一個(gè)JVM(Java虛擬機(jī))時(shí)才使用。在這種情況下,EJB容器處理本地調(diào)用就像處理普通的Java方法調(diào)用一樣。這種處理方式能夠有效地提升EJB容器的性能。
EJB客戶端對(duì)遠(yuǎn)程接口的調(diào)用被視為遠(yuǎn)程調(diào)用,在這種情況下,不管EJB客戶端是否與EJB在同一個(gè)JVM中,一系列的遠(yuǎn)程調(diào)用處理將被執(zhí)行,這些處理通常包括通過(guò)底層的ORB(對(duì)象請(qǐng)求代理)將本次調(diào)用路由到特定的EJB容器、對(duì)輸入?yún)?shù)和返回參數(shù)的編解碼和查找合適的伺服器來(lái)處理本次請(qǐng)求等等。如果EJB客戶端與EJB在同一個(gè)JVM中,對(duì)輸入?yún)?shù)和輸出參數(shù)的編解碼等處理不是必須的。
上述現(xiàn)有技術(shù)中的EJB客戶端在調(diào)用遠(yuǎn)程接口和本地接口時(shí)EJB容器的處理方法的缺點(diǎn)為
Web客戶端是EJB應(yīng)用的常用客戶端,并且web客戶端與EJB應(yīng)用通常處在同一個(gè)JVM中。此時(shí),web客戶端對(duì)EJB的調(diào)用仍然會(huì)被視為遠(yuǎn)程調(diào)用,EJB容器仍然要執(zhí)行一些不必要的協(xié)議相關(guān)的操作,從而導(dǎo)致web客戶端對(duì)EJB的遠(yuǎn)程調(diào)用的性能十分低。
JDK(Java開(kāi)發(fā)工具包)提供的CORBA(Common Object RequestBroker Architecture,公共對(duì)象請(qǐng)求代理架構(gòu))方案支持對(duì)同一個(gè)JVM中的EJB客戶端調(diào)用進(jìn)行優(yōu)化。該JDK CORBA實(shí)現(xiàn)使用CORBA接口來(lái)區(qū)分EJB客戶端調(diào)用是否與服務(wù)器端EJB調(diào)用處于同一JVM,當(dāng)EJB客戶端調(diào)用與服務(wù)器端EJB調(diào)用處于同一JVM時(shí),對(duì)該同一JVM中的EJB客戶端調(diào)用進(jìn)行優(yōu)化。
在實(shí)現(xiàn)本發(fā)明的過(guò)程中,發(fā)明人發(fā)現(xiàn)上述JDK提供的CORBA方案至少存在如下技術(shù)問(wèn)題當(dāng)在一個(gè)JVM中運(yùn)行了多個(gè)ORB,EJB客戶端使用了不同的ORB,并且這些不同的ORB與服務(wù)器端EJB調(diào)用處于同一個(gè)JVM之中時(shí),該方法的優(yōu)化效果將失效。在這種情形下,盡管EJB客戶端與服務(wù)端EJB調(diào)用處于同一個(gè)JVM之中,EJB客戶端對(duì)服務(wù)端EJB應(yīng)用的調(diào)用仍然會(huì)被視為遠(yuǎn)程調(diào)用,EJB容器仍然要執(zhí)行一些不必要的協(xié)議相關(guān)的操作,從而導(dǎo)致EJB客戶端對(duì)服務(wù)端EJB的遠(yuǎn)程調(diào)用的性能比較低下。
發(fā)明內(nèi)容
本發(fā)明的實(shí)施例的目的是提供一種對(duì)客戶端調(diào)用遠(yuǎn)程接口訪問(wèn)EJB進(jìn)行處理的方法和裝置,以便可以解決EJB客戶端對(duì)服務(wù)端EJB的遠(yuǎn)程調(diào)用的性能比較低下的問(wèn)題。
本發(fā)明實(shí)施例的目的是通過(guò)以下技術(shù)方案實(shí)現(xiàn)的一種對(duì)客戶端調(diào)用遠(yuǎn)程接口訪問(wèn)EJB進(jìn)行處理的方法,包括以下步驟A、當(dāng)客戶端調(diào)用遠(yuǎn)程接口對(duì)企業(yè)Java組件EJB進(jìn)行訪問(wèn)時(shí),確認(rèn)EJB服務(wù)器端的Java虛擬機(jī)JVM標(biāo)識(shí)與客戶端的JVM標(biāo)識(shí)一致;B、所述EJB使用本地調(diào)用處理對(duì)象來(lái)處理所述客戶端對(duì)所述EJB的訪問(wèn)。
一種對(duì)客戶端調(diào)用遠(yuǎn)程接口訪問(wèn)企業(yè)Java組件EJB進(jìn)行處理的方法,包括以下步驟C、當(dāng)客戶端調(diào)用遠(yuǎn)程接口對(duì)企業(yè)Java組件EJB進(jìn)行訪問(wèn)時(shí),比較EJB服務(wù)器端的JVM標(biāo)識(shí)與客戶端的JVM標(biāo)識(shí)是否一致,當(dāng)EJB服務(wù)器端的JVM標(biāo)識(shí)與客戶端的JVM標(biāo)識(shí)為一致時(shí),則轉(zhuǎn)至步驟B;否則,則轉(zhuǎn)至步驟C;D、所述企業(yè)Java組件EJB使用本地調(diào)用處理對(duì)象來(lái)處理所述客戶端對(duì)所述EJB的訪問(wèn);E、所述EJB使用遠(yuǎn)程調(diào)用處理對(duì)象來(lái)處理所述客戶端對(duì)所述EJB的訪問(wèn)。
一種對(duì)客戶端調(diào)用遠(yuǎn)程接口訪問(wèn)EJB進(jìn)行處理的裝置,包括JVM確定模塊和本地調(diào)用處理模塊;其中,所述JVM確定模塊用于確定所述EJB服務(wù)器端的JVM標(biāo)識(shí)與所述客戶端的JVM標(biāo)識(shí)一致,表示所述客戶端和所述EJB運(yùn)行于同一個(gè)JVM中;所述本地調(diào)用處理模塊用于使用本地調(diào)用處理對(duì)象來(lái)處理所述客戶端對(duì)所述EJB的訪問(wèn),所述EJB為經(jīng)所述JVM確認(rèn)模塊確認(rèn)的和所述客戶端處于同一個(gè)JVM中的EJB。
由上述本發(fā)明實(shí)施例提供的技術(shù)方案可以看出,本發(fā)明實(shí)施例通過(guò)使用本地調(diào)用處理對(duì)象來(lái)處理處于同一JVM中的客戶端使用遠(yuǎn)程接口訪問(wèn)EJB的過(guò)程,從而可以大大提高客戶端調(diào)用遠(yuǎn)程接口訪問(wèn)EJB的耗時(shí)等性能,并且不會(huì)產(chǎn)生協(xié)議相關(guān)的操作。使用本發(fā)明實(shí)施例能夠?yàn)橛脩艄?jié)約硬件成本。
圖1為本發(fā)明實(shí)施例所述方法的處理流程圖;圖2為以直接Java方法調(diào)用的方式將EJB客戶端對(duì)本地接口的調(diào)用傳遞給EJB容器的示意圖;圖3為本發(fā)明實(shí)施例所述方法的一個(gè)具體應(yīng)用實(shí)例的處理流程示意圖;圖4為本發(fā)明實(shí)施例所述的裝置的結(jié)構(gòu)示意圖。
具體實(shí)施例方式
本發(fā)明實(shí)施例提供了一種對(duì)客戶端調(diào)用遠(yuǎn)程接口訪問(wèn)EJB進(jìn)行處理的方法和裝置,使用本地調(diào)用處理對(duì)象來(lái)處理處于同一JVM中的客戶端使用遠(yuǎn)程接口訪問(wèn)EJB的過(guò)程。
下面結(jié)合附圖來(lái)詳細(xì)描述本發(fā)明實(shí)施例,本發(fā)明實(shí)施例所述方法的處理流程如圖1所示,包括如下步驟步驟1-1、EJB容器創(chuàng)建代理描述對(duì)象,并把代理描述對(duì)象綁定到命名服務(wù)上。
當(dāng)一個(gè)EJB部署完成后,EJB容器會(huì)創(chuàng)建相應(yīng)的代理描述對(duì)象,并把該代理描述對(duì)象綁定到命名服務(wù)上。代理描述對(duì)象是代理對(duì)象的包裝對(duì)象,包含EJB對(duì)象能夠提供的服務(wù)的相關(guān)信息,能夠用來(lái)幫助生成代理對(duì)象。代理對(duì)象持有用于處理所有方法調(diào)用的調(diào)用處理對(duì)象的引用。
如果一個(gè)EJB同時(shí)具有遠(yuǎn)程接口和本地接口,則EJB容器將分別創(chuàng)建兩個(gè)代理描述對(duì)象并分別綁定到相應(yīng)的命名服務(wù)上。上述兩個(gè)代理描述對(duì)象中的一個(gè)代理描述對(duì)象包含了處理遠(yuǎn)程調(diào)用的遠(yuǎn)程調(diào)用處理對(duì)象,另外一個(gè)代理描述對(duì)象包含了處理本地調(diào)用的本地調(diào)用處理對(duì)象。
上述遠(yuǎn)程調(diào)用處理對(duì)象和本地調(diào)用處理對(duì)象中包含普通對(duì)象,EJB客戶端通過(guò)該普通對(duì)象能訪問(wèn)EJB容器創(chuàng)建的已部署的EJB對(duì)象。如圖2所示,所有的EJB客戶端對(duì)本地接口的調(diào)用以直接Java方法調(diào)用的方式傳遞給EJB容器。
步驟1-2、當(dāng)EJB客戶端調(diào)用遠(yuǎn)程接口時(shí),判斷代理對(duì)象中包含的JVM標(biāo)識(shí)和客戶端的本地JVM標(biāo)識(shí)是否一致;如果是,則執(zhí)行步驟1-3;否則,執(zhí)行步驟1-4。
當(dāng)一個(gè)EJB部署完成后,系統(tǒng)要為EJB服務(wù)器端使用的JVM指定一個(gè)唯一的UUID(通用唯一標(biāo)識(shí))。該UUID是個(gè)16位的字符串,根據(jù)系統(tǒng)的網(wǎng)卡地址和時(shí)間戳采用通用唯一標(biāo)識(shí)算法生成,該算法可以為多個(gè)系統(tǒng)的JVM實(shí)例或同一個(gè)系統(tǒng)的多個(gè)JVM實(shí)例生成唯一的UUID,該UUID設(shè)置在代理對(duì)象中的調(diào)用處理對(duì)象中。
代理對(duì)象中包含一個(gè)調(diào)用處理對(duì)象,客戶端通過(guò)代理對(duì)象來(lái)使用調(diào)用處理對(duì)象。如果讓客戶端直接使用調(diào)用處理對(duì)象,客戶端就要分辨到底是遠(yuǎn)程調(diào)用處理對(duì)象還是本地調(diào)用處理對(duì)象。代理對(duì)象能夠屏蔽客戶端對(duì)遠(yuǎn)程調(diào)用處理對(duì)象或本地調(diào)用處理對(duì)象的感知。而且代理對(duì)象含有所有EJB組件的業(yè)務(wù)方法,能夠讓客戶端覺(jué)得使用EJB對(duì)象(不論是遠(yuǎn)程調(diào)用,還是本地調(diào)用)就跟使用本地對(duì)象一樣。
當(dāng)客戶端調(diào)用遠(yuǎn)程接口,通過(guò)命名服務(wù)來(lái)查找EJB時(shí),綁定在命名服務(wù)中的代理描述對(duì)象被轉(zhuǎn)換為代理對(duì)象,該代理對(duì)象將獲取調(diào)用處理對(duì)象中設(shè)置的上述JVM標(biāo)識(shí)對(duì)應(yīng)的UUID。然后,判斷該UUID和客戶端的本地JVM標(biāo)識(shí)是否一致,如果是,則執(zhí)行步驟1-3;否則,執(zhí)行步驟1-4。上述客戶端的本地JVM標(biāo)識(shí)用于標(biāo)識(shí)客戶端,即客戶端的UUID,該標(biāo)識(shí)是用UUID算法生成,由JVM標(biāo)識(shí)管理器產(chǎn)生和維護(hù)。
步驟1-3、通過(guò)本地調(diào)用處理對(duì)象處理本次客戶端對(duì)遠(yuǎn)程接口的調(diào)用。
當(dāng)上述UUID和本地JVM標(biāo)識(shí)是一致時(shí),則說(shuō)明本次客戶端對(duì)遠(yuǎn)程接口的調(diào)用發(fā)生在同一個(gè)JVM中,本發(fā)明將這種情況下的遠(yuǎn)程調(diào)用稱為遠(yuǎn)程-本地調(diào)用,于是,上述代理對(duì)象委托其包含的上述本地調(diào)用處理對(duì)象來(lái)處理本次遠(yuǎn)程-本地調(diào)用。
步驟14、通過(guò)遠(yuǎn)程調(diào)用處理對(duì)象處理本次客戶端對(duì)遠(yuǎn)程接口的調(diào)用。
當(dāng)上述UUID和本地JVM標(biāo)識(shí)不一致時(shí),則說(shuō)明本次客戶端對(duì)遠(yuǎn)程接口的調(diào)用不是發(fā)生在同一個(gè)JVM中,于是,上述代理對(duì)象委托其包含的上述遠(yuǎn)程調(diào)用處理對(duì)象來(lái)處理本次客戶端對(duì)遠(yuǎn)程接口的調(diào)用。
上述客戶端包括web客戶端,或者使用了EJB組件提供的服務(wù)的java應(yīng)用程序。
本發(fā)明實(shí)施例所述方法的一個(gè)具體應(yīng)用實(shí)例的處理流程如圖3所示,包括如下步驟31、客戶應(yīng)用程序根據(jù)指定的JNDI(Java命名和目錄接口)名稱向客戶端側(cè)的CORBA客戶端查找EJB對(duì)象。
32、CORBA客戶端向命名服務(wù)查找EJB對(duì)象。
33、命名服務(wù)將代理描述對(duì)象返回給CORBA客戶端。代理描述對(duì)象是EJB對(duì)象的描述對(duì)象,CORBA客戶端通過(guò)該代理描述對(duì)象得到服務(wù)端的JVM標(biāo)識(shí),即服務(wù)端的UUID。
34、CORBA客戶端從代理描述值工廠讀取Proxy對(duì)象,代理描述值工廠用于代理描述對(duì)象從服務(wù)端讀取相應(yīng)的代理描述值。
35、代理描述值工廠從代理描述對(duì)象中讀取EJB對(duì)象的類名。
36、代理描述對(duì)象從JVM標(biāo)識(shí)管理器對(duì)象中取得客戶端的本地JVM標(biāo)識(shí),即客戶端的UUID,該本地JVM標(biāo)識(shí)由JVM標(biāo)識(shí)管理器產(chǎn)生和維護(hù)。
37、代理描述對(duì)象檢查上述服務(wù)端的JVM標(biāo)識(shí)跟本地JVM標(biāo)識(shí)是否一致。
38、如果上述服務(wù)端的JVM標(biāo)識(shí)跟本地JVM標(biāo)識(shí)一致,代表客戶端和服務(wù)端處于同一個(gè)JVM之中,于是,EJB容器創(chuàng)建本地調(diào)用處理對(duì)象。
39、如果上述服務(wù)端的JVM標(biāo)識(shí)跟本地JVM標(biāo)識(shí)不一致,代表客戶端和服務(wù)端處于不同的JVM之中,于是,EJB容器創(chuàng)建遠(yuǎn)程調(diào)用處理對(duì)象。
310、代理描述值工廠從代理描述中取得相應(yīng)的調(diào)用處理對(duì)象。
311、代理描述值工廠創(chuàng)建代理對(duì)象,該代理對(duì)象是EJB對(duì)象的代理對(duì)象,它包含了調(diào)用處理對(duì)象。
312、代理描述值工廠將創(chuàng)建的代理對(duì)象返回給CORBA客戶端。
313、CORBA客戶端將接收到的代理對(duì)象返回給客戶應(yīng)用程序。
314、客戶應(yīng)用程序調(diào)用EJB對(duì)象提供的服務(wù)。代理對(duì)象會(huì)接管這次調(diào)用。
315、當(dāng)上述EJB容器創(chuàng)建的是遠(yuǎn)程本地調(diào)用時(shí),代理對(duì)象會(huì)委托本地調(diào)用處理對(duì)象接管這次調(diào)用。
316、上述本地調(diào)用處理對(duì)象調(diào)用EJB容器來(lái)取得結(jié)果。
317、EJB容器將調(diào)用結(jié)果返回給本地調(diào)用處理對(duì)象。
318、本地調(diào)用處理對(duì)象將調(diào)用結(jié)果返回給代理對(duì)象。
319、代理對(duì)象將調(diào)用結(jié)果返回給客戶端應(yīng)用程序。
根據(jù)上述本發(fā)明實(shí)施例所述方法的處理流程,本發(fā)明使用從服務(wù)端發(fā)送過(guò)來(lái)的UUID來(lái)區(qū)分客戶端調(diào)用是否跟服務(wù)端處在同一JVM之中,因?yàn)镴VM標(biāo)識(shí)是唯一的,不管客戶端是否使用相同的ORB或者不同的ORB,都會(huì)被視為遠(yuǎn)程-本地調(diào)用。
在遠(yuǎn)程-本地調(diào)用的情形下,JDK CORBA實(shí)現(xiàn)依賴ORB,但是本發(fā)明不依賴ORB,不使用CORBA接口;JDK CORBA實(shí)現(xiàn)需要將存根置于環(huán)境變量之中,但是本發(fā)明不需要將stubs置于環(huán)境變量之中。
JDK CORBA實(shí)現(xiàn)使用CORBA伺服器來(lái)操作EJB,伺服器將調(diào)用路由到創(chuàng)建了EJB對(duì)象的容器上。本發(fā)明直接調(diào)用容器來(lái)執(zhí)行操作。因此,相比JDK CORBA,本發(fā)明的性能更好。
本發(fā)明實(shí)施例所述對(duì)客戶端調(diào)用遠(yuǎn)程接口訪問(wèn)EJB進(jìn)行處理的裝置的結(jié)構(gòu)示意圖如圖4所示,包括如下模塊JVM確定模塊,用于確定所述EJB服務(wù)器端的JVM標(biāo)識(shí)與所述客戶端的JVM標(biāo)識(shí)一致,表示所述客戶端和所述EJB運(yùn)行于同一個(gè)JVM中,包括命名服務(wù)子模塊和代理描述對(duì)象子模塊;本地調(diào)用處理模塊,用于使用本地調(diào)用處理對(duì)象來(lái)處理所述客戶端對(duì)所述EJB的訪問(wèn),所述EJB為經(jīng)所述JVM確認(rèn)模塊確認(rèn)的和所述客戶端處于同一個(gè)JVM中的EJB。
遠(yuǎn)程調(diào)用處理模塊,用于使用遠(yuǎn)程調(diào)用處理對(duì)象來(lái)處理所述客戶端對(duì)所述EJB的訪問(wèn),所述EJB為和所述客戶端不是處于同一個(gè)JVM中的EJB。
上述JVM確定模塊中的命名服務(wù)子模塊,用于接收客戶端調(diào)用遠(yuǎn)程接口訪問(wèn)所述EJB的信號(hào),將預(yù)先創(chuàng)建的代理描述對(duì)象返回給所述客戶端;上述JVM確定模塊中的代理描述對(duì)象子模塊,用于從其內(nèi)部獲得EJB服務(wù)器端的JVM標(biāo)識(shí),從JVM標(biāo)識(shí)管理器對(duì)象中獲得所述客戶端的JVM標(biāo)識(shí),并比較所述EJB服務(wù)器端的JVM標(biāo)識(shí)和所述客戶端的JVM標(biāo)識(shí)是否一致,當(dāng)比較結(jié)果為是時(shí),通知所述本地調(diào)用處理模塊,當(dāng)比較結(jié)果為否時(shí),通知所述遠(yuǎn)程調(diào)用處理模塊。
應(yīng)用本發(fā)明實(shí)施例所述方法和裝置后,可以對(duì)EJB的遠(yuǎn)程調(diào)用進(jìn)行優(yōu)化,有效地提高EJB的遠(yuǎn)程調(diào)用的性能。應(yīng)用本發(fā)明實(shí)施例所述方法之前和之后,EJB的遠(yuǎn)程調(diào)用的一個(gè)具體應(yīng)用實(shí)例的性能對(duì)比示意表如下述表1所示
表1
在上述具體應(yīng)用實(shí)例中,如上述表1所示,本發(fā)明所述遠(yuǎn)程-本地調(diào)用的性能比現(xiàn)有的遠(yuǎn)程調(diào)用的性能提高了10倍。
以上所述,僅為本發(fā)明較佳的具體實(shí)施方式
,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到的變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)該以權(quán)利要求的保護(hù)范圍為準(zhǔn)。
權(quán)利要求
1.一種對(duì)客戶端調(diào)用遠(yuǎn)程接口訪問(wèn)企業(yè)Java組件EJB進(jìn)行處理的方法,其特征在于,包括以下步驟A、當(dāng)客戶端調(diào)用遠(yuǎn)程接口對(duì)企業(yè)Java組件EJB進(jìn)行訪問(wèn)時(shí),確定EJB服務(wù)器端的Java虛擬機(jī)JVM標(biāo)識(shí)與客戶端的JVM標(biāo)識(shí)一致;B、所述企業(yè)Java組件EJB使用本地調(diào)用處理對(duì)象來(lái)處理所述客戶端對(duì)所述EJB的訪問(wèn)。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述步驟A具體包括當(dāng)客戶端調(diào)用遠(yuǎn)程接口通過(guò)命名服務(wù)訪問(wèn)所述EJB時(shí),所述命名服務(wù)實(shí)體將代理描述對(duì)象實(shí)體返回給所述客戶端;所述代理描述對(duì)象實(shí)體從其內(nèi)部獲得EJB服務(wù)器端的JVM標(biāo)識(shí),并根據(jù)所述EJB服務(wù)器端的JVM標(biāo)識(shí),從JVM標(biāo)識(shí)管理器對(duì)象中獲得所述客戶端的JVM標(biāo)識(shí);所述代理描述對(duì)象實(shí)體確定所述EJB服務(wù)器端的JVM標(biāo)識(shí)和所述客戶端的JVM標(biāo)識(shí)一致。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述步驟A之前還包括EJB容器創(chuàng)建代理描述對(duì)象實(shí)體,并將該代理描述對(duì)象實(shí)體綁定到命名服務(wù)實(shí)體上;為所述EJB服務(wù)器端使用的Java虛擬機(jī)JVM指定通用唯一標(biāo)識(shí)UUID,并將該UUID設(shè)置在所述代理描述對(duì)象實(shí)體中。
4.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述客戶端的JVM標(biāo)識(shí)包括客戶端的通用唯一標(biāo)識(shí)UUID。
5.根據(jù)權(quán)利要求1至4任一項(xiàng)所述的方法,其特征在于,所述的步驟B具體包括確定所述客戶端調(diào)用遠(yuǎn)程接口對(duì)所述EJB的訪問(wèn)發(fā)生在同一個(gè)JVM中,所述客戶端創(chuàng)建包含本地調(diào)用處理對(duì)象的EJB組件的代理對(duì)象,當(dāng)客戶端調(diào)用所述代理對(duì)象時(shí),所述代理對(duì)象委托其包含的本地調(diào)用處理對(duì)象來(lái)處理所述客戶端對(duì)所述EJB的訪問(wèn)。
6.一種對(duì)客戶端調(diào)用遠(yuǎn)程接口訪問(wèn)企業(yè)Java組件EJB進(jìn)行處理的方法,其特征在于,包括以下步驟C、當(dāng)客戶端調(diào)用遠(yuǎn)程接口對(duì)企業(yè)Java組件EJB進(jìn)行訪問(wèn)時(shí),比較EJB服務(wù)器端的JVM標(biāo)識(shí)與客戶端的JVM標(biāo)識(shí)是否一致,當(dāng)EJB服務(wù)器端的JVM標(biāo)識(shí)與客戶端的JVM標(biāo)識(shí)為一致時(shí),則轉(zhuǎn)至步驟B;否則,則轉(zhuǎn)至步驟C;D、所述企業(yè)Java組件EJB使用本地調(diào)用處理對(duì)象來(lái)處理所述客戶端對(duì)所述EJB的訪問(wèn);E、所述EJB使用遠(yuǎn)程調(diào)用處理對(duì)象來(lái)處理所述客戶端對(duì)所述EJB的訪問(wèn)。
7.根據(jù)權(quán)利要求6所述的方法,其特征在于,所述步驟E具體包括確定所述客戶端調(diào)用遠(yuǎn)程接口對(duì)所述EJB的訪問(wèn)發(fā)生在不同JVM中,所述客戶端創(chuàng)建包含遠(yuǎn)程調(diào)用處理對(duì)象的EJB組件的代理對(duì)象,當(dāng)客戶端調(diào)用所述代理對(duì)象時(shí),所述代理對(duì)象委托其包含的遠(yuǎn)程調(diào)用處理對(duì)象來(lái)處理所述客戶端對(duì)所述EJB的訪問(wèn)。
8.一種對(duì)客戶端調(diào)用遠(yuǎn)程接口訪問(wèn)EJB進(jìn)行處理的裝置,其特征在于,包括JVM確定模塊和本地調(diào)用處理模塊;其中,所述JVM確定模塊,用于當(dāng)客戶端調(diào)用遠(yuǎn)程接口對(duì)EJB進(jìn)行訪問(wèn)時(shí),確定所述EJB服務(wù)器端的JVM標(biāo)識(shí)與所述客戶端的JVM標(biāo)識(shí)一致,表示所述EJB和所述客戶端運(yùn)行于同一個(gè)JVM中;所述本地調(diào)用處理模塊,用于使用本地調(diào)用處理對(duì)象來(lái)處理所述客戶端對(duì)所述EJB的訪問(wèn),所述EJB為經(jīng)所述JVM確認(rèn)模塊確認(rèn)的與所述客戶端處于同一個(gè)JVM中的EJB。
9.根據(jù)權(quán)利要求8所述的裝置,其特征在于,所述裝置還包括遠(yuǎn)程調(diào)用處理模塊,用于使用遠(yuǎn)程調(diào)用處理對(duì)象來(lái)處理所述客戶端對(duì)所述EJB的訪問(wèn),所述EJB為與所述客戶端不是處于同一個(gè)JVM中的EJB。
10.根據(jù)權(quán)利要求9所述的裝置,其特征在于,所述JVM確定模塊包括命名服務(wù)子模塊,用于接收客戶端調(diào)用遠(yuǎn)程接口訪問(wèn)所述EJB的信號(hào),將預(yù)先創(chuàng)建的代理描述對(duì)象返回給所述客戶端;代理描述對(duì)象子模塊,用于從其內(nèi)部獲得EJB服務(wù)器端的JVM標(biāo)識(shí),從JVM標(biāo)識(shí)管理器對(duì)象中獲得所述客戶端的JVM標(biāo)識(shí),并比較所述EJB服務(wù)器端的JVM標(biāo)識(shí)和所述客戶端的JVM標(biāo)識(shí)是否一致,當(dāng)比較結(jié)果為是時(shí),通知所述本地調(diào)用處理模塊,當(dāng)比較結(jié)果為否時(shí),通知所述遠(yuǎn)程調(diào)用處理模塊。
全文摘要
本發(fā)明提供了一種對(duì)客戶端調(diào)用遠(yuǎn)程接口訪問(wèn)EJB進(jìn)行處理的方法和裝置,該方法主要包括當(dāng)客戶端調(diào)用遠(yuǎn)程接口對(duì)EJB(企業(yè)Java組件)進(jìn)行訪問(wèn),并且所述EJB服務(wù)器端的企業(yè)Java組件JVM標(biāo)識(shí)與所述客戶端的JVM標(biāo)識(shí)一致時(shí),使用本地調(diào)用處理對(duì)象來(lái)處理所述客戶端對(duì)所述EJB的訪問(wèn)。該裝置主要包括JVM確定模塊、本地調(diào)用處理模塊。利用本發(fā)明所述方法和裝置,可以解決EJB客戶端對(duì)服務(wù)端EJB的遠(yuǎn)程調(diào)用的性能比較低下的問(wèn)題,可以提高客戶端調(diào)用遠(yuǎn)程接口訪問(wèn)EJB的耗時(shí)等性能。
文檔編號(hào)G06F9/46GK1996256SQ20061016738
公開(kāi)日2007年7月11日 申請(qǐng)日期2006年12月31日 優(yōu)先權(quán)日2006年12月31日
發(fā)明者蘇葩娜, 墨迪 申請(qǐng)人:華為技術(shù)有限公司