亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

遠程服務調(diào)用方法及系統(tǒng)的制作方法

文檔序號:7908947閱讀:190來源:國知局
專利名稱:遠程服務調(diào)用方法及系統(tǒng)的制作方法
技術領域
本發(fā)明涉及網(wǎng)絡及計算機技術領域,更具體的說,涉及遠程服務調(diào)用方法及系統(tǒng)。
背景技術
OSGi (Open Services Gateway initiative)框架提供了一個本地服務注冊中心使得框架中安裝的bundles可以通過服務進行交互,這些服務由一個bundle注冊,被另一個bundle獲取。在這種情況下只有部署在同一個OSGi框架中的bundles之間可以通過服務進行交互。但現(xiàn)實的情況是,需要的服務可能是由第三方提供,并且發(fā)布服務的Bundle是部署在遠程端,根據(jù)現(xiàn)有的方式,無法滿足遠程服務訪問。

發(fā)明內(nèi)容
有鑒于此,本發(fā)明實施例提供了遠程服務調(diào)用方法及系統(tǒng),以實現(xiàn)遠程服務訪問。為實現(xiàn)上述目的,本發(fā)明提供如下技術方案一種遠程服務調(diào)用方法,用于采用OSGI框架的虛擬機上,所述方法包括預先將服務注冊為遠程服務;接收用戶提交的服務名;采用服務發(fā)現(xiàn)機制搜索遠程服務;當查詢到其他虛擬機提供與所述服務名匹配的遠程服務時,建立連接,并進行遠程服務調(diào)用。一種遠程服務調(diào)用系統(tǒng),應用于采用OSGI框架的虛擬機上,所述系統(tǒng)包括注冊單元和遠程服務調(diào)用平臺,其中所述注冊單元,用于預先將服務注冊為遠程服務;所述遠程服務調(diào)用平臺用于,接收用戶提交的服務名,采用服務發(fā)現(xiàn)機制搜索遠程服務,當查詢到其他虛擬機提供與所述服務名匹配的遠程服務時,建立連接,并進行遠程服務調(diào)用。經(jīng)由上述的技術方案可知,在將服務必須注冊成遠程服務后,遠程服務可采用服務發(fā)現(xiàn)機制查詢到,進行建立連接,進行遠程服務調(diào)用,從而實現(xiàn)了遠程服務。


