專利名稱:一種服務交互方法及系統(tǒng)的制作方法
技術領域:
本申請涉及網(wǎng)絡及計算機領域,特別是涉及一種不同OSGi框架中服務交互的方 法及系統(tǒng)。
背景技術:
OSGi框架提供了一個本地服務注冊中心使得框架中安裝的bundles可以通過服 務進行交互,這些服務由一個bundle注冊,被另一個bundle獲取。在這種情況下只有部 署在同一個OSGi框架中的bundles之間可以通過服務進行交互,部署在不同OSGi框架中 的bundles之間沒有辦法進行交互,因此需要一種方法或產(chǎn)品來實現(xiàn)不同OSGi框架中的 bundles之間的交互。
發(fā)明內(nèi)容
為解決上述技術問題,本申請實施例提供一種服務交互方法及系統(tǒng),有效的實現(xiàn) 了不同OSGi框架中的bundles之間的交互。技術方案如下一種服務交互方法、包括服務端將服務端OSGi框架中注冊的OSGi服務發(fā)布為Web Service ;客戶端獲取所述服務端發(fā)布的Web Service,調(diào)用Web Service接口,生成所述Web Service的代理對象,并將所述代理對象注冊為所述客戶端OSGi框架中的OSGi服務。上述的方法,優(yōu)選的,所述服務端將OSGi服務發(fā)布為Web Service的過程具體為定義服務接口,實現(xiàn)服務實例;配置服務注冊信息,將所述服務實例注冊為OSGi服務;配置服務發(fā)布信息,將所述OSGi服務發(fā)布為Web Service。上述的方法,優(yōu)選的,所述服務發(fā)布信息包括服務發(fā)布的Web Service接口、服 務發(fā)布的方式、服務發(fā)布為Web Service的根地址、相對地址及服務發(fā)布的數(shù)據(jù)綁定方式。一種服務交互系統(tǒng),包括服務端和客戶端;所述服務端用于將服務端OSGi框架中注冊的OSGi服務發(fā)布為WebService ;所述客戶端用于獲取所述服務端發(fā)布的Web Service,調(diào)用Web Service接口,生 成所述Web Service的代理對象,并將所述代理對象注冊為所述客戶端OSGi框架中的OSGi 服務。上述的系統(tǒng),優(yōu)選的,客戶端包括服務獲取單元、代理對象生成單元和第一注冊 單元;所述服務獲取單元用于獲取服務端發(fā)布的Web Service ;所述代理對象生成單元用于調(diào)用Web Service接口,生成所述服務獲取單元獲取 的Web Service的代理對象;
3
所述第一注冊單元用于將所述代理對象生成單元生成的代理對象注冊為客戶端 OSGi框架中的OSGi服務。上述的系統(tǒng),優(yōu)選的,服務端包括接口定義單元、第二注冊單元和服務發(fā)布單 元;所述接口定義單元用于定義服務接口,實現(xiàn)服務實例;所述第二注冊單元用于配置服務注冊信息,將所述接口定義單元實現(xiàn)的服務實例 注冊為OSGi服務;所述服務發(fā)布單元用于配置服務發(fā)布信息,將所述第二注冊單元注冊的OSGi服 務發(fā)布為Web Service。上述的系統(tǒng),優(yōu)選的,所述服務發(fā)布單元發(fā)布的服務發(fā)布信息包括服務發(fā)布的 Web Service接口、服務發(fā)布的方式、服務發(fā)布為Web Service的根地址、相對地址及服務發(fā) 布的數(shù)據(jù)綁定方式。由以上本申請實施例提供的技術方案可見,本發(fā)明提供的一種服務交互方法及系 統(tǒng),將服務端OSGi框架中注冊的OSGi服務發(fā)布為Web Service,客戶端調(diào)用Web Service 接口,獲取服務端發(fā)布的Web Service,并生成WebService的代理對象,將生成的代理對象 注冊為客戶端OSGi框架中的OSGi服務,這樣一個OSGi框架中的bundles可以通過將注冊 的服務先轉(zhuǎn)換為WebService,然后將Web Service注冊為另一個OSGi框架中的服務,通過 上述轉(zhuǎn)換過程,實現(xiàn)不同OSGi框架中bundles之間的交互。
為了更清楚地說明本申請實施例或現(xiàn)有技術中的技術方案,下面將對實施例或現(xiàn) 有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本 申請中記載的一些實施例,對于本領域普通技術人員來講,在不付出創(chuàng)造性勞動的前提下, 還可以根據(jù)這些附圖獲得其他的附圖。圖1為本申請實施例公開的服務交互方法的流程圖;圖2為本申請實施例公開的將OSGi服務發(fā)布為Web Service的流程圖;圖3為本申請實施例公開的服務交互方法的架構(gòu)圖;圖4為本申請實施例公開的服務交互系統(tǒng)的結(jié)構(gòu)圖;圖5為本申請實施例公開的服務交互系統(tǒng)的一詳細結(jié)構(gòu)圖;圖6為本申請實施例公開的服務交互系統(tǒng)的又一詳細結(jié)構(gòu)圖。
具體實施例方式本申請實施例提供一種服務交互方法及系統(tǒng),基于Apache CXF(CXF是一個開源 的Web Service框架,為應用程序提供發(fā)布Web Service和調(diào)用WebService的功能), ^^ Loong Dservice (OSGI Declarative Services 夫 白勺 JfiJ|$5ft, OSGi Declarative Services是一個面向服務的組件模型,它制訂的目的是更方便地在OSGi服務平臺上發(fā)布、 查找、綁定服務,對服務進行動態(tài)管理,如監(jiān)控服務狀態(tài)以及解決服務之間的復雜的依賴關 系等問題。OSGiDeclarative Services采用服務組件的延遲加載以及組件生命周期管理 的方式來控制對于內(nèi)存的占用以及啟動的快速,很好的解決了傳統(tǒng)的OSGi服務模型在開發(fā)和部署比較復雜應用時內(nèi)存占用大、啟動慢等問題,并且對服務組件的描述采用元數(shù)據(jù) 來實現(xiàn),十分便于用戶理解和使用。在OSGi DeclarativeServices中,Component可以是 Service的提供者和引用者,一個Component可以提供0至多個Service,也可以引用0至 多個Service,并且采用component方式封裝Service,方便了對Service的復用,從開發(fā)者 的角度來看,該服務組件模型簡化了在OSGi服務平臺中的編程模型。),提供了使部署在不 同的OSGi框架中的bundles能夠通過服務進行交互的方法。以上是本申請的核心思想,為了使本技術領域的人員更好地理解本申請方案。下 面將結(jié)合本申請實施例中的附圖,對本申請實施例中的技術方案進行清楚、完整地描述,顯 然,所描述的實施例僅僅是本申請一部分實施例,而不是全部的實施例?;诒旧暾堉械膶?施例,本領域普通技術人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都應 當屬于本申請保護的范圍。本申請實施例公開的服務交互方法的流程圖如圖1所示,包括步驟SlOl 服務端將服務端OSGi框架中注冊的OSGi服務發(fā)布為WebService ;步驟S102 客戶端獲取服務端發(fā)布的Web Service,調(diào)用Web Service接口,生成 上述Web Service的代理對象,并將上述代理對象注冊為客戶端OSGi框架中的OSGi服務。需要對以上步驟進行說明的是以上步驟S102中調(diào)用Web Service接口,這里的Web Service接口指的是java 應用編禾呈接口 for xml web service。本申請實施例公開的將OSGi服務發(fā)布為Web Service的流程圖如圖2所示,包 括步驟S201 定義服務接口,實現(xiàn)服務實例;步驟S202 配置服務注冊信息,將服務實例注冊為OSGi服務;步驟S203 配置服務發(fā)布信息,將OSGi服務發(fā)布為Web Service。將服務端注冊的OSGi發(fā)布為Web Service 開發(fā)程序提供系統(tǒng)或應用所需要的邏輯功能,例如,氣象服務作為服務端向用戶 提供天氣查詢的功能,首先定義天氣查詢的服務接口,然后實現(xiàn)該服務接口,即實現(xiàn)一個服 務實例;配置Loong Dservice的元數(shù)據(jù)信息,Loong Dservice將實現(xiàn)的服務實例 注冊為OSGi服務;繼續(xù)配置元數(shù)據(jù)文件信息,包括發(fā)布的Web Service的接口,如 WeatherService ;Web Service的發(fā)布方式,服務發(fā)布為Web Service的根地址、相對地址 及服務發(fā)布的數(shù)據(jù)綁定方式等;元數(shù)據(jù)文件信息配置完畢后,將所述配置信息添加至XML 文檔中,將注冊的OSGi服務轉(zhuǎn)化為WebService。將客戶端依賴的Web Service轉(zhuǎn)化為本地OSGi服務開發(fā)程序應用服務端發(fā)布的Web Service,配置元數(shù)據(jù)文件信息,依賴實現(xiàn)Web Service 接口的 OSGi 服務;繼續(xù)配置服務信息,描述服務要依賴一個Web Service以及如何導入 WebService,配置Web Service的接口,導入服務的方式,Web Service的WSDL文檔的地址, 服務的命名空間,服務的名稱,服務的端點名稱等。通過服務的命名空間、服務的名稱和服 務的端點名稱可以幫助服務構(gòu)建定位WebService的WSDL文檔的地址。
5
通過配置服務信息,CXF創(chuàng)建需要的Web Service代理對象(具有WebService同 樣的接口),CXF根據(jù)配置創(chuàng)建代理對象,分布式提供者通過OSGI的API將該代理對象注冊 為OSGi服務。然后Loong Dservice將該服務綁定到服務構(gòu)件,服務構(gòu)件就可以像使用本地 OSGi服務一樣使用外部的Web Service。本申請實施例公開的服務交互方法的架構(gòu)圖如圖3所示,圖中3中,服務提供者相 當于服務端,通過配置元數(shù)據(jù)的方式聲明要發(fā)布一個Web Service (假設,接口為A,實現(xiàn)為 Aimpl),分布式提供者根據(jù)服務提供者的聲明將Aimpl實例對象發(fā)布為Web Service,即為 Aimpl實例對象創(chuàng)建了一個代理,如圖3中的服務端點。服務消費者相當于客戶端,通過配置元數(shù)據(jù)的方式聲明要依賴一個 WebService (接口為A),分布式提供者根據(jù)聲明為服務消費者指定的Web Service創(chuàng)建一 個代理,即圖3中服務端點引用,代理具有和Web Service同樣的接口 A,分布式提供者將為 服務消費者所依賴服務的Web Service創(chuàng)建的代理注冊為OSGi服務,服務消費者就可以通 過Loong Dservice綁定到實現(xiàn)了接口 A的OSGi服務。本申請實施例公開的架構(gòu)圖中,服務提供者(必須是Loong Dservice的服務構(gòu) 件)發(fā)布的Web Service必須是其注冊的OSGi服務的子集;服務消費者(必須是Loong Dservice的服務構(gòu)件)依賴的Web Service必須是 其依賴的OSGi服務的子集。本申請實施例公開的服務交互系統(tǒng)的結(jié)構(gòu)圖如圖4所示,包括服務端302和客戶 端 301 ;服務端302用于將服務端OSGi框架中注冊的OSGi服務發(fā)布為WebService ;客戶端301用于獲取服務端302發(fā)布的Web Service,調(diào)用Web Service接口,生 成Web Service的代理對象,并將代理對象注冊為所述客戶端OSGi框架中的OSGi服務。本申請實施例公開的服務交互系統(tǒng)的一詳細結(jié)構(gòu)圖如圖5所示,客戶端301包括 服務獲取單元303、代理對象生成單元304和第一注冊單元305 ;服務獲取單元303用于獲取服務端發(fā)布的Web Service ;代理對象生成單元304用于調(diào)用Web Service接口,生成服務獲取單元303獲取 的Web Service的代理對象;第一注冊單元305用于將代理對象生成單元304生成的代理對象注冊為客戶端 OSGi框架中的OSGi服務。本申請實施例公開的服務交互系統(tǒng)的又一詳細結(jié)構(gòu)圖如圖6所示服務端302包 括接口定義單元306、第二注冊單元307和服務發(fā)布單元308 ;接口定義單元306用于定義服務接口,實現(xiàn)服務實例;第二注冊單元307用于配置服務注冊信息,將接口定義單元306實現(xiàn)的服務實例 注冊為OSGi服務;服務發(fā)布單元308用于配置服務發(fā)布信息,將第二注冊單元307注冊的OSGi服務 發(fā)布為 Web Service。服務發(fā)布單元308發(fā)布的服務發(fā)布信息包括服務發(fā)布的Web Service接口、服務 發(fā)布的方式、服務發(fā)布為Web Service的根地址、相對地址及服務發(fā)布的數(shù)據(jù)綁定方式。
本說明書中的各個實施例均采用遞進的方式描述,各個實施例之間相同相似的部 分互相參見即可,每個實施例重點說明的都是與其他實施例的不同之處。以上所述僅是本 申請的具體實施方式
,應當指出,對于本技術領域的普通技術人員來說,在不脫離本申請原 理的前提下,還可以做出若干改進和潤飾,這些改進和潤飾也應視為本申請的保護范圍。
權利要求
一種服務交互方法,其特征在于,包括服務端將服務端OSGi框架中注冊的OSGi服務發(fā)布為Web Service;客戶端獲取所述服務端發(fā)布的Web Service,調(diào)用Web Service接口,生成所述Web Service的代理對象,并將所述代理對象注冊為所述客戶端OSGi框架中的OSGi服務。
2.根據(jù)權利要求1所述的方法,其特征在于,所述服務端將OSGi服務發(fā)布為Web Service的過程具體為定義服務接口,實現(xiàn)服務實例;配置服務注冊信息,將所述服務實例注冊為OSGi服務;配置服務發(fā)布信息,將所述OSGi服務發(fā)布為Web Service。
3.根據(jù)權利要求2所述的方法,其特征在于,所述服務發(fā)布信息包括服務發(fā)布的Web Service接口、服務發(fā)布的方式、服務發(fā)布為Web Service的根地址、相對地址及服務發(fā)布 的數(shù)據(jù)綁定方式。
4.一種服務交互系統(tǒng),其特征在于,包括服務端和客戶端;所述服務端用于將服務端OSGi框架中注冊的OSGi服務發(fā)布為WebService ;所述客戶端用于獲取所述服務端發(fā)布的Web Service,調(diào)用Web Service接口,生成所 述Web Service的代理對象,并將所述代理對象注冊為所述客戶端OSGi框架中的OSGi服 務。
5.根據(jù)權利要求4所述的系統(tǒng),其特征在于,客戶端包括服務獲取單元、代理對象生 成單元和第一注冊單元;所述服務獲取單元用于獲取服務端發(fā)布的Web Service ;所述代理對象生成單元用于調(diào)用Web Service接口,生成所述服務獲取單元獲取的Web Service的代理對象;所述第一注冊單元用于將所述代理對象生成單元生成的代理對象注冊為客戶端OSGi 框架中的OSGi服務。
6.根據(jù)權利要求4所述的系統(tǒng),其特征在于,服務端包括接口定義單元、第二注冊單 元和服務發(fā)布單元;所述接口定義單元用于定義服務接口,實現(xiàn)服務實例;所述第二注冊單元用于配置服務注冊信息,將所述接口定義單元實現(xiàn)的服務實例注冊 為OSGi服務;所述服務發(fā)布單元用于配置服務發(fā)布信息,將所述第二注冊單元注冊的OSGi服務發(fā) 布為 Web Service。
7.根據(jù)權利要求6所述的系統(tǒng),其特征在于,所述服務發(fā)布單元發(fā)布的服務發(fā)布信息 包括服務發(fā)布的Web Service接口、服務發(fā)布的方式、服務發(fā)布為Web Service的根地址、 相對地址及服務發(fā)布的數(shù)據(jù)綁定方式。
全文摘要
本申請公開了一種服務交互方法,包括服務端將服務端OSGi框架中注冊的OSGi服務發(fā)布為Web Service;客戶端獲取服務端發(fā)布的Web Service,調(diào)用Web Service接口,生成Web Service的代理對象,并將代理對象注冊為客戶端OSGi框架中的OSGi服務。本發(fā)明提供的服務交互方法及系統(tǒng),將服務端OSGi框架中注冊的OSGi服務發(fā)布為Web Service,客戶端調(diào)用WebService接口,獲取發(fā)布的Web Service,并生成Web Service的代理對象,將生成的代理對象注冊為客戶端OSGi框架中的OSGi服務,實現(xiàn)不同OSGi框架中bundles之間的交互。
文檔編號H04L29/06GK101964797SQ20101050514
公開日2011年2月2日 申請日期2010年9月29日 優(yōu)先權日2010年9月29日
發(fā)明者劉民, 景新海, 李攀 申請人:山東中創(chuàng)軟件工程股份有限公司;山東中創(chuàng)軟件商用中間件股份有限公司