專利名稱:一種適用于java遠(yuǎn)程調(diào)用對象傳輸?shù)膬?yōu)化方法、裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及遠(yuǎn)程調(diào)用領(lǐng)域,尤其涉及一種適用于JAVA遠(yuǎn)程調(diào)用對象傳輸?shù)膬?yōu)化方法、裝置。
背景技術(shù):
在JAVA 語言中,RMI (Remote Method Invocation,遠(yuǎn)程方法調(diào)用)是 Java 在 JDK (Java Development kit 是 Sun Microsystems 針對 Java 開發(fā)員的產(chǎn)品)1· 1 中實現(xiàn)的,它大大增強(qiáng)了 Java開發(fā)分布式應(yīng)用的能力。而RMI就是開發(fā)百分之百純Java的網(wǎng)絡(luò)分布式應(yīng)用系統(tǒng)的核心解決方案之一。其實它可以被看作是RPC的Java版本。但是傳統(tǒng) RPC(Remote Procedure Call Protocol遠(yuǎn)程過程調(diào)用協(xié)議)并不能很好地應(yīng)用于分布式對象系統(tǒng)。而Java RMI則支持存儲于不同地址空間的程序級對象之間彼此進(jìn)行通信,實現(xiàn)遠(yuǎn)程對象之間的無縫遠(yuǎn)程調(diào)用。通常在JAVA程序中實現(xiàn)RMI傳輸需要程序?qū)ο髮崿F(xiàn)一種序列化接口,即java. io. Serializable接口,實現(xiàn)該接口后,程序?qū)ο缶湍鼙籎AVA虛擬機(jī)作出正確的處理,沒有實現(xiàn)該接口的,在RMI傳輸這些程序?qū)ο髸r,JAVA虛擬機(jī)會拋出對應(yīng)的異常。而java. io. Externalizable接口,作為上述接口的擴(kuò)展,能夠讓程序員進(jìn)行定制程序?qū)ο蟮男蛄谢ǔ崿F(xiàn)該接口的序列化對象,能夠提供更好的網(wǎng)絡(luò)吞吐量和性能,但是該接口需要人工參與編寫序列化和反序列化的方法實現(xiàn)邏輯。因此,目前需要一種能夠自動識別需要RMI傳輸?shù)膶ο?,將對象動態(tài)的實現(xiàn)java. io. Externalizable接口,從而提高傳輸對象在網(wǎng)絡(luò)傳輸中的性能。
發(fā)明內(nèi)容
本發(fā)明實施例的目的在于提出一種適用于JAVA遠(yuǎn)程調(diào)用對象傳輸?shù)膬?yōu)化方法, 所述的方法包括識別需要在RMI傳輸?shù)某绦驅(qū)ο?,攔截所述的程序?qū)ο?;在所述的程序?qū)ο笾袆?chuàng)建寫入和讀取序列化流的方法,并存儲所述程序?qū)ο?。其中,所述的“識別需要在RMI傳輸?shù)某绦驅(qū)ο蟆本唧w為通過加載XML描述文件中的曾澤模糊匹配來判斷識別所述的程序?qū)ο?;或通過JDK中的注解方式來確定所述的程序?qū)ο?。其中,所述的“在所述的程序?qū)ο笾袆?chuàng)建寫入和讀取序列化流的方法,并存儲所述程序?qū)ο蟆本唧w為修改所述的程序?qū)ο?,實現(xiàn)第一接口 ;創(chuàng)建寫入序列化流方法,將所述的程序?qū)ο笮枰獋鬏數(shù)膶傩约尤氲絼?chuàng)建的寫入序列化流的方法中,并將所述的寫入序列化流保存在所述的程序?qū)ο笾校粍?chuàng)建讀取序列化流方法,根據(jù)所述的程序?qū)ο笮枰獋鬏數(shù)膶傩孕薷乃龅某绦驅(qū)ο螅?br>
保存所述的程序?qū)ο?。其中,所述的“?chuàng)建寫入序列化流方法,將程序?qū)ο笮枰獋鬏數(shù)膶傩约尤氲絼?chuàng)建的寫入序列化流的方法中“具體為創(chuàng)建寫入序列化流方法;獲取程序?qū)ο笮枰獋鬏數(shù)膶傩?;判斷所述的屬性的?shù)據(jù)類型;若是基本數(shù)據(jù)類型或者封裝,則使用對應(yīng)的寫入方法寫入到所述的寫入序列化流中;若是自定義類型,則通過寫入對象(Object)方法將所述自定義類型寫入到所述的寫入序列化流中;并將所述的寫入序列化流寫入所述的程序?qū)ο?。其中,所述的“?chuàng)建讀取序列化流,根據(jù)程序?qū)ο笮枰獋鬏數(shù)膶傩孕薷乃龅某绦驅(qū)ο蟆本唧w為 創(chuàng)建讀取序列化流方法;獲取程序?qū)ο笮枰獋鬏數(shù)膶傩?;判斷所述的屬性的?shù)據(jù)類型;若是基本數(shù)據(jù)類型或者封裝,則使用對應(yīng)的讀取方法寫入到所述的程序?qū)ο笾校蝗羰亲远x類型,則通過讀取對象(Object)方法將所述自定義類型的數(shù)據(jù)從讀取序列化流中讀出,構(gòu)建成自定義對象,加入到所述的程序?qū)ο笾?。本發(fā)明還提供一種適用于JAVA的遠(yuǎn)程調(diào)用對象傳輸?shù)膬?yōu)化裝置,所屬的裝置包括第一識別單元,用于識別需要在RMI傳輸?shù)某绦驅(qū)ο?;攔截單元,用于攔截所述的程序?qū)ο?;修改單元,用于在所述的程序?qū)ο笾袆?chuàng)建寫入和讀取序列化流的方法,并存儲所述程序?qū)ο?。其中,其特征在于,所述的第一識別單元包括第二識別單元,用于通過加載XML描述文件中的正則模糊匹配來判斷識別所述的程序?qū)ο螅换虻谌R別單元,用于通過JDK中的注解方式來確定所述的程序?qū)ο?。其中,所述的修改單元包括接口單元用于修改所述的程序?qū)ο?,實現(xiàn)第一接口 ;第一創(chuàng)建單元,用于根據(jù)所述第一接口創(chuàng)建寫入序列化流方法,將所述程序?qū)ο笮枰獋鬏數(shù)膶傩约尤氲絼?chuàng)建的寫入序列化流的方法中,并將所述的寫入序列化流保存在所述的程序?qū)ο笾校坏诙?chuàng)建單元,用于根據(jù)所述第一接口創(chuàng)建讀取序列化流方法,根據(jù)所述程序?qū)ο笮枰獋鬏數(shù)膶傩孕薷乃龅某绦驅(qū)ο?;存儲單元,用于保存所述的程序?qū)ο蟆F渲?,所述的第一?chuàng)建單元,包括第三創(chuàng)建單元,用于根據(jù)所述第一接口創(chuàng)建寫入序列化流方法;第一獲取單元,用于獲取程序?qū)ο笮枰獋鬏數(shù)膶傩裕?br>
第一處理單元,用于判斷所述的屬性的數(shù)據(jù)類型;若是基本數(shù)據(jù)類型或者封裝,則使用對應(yīng)的寫入方法寫入到所述的寫入序列化流中;若是自定義類型,則通過寫入對象方法將所述自定義類型寫入到所述的寫入序列化流中;并將所述的寫入序列化流寫入所述的程序?qū)ο蟆F渲?,所述的第二?chuàng)建單元,包括第四創(chuàng)建單元,用于根據(jù)所述第一接口創(chuàng)建讀取序列化流方法;第二獲取單元,用于獲取程序?qū)ο笮枰獋鬏數(shù)膶傩?;第二處理單元,用于判斷所述的屬性的?shù)據(jù)類型;若是基本數(shù)據(jù)類型或者封裝,則使用對應(yīng)的讀取方法寫入到所述的程序?qū)ο笾?;若是自定義類型,則通過讀取對象方法將所述自定義類型的數(shù)據(jù)從讀取序列化流中讀出,構(gòu)建成自定義對象,加入到所述的程序?qū)ο笾?。綜上所述,本發(fā)明主要使用一種非侵入式的方法,對RMI的傳輸對象進(jìn)行優(yōu)化處理,動態(tài)的創(chuàng)建讀取和寫入序列化流的方法,從而使得程序本身不需要做出任何編碼或者修改原有業(yè)務(wù)邏輯,僅通過配置即可提高傳輸對象在網(wǎng)絡(luò)傳輸中的性能。
圖1是本發(fā)明實施例1的方法流程圖;圖2是本發(fā)明實施例1中普通的RMI服務(wù)的工作機(jī)制示意圖;圖3是本發(fā)明實施例1中實現(xiàn)代理時通過Spring環(huán)境進(jìn)行的示意圖;圖4是本發(fā)明實施例1中步驟103的細(xì)化流程圖;圖5是本發(fā)明實施例1中步驟1032的細(xì)化流程圖;圖6是本發(fā)明實施例1中步驟1033的細(xì)化流程圖;圖7是本發(fā)明實施例2適用于JAVA的遠(yuǎn)程調(diào)用對象傳輸?shù)膬?yōu)化裝置結(jié)構(gòu)示意圖;圖8是本發(fā)明實施例2中第一創(chuàng)建單元的結(jié)構(gòu)示意圖;圖9是本發(fā)明實施例2中第二創(chuàng)建單元的結(jié)構(gòu)示意圖。
具體實施例方式為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點更加清楚明白,以下結(jié)合附圖和實施例,對本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說明,為了便于說明,僅示出了與本發(fā)明實施例相關(guān)的部分。應(yīng)當(dāng)理解,此處所描寫的具體實施例,僅僅用于解釋本發(fā)明,并不用以限制本發(fā)明。本發(fā)明提供一種適用于JAVA的遠(yuǎn)程方法調(diào)用對象傳輸?shù)膬?yōu)化方法、裝置。該方法與裝置主要是自動識別需要的RMI傳輸?shù)膶ο?,將對象動態(tài)的實現(xiàn)java. io. Externalizable接口,從而提高對象在網(wǎng)絡(luò)傳輸中的性能。實施例1,參見圖1,本發(fā)明提供一種用于JAVA的遠(yuǎn)程方法調(diào)用對象傳輸?shù)膬?yōu)化方法。該方法包括步驟101 識別需要在RMI傳輸?shù)某绦驅(qū)ο?;該步驟中,識別所述的需要在RMI傳輸?shù)某绦驅(qū)ο罂梢酝ㄟ^2種方法第一種通過加載XML描述文件來判斷識別,例如,有一個完整名稱是foo. bar. h e 11 ο. j a ν a,的程序?qū)ο螅赬ML文件中可以通過正則模糊匹配,也能夠精確匹配,如〈package name =,,foo. bar.氺,,> 〈package name =,,foo. bar. hello,,>,當(dāng)禾呈·啟時把這些規(guī)則加到程序判斷中;第二種通過JDK中的注解方式(Annotation)來表明所述程序?qū)ο笫切枰獌?yōu)化傳輸?shù)?,程序片段如下ORMIOptimize--注解描述public class Hello {private String name ;}從上述代碼片段可以看出,所述程序?qū)ο鬅o需實現(xiàn)序列化接口,當(dāng)系統(tǒng)使用所述程序?qū)ο髸r通過JDK API來判斷這個class有沒有定義過RMIOptimize這個注解,如果有則認(rèn)為所述的程序?qū)ο笮枰獌?yōu)化傳輸,反之則不需要。步驟102 攔截需要在RMI服務(wù)中傳輸?shù)乃龅某绦驅(qū)ο?;JAVA JfRi^srP, BI^W Spring JfiJItg^ (http //www. springframework. org) 能夠攔截到指定的類(方法),且相對成熟,通常現(xiàn)有應(yīng)用大部分都會使用此種框架來開發(fā)。如圖2,是普通的RMI服務(wù)的工作機(jī)制通過JAVA應(yīng)用程序1提供的RMI服務(wù),向 JAVA應(yīng)用程序2中的RMI調(diào)用提供服務(wù),此時沒有經(jīng)過任何的代理,直接面向底層API,不能通過配置的方式實現(xiàn)優(yōu)化,必須人工編碼實現(xiàn)。為了實現(xiàn)代理的方式,還有一種是通過Spring環(huán)境下,如圖3所示通過JAVA應(yīng)用程序1中Spring RMI (RMI開源框架)服務(wù)提供者對外提供的RMI 服務(wù),供JAVA應(yīng)用程序2中的SpringRMI委托類調(diào)用。通過上圖可以看到,RMI客戶端在調(diào)用時,其實是經(jīng)過了 Spring RMI委托類進(jìn)行中轉(zhuǎn)處理的,此時SpringRMI委托處插入RMI對象優(yōu)化器(詳見步驟103)后,可以達(dá)到本發(fā)明的優(yōu)化目的。步驟103 修改需要RMI傳輸?shù)乃龅某绦驅(qū)ο?,即在所述的程序?qū)ο髣?chuàng)建寫入和讀取序列化流的方法,并存儲所述的程序?qū)ο?。參見圖4,步驟103包括步驟1031 修改程序?qū)ο?,實現(xiàn)第一接口 (Java. io. Externalizable接口 );例如修改程序?qū)ο?,可以通過使用開源CGLIB包,通過這個CGLIB包能夠修改已經(jīng)編譯的class 文件,可以在程序運行期修改類。步驟1032 增加writeExternaK寫入序列化流)方法(這個過程也可以通過 CGLIB包來實現(xiàn));創(chuàng)建寫入序列化流方法,將程序?qū)ο笮枰獋鬏數(shù)膶傩约尤氲絼?chuàng)建的寫入序列化流的方法中,并將所述的寫入序列化流保存在所述的程序?qū)ο笾?;步驟1033 創(chuàng)建讀取序列化流方法,根據(jù)所述的程序?qū)ο笮枰獋鬏數(shù)膶傩孕薷乃龅某绦驅(qū)ο?;步驟1034 保存所述的程序?qū)ο?。其中,參見圖5,在上述步驟1032中,其具體實現(xiàn)過程可以為步驟IO32I 創(chuàng)建writeExternal (寫入序列化流);該步驟中可以通過CGLIB來創(chuàng)建寫入序列化流的方法;步驟10322 獲取程序?qū)ο笮枰獋鬏數(shù)膶傩裕?br>
獲得所述屬性的方法可以是通過JAVA API取得程序?qū)ο笮枰獋鬏數(shù)膶傩?(Field);獲得所述的傳輸屬性后,可以按一定的順序組合成隊列。如步驟101中代碼中的 name就是屬性(如果該屬性無需序列化傳遞到遠(yuǎn)端服務(wù)器,可以通過注解或者xml定義的過濾屬性排除掉。步驟10323 判斷所述的屬性的數(shù)據(jù)類型;若是基本數(shù)據(jù)類型或者封裝則執(zhí)行步驟10324 ;若是自定義類型則執(zhí)行步驟10325 ;步驟10324 使用對應(yīng)的寫入方法寫入到所述的寫入序列化流中;此步驟中所述的對應(yīng)的寫入方法為本領(lǐng)域技術(shù)人員的公知技術(shù),在此不再累述;步驟10325 是自定義類型,則通過writeObject (寫入目標(biāo))方法將所述自定義類型數(shù)據(jù)寫入到所述的寫入序列化流中;將所述的寫入序列化流寫入所述的程序?qū)ο?。該步驟中所述的writeOb ject (寫入目標(biāo))方法為本領(lǐng)域技術(shù)人員的公知技術(shù),在此不再累述;其中,參見圖6,在上述步驟1033中,其具體實現(xiàn)過程可以為步驟10331 創(chuàng)建readExternal (讀取序列化流);步驟10332 獲取程序?qū)ο笮枰獋鬏數(shù)膶傩?;該步驟同步驟10322的方法相同,在此不再累述;步驟10333 判斷所述的屬性的數(shù)據(jù)類型;若是基本數(shù)據(jù)類型或者封裝則執(zhí)行步驟10334 ;若是自定義類型則執(zhí)行步驟10335 ;步驟10334 是基本數(shù)據(jù)類型或者封裝,則使用對應(yīng)的read (讀取)方法寫入到所述的程序?qū)ο笾校?如int類型就是read int);該步驟中所述對應(yīng)的read(讀取)方法為本領(lǐng)域技術(shù)人員公知技術(shù),在此不再累述;步驟10335 是自定義類型,則通過readObject (讀取目標(biāo))方法將所述自定義類型的數(shù)據(jù)從讀取序列化流中讀出,構(gòu)建成自定義對象,加入到所述的程序?qū)ο笾?;該步驟中所述的readObject (讀取目標(biāo))方法為本領(lǐng)域技術(shù)人員的公知技術(shù),在此不再累述。實施例2,參見圖7,本發(fā)明還提供一種適用于JAVA遠(yuǎn)程調(diào)用對象傳輸?shù)膬?yōu)化裝置,所屬的裝置包括第一識別單元,用于識別需要在RMI傳輸?shù)某绦驅(qū)ο螅粩r截單元,用于攔截所述的程序?qū)ο?;修改單元,用于在所述的程序?qū)ο笾袆?chuàng)建寫入和讀取序列化流的方法,并存儲所述程序?qū)ο?。其中,所述的第一識別單元包括第二識別單元,用于通過加載XML描述文件中的正則模糊匹配來判斷識別所述的程序?qū)ο?;或第三識別單元,用于通過JDK中的注解方式來確定所述的程序?qū)ο?。其中,所述的修改單元包括接口單元用于修改所述的程序?qū)ο?,實現(xiàn)第一接口 ;
第一創(chuàng)建單元,用于創(chuàng)建寫入序列化流方法,將所述的程序?qū)ο笮枰獋鬏數(shù)膶傩约尤氲絼?chuàng)建的寫入序列化流的方法中,并將所述的寫入序列化流保存在所述的程序?qū)ο笾校坏诙?chuàng)建單元,用于創(chuàng)建讀取序列化流方法,根據(jù)所述程序?qū)ο笮枰獋鬏數(shù)膶傩孕薷乃龅某绦驅(qū)ο?;存儲單元,用于保存所述的程序?qū)ο?。其中,參見圖8,所述的第一創(chuàng)建單元,包括第三創(chuàng)建單元,用于根據(jù)所述第一接口創(chuàng)建寫入序列化流方法;第一獲取單元,用于獲取程序?qū)ο笮枰獋鬏數(shù)膶傩?;第一處理單元,用于判斷所述的屬性的?shù)據(jù)類型;若是基本數(shù)據(jù)類型或者封裝, 則使用對應(yīng)的寫入方法寫入到所述的寫入序列化流中;若是自定義類型,則通過寫入對象 (Object)方法將所述自定義類型寫入到所述的寫入序列化流中;并將所述的寫入序列化流寫入所述的程序?qū)ο?。其中,參見圖9,所述的第二創(chuàng)建單元,包括第四創(chuàng)建單元,用于根據(jù)所述第一接口創(chuàng)建讀取序列化流方法;第二獲取單元,用于獲取程序?qū)ο笮枰獋鬏數(shù)膶傩?;第二處理單元,用于判斷所述的屬性的?shù)據(jù)類型;若是基本數(shù)據(jù)類型或者封裝, 則使用對應(yīng)的讀取方法寫入到所述的程序?qū)ο笾校蝗羰亲远x類型,則通過讀取對象 (Object)方法將所述自定義類型的數(shù)據(jù)從讀取序列化流中讀出,構(gòu)建成自定義對象,加入到所述的程序?qū)ο笾小>C上所述,本發(fā)明主要使用一種非侵入式的方法,對RMI的傳輸對象進(jìn)行優(yōu)化處理,動態(tài)的創(chuàng)建讀取和寫入序列化流的方法,從而使得程序本身不需要做出任何編碼或者修改原有業(yè)務(wù)邏輯,僅通過配置即可提高傳輸對象在網(wǎng)絡(luò)傳輸中的性能。本領(lǐng)域的普通技術(shù)人員可以理解,實現(xiàn)上述實施例方法中的全部或部分步驟是可以通過程序指令相關(guān)硬件來完成的,所述的程序可以存儲于一計算機(jī)可讀取存儲介質(zhì)中, 所述的存儲介質(zhì)可以為ROM、RAM、磁盤、光盤等。以上所述僅為本發(fā)明的較佳實施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種適用于JAVA遠(yuǎn)程調(diào)用對象傳輸?shù)膬?yōu)化方法,其特征在于,所述的方法包括 識別需要在RMI傳輸?shù)某绦驅(qū)ο?,攔截所述的程序?qū)ο?;在所述的程序?qū)ο笾袆?chuàng)建寫入和讀取序列化流的方法,并存儲所述程序?qū)ο蟆?br>
2.根據(jù)權(quán)利要求1所述的適用于JAVA遠(yuǎn)程調(diào)用對象傳輸?shù)膬?yōu)化方法,所述的“識別需要在RMI傳輸?shù)某绦驅(qū)ο蟆本唧w為通過加載XML描述文件中的曾澤模糊匹配來判斷識別所述的程序?qū)ο螅?或通過JDK中的注解方式來確定所述的程序?qū)ο蟆?br>
3.根據(jù)權(quán)利要求1所述的適用于JAVA遠(yuǎn)程調(diào)用對象傳輸?shù)膬?yōu)化方法,所述的“在所述的程序?qū)ο笾袆?chuàng)建寫入和讀取序列化流的方法,并存儲所述程序?qū)ο蟆本唧w為修改所述的程序?qū)ο?,實現(xiàn)第一接口 ;創(chuàng)建寫入序列化流方法,將所述的程序?qū)ο笮枰獋鬏數(shù)膶傩约尤氲絼?chuàng)建的寫入序列化流的方法中,并將所述的寫入序列化流保存在所述的程序?qū)ο笾?;?chuàng)建讀取序列化流方法,根據(jù)所述的程序?qū)ο笮枰獋鬏數(shù)膶傩孕薷乃龅某绦驅(qū)ο螅?保存所述的程序?qū)ο蟆?br>
4.根據(jù)權(quán)利要求3所述的適用于JAVA遠(yuǎn)程調(diào)用對象傳輸?shù)膬?yōu)化方法,所述的“創(chuàng)建寫入序列化流方法,將程序?qū)ο笮枰獋鬏數(shù)膶傩约尤氲絼?chuàng)建的寫入序列化流的方法中“具體為創(chuàng)建寫入序列化流方法; 獲取程序?qū)ο笮枰獋鬏數(shù)膶傩?;判斷所述的屬性的?shù)據(jù)類型;若是基本數(shù)據(jù)類型或者封裝,則使用對應(yīng)的寫入方法寫入到所述的寫入序列化流中;若是自定義類型,則通過寫入對象(Object)方法將所述自定義類型寫入到所述的寫入序列化流中;并將所述的寫入序列化流寫入所述的程序?qū)ο蟆?br>
5.根據(jù)權(quán)利要求3所述的適用于JAVA遠(yuǎn)程調(diào)用對象傳輸?shù)膬?yōu)化方法,所述的“創(chuàng)建讀取序列化流,根據(jù)程序?qū)ο笮枰獋鬏數(shù)膶傩孕薷乃龅某绦驅(qū)ο蟆本唧w為創(chuàng)建讀取序列化流方法; 獲取程序?qū)ο笮枰獋鬏數(shù)膶傩裕?判斷所述的屬性的數(shù)據(jù)類型;若是基本數(shù)據(jù)類型或者封裝,則使用對應(yīng)的讀取方法寫入到所述的程序?qū)ο笾校?若是自定義類型,則通過讀取對象(Object)方法將所述自定義類型的數(shù)據(jù)從讀取序列化流中讀出,構(gòu)建成自定義對象,加入到所述的程序?qū)ο笾小?br>
6.一種適用于JAVA遠(yuǎn)程調(diào)用對象傳輸?shù)膬?yōu)化裝置,其特征在于,所屬的裝置包括 第一識別單元,用于識別需要在RMI傳輸?shù)某绦驅(qū)ο?;攔截單元,用于攔截所述的程序?qū)ο?;修改單元,用于在所述的程序?qū)ο笾袆?chuàng)建寫入和讀取序列化流的方法,并存儲所述程序?qū)ο蟆?br>
7.根據(jù)權(quán)利要求6所述的適用于JAVA遠(yuǎn)程調(diào)用對象傳輸?shù)膬?yōu)化裝置,其特征在于,所述的第一識別單元包括第二識別單元,用于通過加載XML描述文件中的正則模糊匹配來判斷識別所述的程序?qū)ο?;或第三識別單元,用于通過JDK中的注解方式來確定所述的程序?qū)ο蟆?br>
8.根據(jù)權(quán)利要求6所述的用于JAVA遠(yuǎn)程調(diào)用對象傳輸?shù)膬?yōu)化裝置,其特征在于,所述的修改單元包括接口單元用于修改所述的程序?qū)ο?,實現(xiàn)第一接口 ;第一創(chuàng)建單元,用于根據(jù)所述第一接口創(chuàng)建寫入序列化流方法,將所述程序?qū)ο笮枰獋鬏數(shù)膶傩约尤氲絼?chuàng)建的寫入序列化流的方法中,并將所述的寫入序列化流保存在所述的程序?qū)ο笾?;第二?chuàng)建單元,用于根據(jù)所述第一接口創(chuàng)建讀取序列化流方法,根據(jù)所述程序?qū)ο笮枰獋鬏數(shù)膶傩孕薷乃龅某绦驅(qū)ο?;存儲單元,用于保存所述的程序?qū)ο蟆?br>
9.根據(jù)權(quán)利要求8所述的用于JAVA遠(yuǎn)程調(diào)用對象傳輸?shù)膬?yōu)化裝置,其特征在于,所述的第一創(chuàng)建單元,包括第三創(chuàng)建單元,用于根據(jù)所述第一接口創(chuàng)建寫入序列化流方法;第一獲取單元,用于獲取程序?qū)ο笮枰獋鬏數(shù)膶傩裕坏谝惶幚韱卧?,用于判斷所述的屬性的?shù)據(jù)類型;若是基本數(shù)據(jù)類型或者封裝,則使用對應(yīng)的寫入方法寫入到所述的寫入序列化流中;若是自定義類型,則通過寫入對象方法將所述自定義類型寫入到所述的寫入序列化流中;并將所述的寫入序列化流寫入所述的程序?qū)ο蟆?br>
10.根據(jù)權(quán)利要求8或9所述的用于JAVA遠(yuǎn)程調(diào)用對象傳輸?shù)膬?yōu)化裝置,其特征在于, 所述的第二創(chuàng)建單元,包括第四創(chuàng)建單元,用于根據(jù)所述第一接口創(chuàng)建讀取序列化流方法;第二獲取單元,用于獲取程序?qū)ο笮枰獋鬏數(shù)膶傩?;第二處理單元,用于判斷所述的屬性的?shù)據(jù)類型;若是基本數(shù)據(jù)類型或者封裝,則使用對應(yīng)的讀取方法寫入到所述的程序?qū)ο笾?;若是自定義類型,則通過讀取對象方法將所述自定義類型的數(shù)據(jù)從讀取序列化流中讀出,構(gòu)建成自定義對象,加入到所述的程序?qū)ο笾小?br>
全文摘要
本發(fā)明公布一種適用JAVA遠(yuǎn)程調(diào)用對象傳輸?shù)膬?yōu)化方法,所述的方法包括識別需要在RMI傳輸?shù)某绦驅(qū)ο?,攔截所述的程序?qū)ο螅辉谒龅某绦驅(qū)ο笾袆?chuàng)建寫入和讀取序列化流的方法,并存儲所述程序?qū)ο?。本發(fā)明還公布一種適用于JAVA遠(yuǎn)程調(diào)用對象傳輸?shù)膬?yōu)化裝置,所屬的裝置包括第一識別單元、攔截單元、修改單元。該方法及裝置使用非侵入式的方法,對RMI的傳輸對象進(jìn)行優(yōu)化處理,動態(tài)的創(chuàng)建讀取和寫入序列化流的方法,從而使得程序本身不需要做出任何編碼或者修改原有業(yè)務(wù)邏輯,僅通過配置即可提高傳輸對象在網(wǎng)絡(luò)傳輸中的性能。
文檔編號G06F9/46GK102495757SQ20111036093
公開日2012年6月13日 申請日期2011年11月15日 優(yōu)先權(quán)日2011年11月15日
發(fā)明者阮航 申請人:深圳市融創(chuàng)天下科技股份有限公司