為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術中的技術方案,下面將對實施例或現(xiàn)有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的實施例,對于本領域普通技術人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)提供的附圖獲得其他的附圖。圖1為本發(fā)明實施例提供的遠程服務調(diào)用方法流程圖;圖2為本發(fā)明實施例提供的遠程服務調(diào)用方法實現(xiàn)原理示意圖3為本發(fā)明實施例提供的遠程服務調(diào)用方法另一流程圖;圖4為本發(fā)明實施例提供的事件監(jiān)聽過程示意圖;圖5為本發(fā)明實施例提供的R-OSGi的整體流程圖;圖6為本發(fā)明實施例提供的遠程服務調(diào)用方法又一流程圖。
具體實施例方式為了引用和清楚起見,下文中使用的技術名詞的說明、簡寫或縮寫總結如下OSGI =Open Services Gateway initiative,開放服務網(wǎng)關發(fā)起者;TCP =Transmission Control Protocol,傳輸控制協(xié)議;SLP =Service Location Protocol,服務定位協(xié)議;URI =Uniform Resource Identifier,資源標識符。URI是用于標識某一互聯(lián)網(wǎng)資源名稱的字符串。該種標識允許用戶對網(wǎng)絡中(一般指萬維網(wǎng))的資源通過特定的協(xié)議進行交互操作;URL =Uniform Resource Locator,統(tǒng)一資源定位符。也被稱為網(wǎng)頁地址,是因特網(wǎng)上標準的資源的地址。URL是URI的一個下種。URI確定一個資源,而URL不但確定一個資源,而且還表示出它在哪里。下面將結合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例。基于本發(fā)明中的實施例,本領域普通技術人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。OSGI是一個開放并且提供統(tǒng)一接口標準的插件體系框架,基于這個體系框架,服務提供商、程序開發(fā)人員、軟件提供商、服務網(wǎng)管運營商和設備提供商能夠協(xié)調(diào)地聯(lián)合起來開發(fā)、部署以及管理向用戶提供的各種服務。OSGI服務平臺是一個基于Java的平臺,OSGI 的提出和誕生之初,其目的主要是能夠靈活方便并遠程管理互聯(lián)的網(wǎng)絡嵌入設備。大部分的路由器都支持模塊的熱插拔,這就意味著可以在路由器運行的狀況下, 動態(tài)的增加或卻載具有某種功能的功能模塊,硬件界的這種熱插拔技術一直就是軟件界所追求的,而OSGI則使得熱插拔技術在軟件界成為現(xiàn)實。OSGI為動態(tài)擴充、修改系統(tǒng)功能和改變系統(tǒng)行為提供了支撐,在OSGI服務平臺上可以部署許多OSGI的組件(Bundle)。OSGI有一整套完整的機制去實現(xiàn)動態(tài)改變系統(tǒng)行為, 基于OSGI的系統(tǒng)運行時就可通過安裝新的Bundle、更新或停止現(xiàn)有的Bundle來實現(xiàn)系統(tǒng)功能的插拔??刹灏巍⒖蓜討B(tài)改變行為從根本上保證了系統(tǒng)在運行期足夠的靈活性和擴展性。在OSGI中所有模塊的部署都必須以Bundle的方式進行,Bundle是一 jar文件, 該jar文件和普通的jar文件的不同之處在于Meta_inf目錄下的MArTIFEST. MF文件的內(nèi)容,關于Bundle的所有信息都在MANIFEST. MF中進行描述,可以稱它為bundle的元數(shù)據(jù),這些信息中包含有例如Bundle的名稱、描述、開發(fā)商、路徑(classpath),需要導入的包 (Package)以及輸出的包(Package)等。OSGi框架提供了一個本地服務注冊中心,使得框架中安裝的bundle可以通過服務進行交互,這些服務由一個bundle注冊,被另一個bundle獲取。在這種情況下只有部署
5在同一個OSGi框架中的bundles之間可以通過服務進行交互。但現(xiàn)實的情況是,需要的服務可能是由第三方提供,并且發(fā)布服務的Bundle是部署在遠程端,根據(jù)現(xiàn)有的方式,無法滿足遠程服務訪問。有鑒于此,本發(fā)明實施例提供一種遠程服務調(diào)用方法來解決上述問題,此種方法可應用于采用OSGI框架的虛擬機上。參見圖1,該方法至少包括如下步驟Si、預先將服務注冊為遠程服務;S2、接收用戶提交的服務名;S3、采用服務發(fā)現(xiàn)機制(SLP)搜索遠程服務;S4、當查詢到與所述服務名匹配的遠程服務時,建立連接,并進行遠程服務調(diào)用。可見,在將服務必須注冊成遠程服務后,遠程服務可采用服務發(fā)現(xiàn)機制查詢到,進行建立連接,進行遠程服務調(diào)用,從而實現(xiàn)了遠程服務。可將上述方法稱為R-0SGI,其中R指的是Remote-service。在本發(fā)明中,上述方法可使用R-OSGI bundle (也可視為R-OSGI方面)加以實現(xiàn), R-OSGI相當于分布式提供者。需要注意的是,本發(fā)明將提供服務的一端稱為服務端,將調(diào)用服務的一端稱為客戶端。服務端與客戶端只是相對概念,對于虛擬機A和B來說,如果虛擬機A發(fā)布天氣預報服務,而虛擬機B調(diào)用天氣預報服務,針對天氣預報這一服務,虛擬機A是虛擬機B的服務端,而虛擬機B是虛擬機A的客戶端;如果虛擬機A發(fā)布某一服務,而虛擬機B調(diào)用虛擬機A 發(fā)布該服務,那么同時,相對于該服務,虛擬機B是虛擬機A的服務端,而虛擬機A是虛擬機 B的客戶端。另外,虛擬機A某一 bundle發(fā)布的服務,還可被虛擬機A自身的另一 bundle 調(diào)用,此時,客戶端和服務端在同一端。參見圖2,R-OSGI的實現(xiàn)原理為各虛擬機中部署的OSGi框架為bundle通過服務對象的通信提供了一個本地服務注冊,使得OSGi框架中安裝的bundles可以通過服務進行交互,這些服務由一個bundle注冊,被另一個bundle獲取。在圖2中,服務提供者(Service Producer)相當于服務端,服務消費者(Service Consumer)相當于客戶端,分布式提供者(Distribution Provider)根據(jù)服務提供者的聲明式服務文件發(fā)布/創(chuàng)建遠程服務,分布式提供者還能創(chuàng)建一個proxy (代理),這個代理與服務端交互數(shù)據(jù),最終完成遠程服務的調(diào)用。當然,從客戶端來看,可把客戶端和服務端分別視為一個終端(endpoint)的話, 分布式提供者為兩個終端提供服務交互,從而令每一虛擬機可獨立導入和導出服務。另外, 在現(xiàn)有技術中,只可在一個OSGI框架(一個虛擬機上部署一個OSGI框架)中調(diào)用服務,而本實施例的方法可令某一虛擬機調(diào)用其他虛擬機所提供的服務,可實現(xiàn)多框架之間的服務交互,使服務由集中式變?yōu)榉植际?。在具體實現(xiàn)時,可在各個虛擬機上部署遠程服務調(diào)用平臺來實現(xiàn)本發(fā)明的遠程服務調(diào)用。為區(qū)分起見,將服務消費者側的虛擬機稱為客戶端虛擬機,在客戶端虛擬機上部署的遠程服務調(diào)用平臺可稱為第一遠程服務調(diào)用平臺,而將服務端側的虛擬機上部署的遠程服務調(diào)用平臺稱為第二遠程服務調(diào)用平臺。則參見圖3:上述步驟S2的具體實現(xiàn)方式包括
S21、第一遠程服務調(diào)用平臺接收用戶提交的服務名;步驟S21是通過服務發(fā)現(xiàn)監(jiān)聽的方式來接收服務名,執(zhí)行remote service的連
接,其代碼如下
context.registerService(ServiceDiscoveryListener.class.getName(), new ServiceDiscoveryListenerQ {
public void announceService(String servicelnterface, URI uri) {
try { remote. connect(uri) ; }。上述步驟S3的具體實現(xiàn)方式包括S31、第一遠程服務調(diào)用平臺采用服務發(fā)現(xiàn)機制搜索遠程服務,從而發(fā)現(xiàn)與上述服務名匹配的遠程服務,獲取到發(fā)布該遠程服務的虛擬機的具體地址;S32、第一遠程服務調(diào)用平臺建立與第二遠程服務調(diào)用平臺的TCP連接;可通過在OSGI框架中部署服務發(fā)現(xiàn)Bundle來執(zhí)行步驟S3。而上述步驟S4具體實現(xiàn)方式包括S41、所述第一遠程服務調(diào)用平臺生成代理Bundle ;S42、上述代理Bundle將針對上述服務名的服務方法調(diào)用重定向到發(fā)布上述遠程服務的虛擬機,并且傳送方法回調(diào)的結果至到客戶端虛擬機。下面將對上述方法進行細節(jié)描述。一,服務注冊服務端在本地OSGi框架中創(chuàng)建服務Bundle發(fā)布服務,為該服務分配唯一的服務標識和身份標識,并將這個服務注冊成遠程服務,上述服務標識可用于實現(xiàn)服務的定位及管理。另外,對提供遠程服務的Bundle分配管理標識,該標識表示此Bundle接受服務端 (也即本地的)R-OSGI平臺的管理。將服務注冊成遠程服務的具體實現(xiàn)方式是在注冊服務屬性時添加指定的屬性。如下properties. put(RemoteOSGiService. R_0SGi_REGISTRATI0N,Boolean. TRUE);將這個服務屬性添加到本地服務注冊中心就將這個服務注冊成遠程服務。比如注冊registration =context.registerService (SurrogateRegistration. class, getName (),this, properties);對服務端沒有侵入性。隨后,服務端的OSGi框架使用服務跟蹤來跟蹤上述遠程服務。在服務端的OSGi框架的RemoteOSGKervicelmpl中使用了服務跟蹤,并創(chuàng)建了 ServiceTrackerCustomizer 進行相應的操作??梢岳斫鉃槭褂梅崭欉^濾器來跟蹤上述服務標識。服務跟蹤過濾器的功能可由兩種方式實現(xiàn),其代碼分別為a) :context. createFilterC (0(" +Constants. OBJECTCLASS+“=“+EventHandler. class. getName () + " )(1 (〃+R_0SGi_INTERNAL+〃 =*)))〃 )b) :context. createFilterC (〃 +· R_0SGi_REGISTRATI0N+〃 = *) 〃 )另外還有跟蹤了服務發(fā)現(xiàn)和服務監(jiān)聽,這樣,當注冊成遠程服務時候,就對其進行相應的處理(例如截獲符合上述兩種過濾字符形式的服務,將其注冊成遠程服務,進入 ROSGi 的方面),進入 RemoteServiceRegistration。需要說明是的,由于任一虛擬機都可能需要調(diào)用其他虛擬機上的服務,因此,上述注冊遠程服務并不僅局限于服務端,而是所有虛擬機都可以預先進行遠程服務注冊。二,服務發(fā)現(xiàn)協(xié)議SLP本發(fā)明采用SLP來自動搜索匹配遠程服務,查詢到匹配的遠程服務后,自動建立連接,完成遠程服務的調(diào)用。SLP中的基本操作是客戶機試圖發(fā)現(xiàn)服務的位置。在小型系統(tǒng)中,每個服務被配置為獨立響應每個客戶機;而在大型系統(tǒng)中,每個服務都會在一個甚至更多的目錄代理中進行登記,客戶機連接目錄代理完成服務定位請求。這與URL規(guī)范類似,并且它充分利用了 URL技術方案SLP對于本發(fā)明的R-OSGi有幾個強制的特征它的適應性,固有的分布式查詢過程,以及與OSGi在服務命名的相似性。本發(fā)明利用了 SLP的多播功能,向多個非本地R-OSGI進行廣播,通過這一技術實現(xiàn),R-OSGi實現(xiàn)一個分布式SLP層。在命名方面,無論是OSGi和SLP都由一個字符串標識服務。在OSGi中,可使用接口的的完全限定名稱作為其相應服務的身份標識。在SLP中,使用提供服務的虛擬機的 URL作為所搜尋到的服務的標識,形如service :serviceType ://URL。這里的服務類型是 abstractType :concreteType0本發(fā)明將SLP搜索到的URL與該服務的身份標識建立雙向映射關系。三、事件監(jiān)聽 OSGI的事件監(jiān)聽過程如圖4所示事件發(fā)布者使用Event Admin服務發(fā)送基于主題(Topic)的事件,任何對某一主題感興趣的事件訂閱者都會收到該事件,并且做出相應的反應。其中事件發(fā)布可用于獲得實現(xiàn)了 org. osgi. service, event. EventAdmin 接口的 Event Admin 月艮務弓|用。擬定事件的主題。指定事件所攜帶的key/value屬性集。本發(fā)明中使用Event Admin提供的postEvent或者sendEvent方法發(fā)布事件。其中,postEvent使用同步的方式發(fā)布事件,即等到所有的事件訂閱者響應該事件,方法調(diào)用返回,而sendEvent使用異步的方式發(fā)布事件。而事件訂閱可用于確定你想要訂閱那些主題事件,支持通配符。如果需要,根據(jù)事件的屬性確定事件的過濾原則。發(fā)布實現(xiàn)了 org. osgi. service, event. EventHandler 接口的你的事件訂閱服務, 以便當你感興趣的事件發(fā)生后,Event Admin能通知到你。在R-OSGi中,也是按照上述的事件的發(fā)布和訂閱,提供了專門的事件消息用于遠程的傳輸。
圖5為R-OSGi的整體流程。其中分割線左右分別為兩個Java虛擬機A和B,JVM-A 為客戶端側,JVM-B為服務端側。客戶端和服務端分別部署在兩個OSGi框架中??蛻舳送ㄟ^krviceDiscoveryListener來連接URI,自動發(fā)現(xiàn)局域網(wǎng)中發(fā)布的遠程服務。當然服務端的服務必須發(fā)布成遠程服務才能通過客戶端的服務發(fā)現(xiàn)Bundle查詢到。查詢到后,JVM-A的遠程服務調(diào)用平臺與JVM-B的遠程服務調(diào)用平臺建立TCP連接。然后開始構建代理bundle。代理bundle生成后自動部署到客戶端所在的OSGi框架中。生成的bundle是通過ASM庫(ASM庫提供類文件與字節(jié)流的轉換)來分析需要的服務,并添加需要的導入導出包。生成的代理Bundle中,將對每一個要執(zhí)行的接口方法以回調(diào)的方式和遠端的真實實現(xiàn)方法建立通信。產(chǎn)生的返回值通過通信返回,以完成一個方法的調(diào)用的過程。方法的真正的執(zhí)行過程還是在服務端。在本發(fā)明其他實施例中,參見圖6,上述方法的具體實現(xiàn)包括S601、在本地OSGi框架中創(chuàng)建服務Bundle發(fā)布服務,為該服務分配唯一的服務標識(Service PID),并將這個服務注冊成遠程服務,對提供遠程服務的Bundle分配管理標識,以便R-OSGI平臺對該Bundle進行管理對提供遠程服務的Bundle分配管理標識,以便 R-OSGI平臺對該Bundle進行管理;S602、第一遠程服務調(diào)用平臺接收用戶提交的服務名;S603、第一遠程服務調(diào)用平臺采用服務發(fā)現(xiàn)機制向其他遠程服務調(diào)用平臺發(fā)送具有上述服務名的消息;S604、其他遠程服務調(diào)用平臺根據(jù)所管理的Bundle對應的krvice PID來確認本地Bundle是否提供與上述服務名相對應的遠程服務,并在確認提供后,返回所屬虛擬機的 URL與上述遠程服務的身份標識之間的雙向映射關系(上述身份標識符合R-OSGi中SLP定義的服務的標識的要求);此時,上述遠程服務的虛擬機中的遠程服務調(diào)用平臺即為上文提及的第二遠程服務調(diào)用平臺。具體的,可根據(jù)krvic PID獲取服務對應的服務名,當該服務名與第一遠程服務平臺接收的服務名相匹配時,認為可提供與之匹配的遠程服務。S605、第一遠程服務調(diào)用平臺根據(jù)上述URL與第二遠程服務調(diào)用平臺建立TCP連接,以便兩臺虛擬機進行數(shù)據(jù)交互。S606、第一遠程服務調(diào)用平臺生成代理Bundle ;S607、上述代理Bimdle通過上述URL將針對上述服務名的服務方法調(diào)用重定向到發(fā)布上述遠程服務的虛擬機,并根據(jù)上述身份標識調(diào)用與之對應的接口執(zhí)行接口方法,并且將執(zhí)行所述接口方法產(chǎn)生的返回值傳送至客戶端虛擬機。與之相對應,本發(fā)明還提供了一種遠程服務調(diào)用系統(tǒng),上述系統(tǒng)可包括注冊單元和遠程服務調(diào)用平臺,其中注冊單元,用于預先將服務注冊為遠程服務;而遠程服務調(diào)用平臺用于,接收用戶提交的服務名,采用服務發(fā)現(xiàn)機制搜索遠程服務,當查詢到其他虛擬機提供與所述服務名匹配的遠程服務時,建立連接,并進行遠程服務調(diào)用。在本發(fā)明其他實施例中,上述遠程服務調(diào)用平臺可包括接收單元,用于接收用戶提交的服務名
服務發(fā)現(xiàn)單元,用于采用服務發(fā)現(xiàn)機制搜索與遠程服務;建立連接單元,用于其他發(fā)布與所述服務名匹配的遠程服務的虛擬機建立TCP連接;代理生成單元,用于生成代理,所述代理將針對所述服務名的服務方法調(diào)用重定向到發(fā)布所述與所述服務名匹配的遠程服務的虛擬機,并且傳送方法回調(diào)的結果至到客戶端虛擬機。其中,上述將服務注冊為遠程服務的具體實現(xiàn)方式包括使用服務跟蹤來創(chuàng)建遠程服務,并為所述遠程服務分配服務標識和身份標識,對提供所述遠程服務的的Bundle分配管理標識,所述管理標識表示所述Bundle接受本地虛擬機的遠程服務平臺的管理。上述采用服務發(fā)現(xiàn)機制搜索遠程服務的具體實現(xiàn)包括采用服務發(fā)現(xiàn)機制向其他遠程服務調(diào)用平臺發(fā)送具有上述服務名的消息,以便其他遠程服務平臺根據(jù)所管理的Bundle對應的服務標識,來確認所管理的Bundle是否提供與所述服務名相對應的遠程服務,并在確認提供后,返回所屬虛擬機的URL與所述遠程服務的身份標識之間的雙向映射關系;上述建立TCP連接的具體實現(xiàn)包括根據(jù)所述URL建立與其他發(fā)布與所述服務名匹配的遠程服務的虛擬機TCP連接。上述代理將針對所述服務名的服務方法調(diào)用重定向到發(fā)布與所述服務名匹配的遠程服務的虛擬機,并且傳送方法回調(diào)的結果至到客戶端虛擬機的具體實現(xiàn)包括所述代理通過上述URL將針對所述服務名的服務方法調(diào)用重定向到發(fā)布所述遠程服務的虛擬機,并根據(jù)所述雙向映射關系中的身份標識,調(diào)用與之對應的接口執(zhí)行接口方法,并將執(zhí)行所述接口方法產(chǎn)生的返回值傳送至客戶端虛擬機。由于任一虛擬機都可能作為客戶端或服務端,因此,上述遠程服務調(diào)用平臺還可包括確認單元,用于根據(jù)所管理的Bundle對應的服務標識,來確認所管理的Bundle是否提供與客戶端提供的服務名相對應的遠程服務,并在確認提供后,返回所屬虛擬機的URL與所述遠程服務的身份標識之間的雙向映射關系。本說明書中各個實施例采用遞進的方式描述,每個實施例重點說明的都是與其他實施例的不同之處,各個實施例之間相同相似部分互相參見即可。對于實施例公開的裝置而言,由于其與實施例公開的方法相對應,所以描述的比較簡單,相關之處參見方法部分說明即可。結合本文中所公開的實施例描述的方法或算法的步驟可以直接用硬件、處理器執(zhí)行的軟件模塊,或者二者的結合來實施。軟件模塊可以置于隨機存儲器(RAM)、內(nèi)存、只讀存儲器(ROM)、電可編程ROM、電可擦除可編程ROM、寄存器、硬盤、可移動磁盤、CD-ROM、或技術領域內(nèi)所公知的任意其它形式的存儲介質中。對所公開的實施例的上述說明,使本領域專業(yè)技術人員能夠實現(xiàn)或使用本發(fā)明。 對這些實施例的多種修改對本領域的專業(yè)技術人員來說將是顯而易見的,本文中所定義的一般原理可以在不脫離本發(fā)明的精神或范圍的情況下,在其它實施例中實現(xiàn)。因此,本發(fā)明將不會被限制于本文所示的這些實施例,而是要符合與本文所公開的原理和新穎特點相一致的最寬的范圍。
權利要求
1.一種遠程服務調(diào)用方法,其特征在于,應用于采用OSGI框架的虛擬機上,所述方法包括預先將服務注冊為遠程服務; 接收用戶提交的服務名; 采用服務發(fā)現(xiàn)機制搜索遠程服務;當查詢到其他虛擬機提供與所述服務名匹配的遠程服務時,建立連接,并進行遠程服務調(diào)用。
2.如權利要求1所述的方法,其特征在于, 接收用戶提交的服務名的具體實現(xiàn)包括客戶端虛擬機中的第一遠程服務調(diào)用平臺接收用戶提交的服務名; 所述采用服務發(fā)現(xiàn)機制搜索遠程服務的具體實現(xiàn)包括 所述第一遠程服務調(diào)用平臺采用服務發(fā)現(xiàn)機制搜索遠程服務; 所述建立連接的具體實現(xiàn)包括所述第一遠程服務調(diào)用平臺建立與第二遠程服務調(diào)用平臺的TCP連接,所述第二遠程服務調(diào)用平臺部署于發(fā)布與所述服務名匹配的遠程服務的虛擬機中; 所述進行遠程服務調(diào)用的具體實現(xiàn)包括 所述第一遠程服務調(diào)用平臺生成代理;所述代理將針對所述服務名的服務方法調(diào)用重定向到發(fā)布所述與所述服務名匹配的遠程服務的虛擬機,并且傳送方法回調(diào)的結果至到客戶端虛擬機。
3.如權利要求2所述的方法,其特征在于,所述將服務注冊為遠程服務的具體實現(xiàn)方式包括使用服務跟蹤來創(chuàng)建遠程服務,并為所述遠程服務分配服務標識和身份標識,對提供所述遠程服務的Bundle分配管理標識,所述管理標識表示所述Bundle接受本地虛擬機的遠程服務平臺的管理。
4.如權利要求3所述的方法,其特征在于,所述第一遠程服務調(diào)用平臺采用服務發(fā)現(xiàn)機制搜索遠程服務的具體實現(xiàn)包括 采用服務發(fā)現(xiàn)機制向其他遠程服務調(diào)用平臺發(fā)送具有上述服務名的消息,以便其他遠程服務平臺根據(jù)所管理的Bundle對應的服務標識,來確認所管理的Bundle是否提供與所述服務名相對應的遠程服務,并在確認提供后,返回所屬虛擬機的URL與所述遠程服務的身份標識之間的雙向映射關系;所述第一遠程服務調(diào)用平臺建立與第二遠程服務調(diào)用平臺的TCP連接的具體實現(xiàn)包括所述第一遠程服務調(diào)用平臺根據(jù)所述URL與所述第二遠程服務調(diào)用平臺建立TCP連接。
5.如權利要求4所述的方法,其特征在于,所述代理將針對所述服務名的服務方法調(diào)用重定向到發(fā)布所述與所述服務名匹配的遠程服務的虛擬機,并且傳送方法回調(diào)的結果至到客戶端虛擬機的具體實現(xiàn)包括所述代理通過所述URL將針對所述服務名的服務方法調(diào)用重定向到發(fā)布所述遠程服務的虛擬機,并根據(jù)所述雙向映射關系中的身份標識調(diào)用與之對應的接口執(zhí)行接口方法,并且將執(zhí)行所述接口方法產(chǎn)生的返回值傳送至客戶端虛擬機。
6.一種遠程服務調(diào)用系統(tǒng),其特征在于,應用于采用OSGI框架的虛擬機上,所述系統(tǒng)包括注冊單元和遠程服務調(diào)用平臺,其中所述注冊單元,用于預先將服務注冊為遠程服務;所述遠程服務調(diào)用平臺用于,接收用戶提交的服務名,采用服務發(fā)現(xiàn)機制搜索遠程服務,當查詢到其他虛擬機提供與所述服務名匹配的遠程服務時,建立連接,并進行遠程服務調(diào)用。
7.如權利要求6所述的系統(tǒng),其特征在于,所述遠程服務調(diào)用平臺包括接收單元,用于接收用戶提交的服務名服務發(fā)現(xiàn)單元,用于采用服務發(fā)現(xiàn)機制搜索與遠程服務;建立連接單元,用于其他發(fā)布與所述服務名匹配的遠程服務的虛擬機建立TCP連接;代理生成單元,用于生成代理,所述代理將針對所述服務名的服務方法調(diào)用重定向到發(fā)布所述與所述服務名匹配的遠程服務的虛擬機,并且傳送方法回調(diào)的結果至到客戶端虛擬機。
8.如權利要求7所述的系統(tǒng),其特征在于,所述將服務注冊為遠程服務的具體實現(xiàn)方式包括使用服務跟蹤來創(chuàng)建遠程服務,并為所述遠程服務分配服務標識和身份標識,對提供所述遠程服務的的Bundle分配管理標識,所述管理標識表示所述Bundle接受本地虛擬機的遠程服務平臺的管理。
9.如權利要求8所述的系統(tǒng),其特征在于,所述采用服務發(fā)現(xiàn)機制搜索遠程服務的具體實現(xiàn)包括采用服務發(fā)現(xiàn)機制向其他遠程服務調(diào)用平臺發(fā)送具有上述服務名的消息,以便其他遠程服務平臺根據(jù)所管理的Bundle對應的服務標識,來確認所管理的Bundle是否提供與所述服務名相對應的遠程服務,并在確認提供后,返回所屬虛擬機的URL與所述遠程服務的身份標識之間的雙向映射關系;所述建立TCP連接的具體實現(xiàn)包括根據(jù)所述URL與其他發(fā)布與所述服務名匹配的遠程服務的虛擬機建立TCP連接。
10.如權利要求9所述的系統(tǒng),其特征在于,所述代理將針對所述服務名的服務方法調(diào)用重定向到發(fā)布與所述服務名匹配的遠程服務的虛擬機,并且傳送方法回調(diào)的結果至到客戶端虛擬機的具體實現(xiàn)包括所述代理通過所述URL將針對所述服務名的服務方法調(diào)用重定向到發(fā)布所述遠程服務的虛擬機,并根據(jù)所述雙向映射關系中的身份標識,調(diào)用與之對應的接口執(zhí)行接口方法, 并將執(zhí)行所述接口方法產(chǎn)生的返回值傳送至客戶端虛擬機。
全文摘要
本發(fā)明實施例提供了一種遠程服務調(diào)用方法及系統(tǒng),以實現(xiàn)遠程服務訪問。上述方法可用于采用OSGI框架的虛擬機上,包括預先將服務注冊為遠程服務;接收用戶提交的服務名;采用服務發(fā)現(xiàn)機制搜索遠程服務;當查詢到其他虛擬機提供與所述服務名匹配的遠程服務時,建立連接,并進行遠程服務調(diào)用??芍趯⒎毡仨氉猿蛇h程服務后,遠程服務可采用服務發(fā)現(xiàn)機制查詢到,進行建立連接,進行遠程服務調(diào)用,從而實現(xiàn)了遠程服務。
文檔編號H04L29/08GK102325186SQ20111027173
公開日2012年1月18日 申請日期2011年9月14日 優(yōu)先權日2011年9月14日
發(fā)明者劉民, 劉耀, 王恩彬 申請人:山東中創(chuàng)軟件商用中間件股份有限公司, 山東中創(chuàng)軟件工程股份有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1