《電子技術應用》
您所在的位置:首頁 > 其他 > 業(yè)界動態(tài) > JAVA、SOAP構建服務集成平臺

JAVA、SOAP構建服務集成平臺

2008-12-19
作者:方 洋

1、引言?

隨著計算機技術的飛速發(fā)展,軟件的開發(fā)在經(jīng)歷了面向?qū)ο蟆⒚嫦蚪M件和面向領域后,如今進一步要求面向服務、面向工作流。面向服務的軟件開發(fā)將不再局限于單個企業(yè)部門,而需要考慮到整個企業(yè),整個行業(yè)以及與行業(yè)運作相關的政府職能部門。這樣,集成技術就顯得越來越重要,不僅需要有企業(yè)內(nèi)部的A2A集成,還需要有企業(yè)間的B2B以及政府職能部門與整個企業(yè)的G2B集成,甚至還包括政府各部門間的G2G集成。?

在傳統(tǒng)的集成技術中,開發(fā)人員一直通過集成本地系統(tǒng)服務來構建應用系統(tǒng)" title="應用系統(tǒng)">應用系統(tǒng)。分布式的應用系統(tǒng)建立需要使用分布式的組件對象模型。如目前應用比較廣泛DCOM和CORBA。這兩種系統(tǒng)使用了不同的數(shù)據(jù)表達方式,互不兼容。并且,無法擴展到互聯(lián)網(wǎng)上,它們要求通信兩端有同類基本結構,緊密耦合,一旦一方的執(zhí)行機制發(fā)生變化,那么另一方就會崩潰,它們穿透互聯(lián)網(wǎng)上各種各樣的防火墻的能力不能令人滿意。?

2、JAVA中的SOAP分布式結構?

面向服務和工作流的集成技術通常需要的是松耦合、跨平臺、語言無關、與特定服務無關的。而SOAP恰恰能做到這一點。SOAP簡單、輕量級的協(xié)議,它把成熟的基于HTTP的Web技術和XML的靈活性、可擴展性結合在一起。方便的實現(xiàn)多種異構平臺之間的相互訪問。JAVA是一種跨平臺語言,它為SOAP提供了一個開放源代碼的簡單易操作的Java實現(xiàn)。JAVA中的SOAP分布式結構" title="分布式結構">分布式結構如圖1所示:?

這種結構有利于軟件組件的重復使用,例如,一個商業(yè)邏輯存在于一個分布式系統(tǒng)中,它可以被一個用交互分布計算協(xié)議的遠程系統(tǒng)所使用。允許外部機構訪問包含在無法通過防火墻障礙的分布式系統(tǒng)內(nèi)的也是有效方法。類似地,分布式結構可以用于組成企業(yè)應用程序集成(EAI)方案和企業(yè)間的B2B集成方案。?

3、SOAP機制下服務集成平臺結構?

服務集成平臺是業(yè)務服務運作的支撐平臺,它使得業(yè)務服務最終面向公眾,是一個為公眾提供與之密切相關的各種業(yè)務服務,如查詢,消費和各種申請服務的一站式服務平臺" title="服務平臺">服務平臺。?

本文構建了基于SOAP的服務集成平臺結構,以實現(xiàn)各種業(yè)務服務。其結構如圖2所示:?

SOAP機制[1]在服務集成平臺中充當了底層通信的角色,其作用是作為消息的載體,實現(xiàn)分布式對象訪問和應用系統(tǒng)之間的調(diào)用,從而將企業(yè)內(nèi)部,企業(yè)間,政府內(nèi)部,企業(yè)與政府間各個分散的、獨立的服務能按一定的業(yè)務規(guī)范連接起來,組成一個有機的整體,完成更多的功能,以實現(xiàn)企業(yè)自動化、商務流程自動化、B2B電子商務和電子政務。?

服務集成平臺結構有兩部分組成;服務集成平臺和后臺服務系統(tǒng)。?

后臺服務系統(tǒng)由服務運營商提供各種功能組件,以完成各種具體邏輯操作,該組件以服務形式對外發(fā)布,在注冊庫中注冊其服務描述文檔,以供平臺系統(tǒng)動態(tài)調(diào)用。它對應圖1中Web服務器和實現(xiàn)具體功能的Java對象。?

服務集成平臺主要完成服務的集成,它主要實現(xiàn)圖1中SOAP客戶機的作用,該平臺主要包括兩大子系統(tǒng):業(yè)務服務支撐系統(tǒng)" title="支撐系統(tǒng)">支撐系統(tǒng)和業(yè)務服務集成系統(tǒng)。?

應用集成層(Application Integration Layer,簡稱AIL)是服務集成系統(tǒng)中的核心模塊,它動態(tài)的加載在注冊庫(Register&Repository,簡稱RR)中注冊的各個服務的說明及描述文檔以及各服務之間的業(yè)務關系、常用規(guī)范(即工作流文檔),來完成流程的建立,信息的協(xié)調(diào)和數(shù)據(jù)的傳輸,動態(tài)的協(xié)同各個獨立的服務等服務集成的主要工作。?

業(yè)務服務支撐系統(tǒng)是提供一個業(yè)務服務的集成和運行環(huán)境,它主要包括由客戶端" title="客戶端">客戶端環(huán)境(Client Environment)和服務器環(huán)境(Server Environment)共同建立的業(yè)務服務運行環(huán)境。業(yè)務服務運行環(huán)境的主要功能如下:?

(1)?????? 業(yè)務服務管理;包括服務的注冊、注銷,服務的擴展接口以及服務文件的傳送。?

(2)?????? 界面管理;包括平臺系統(tǒng)界面和業(yè)務服務界面的管理。?

(3)?????? 數(shù)據(jù)資源管理;主要是本地數(shù)據(jù)和業(yè)務服務數(shù)據(jù)的存儲、傳輸管理。?

(4)?????? 通信管理;負責完成終端與服務器的數(shù)據(jù)通信。?

(5)?????? 安全管理;負責通信過程中的數(shù)據(jù)安全,以及平臺各終端的身份認證。?

(6)?????? 在較復雜的業(yè)務服務平臺中,還可能有對終端硬件的管理,如卡類服務所需的插卡機。?

系統(tǒng)內(nèi)部各模塊間,以及與后臺服務間均采用XML做為數(shù)據(jù)交換,平臺系統(tǒng)與后臺服務間以SOAP做為底層通信協(xié)議,XML和SOAP的結合使得整個服務平臺具有松耦合、跨平臺、語言無關、與特定服務無關的特點。業(yè)務服務極易升級及擴展。?

4、服務集成平臺實例?

電子化城市服務亭系統(tǒng)就是建立在圖2結構上的一個服務集成平臺。它是上海市社會保障中心重點科研項目,它通過分布在社區(qū)和各種公眾場所的終端向公眾提供一系列與之生活相關的各類服務,例如,天氣信息、卡類信息等查詢服務;繳納水費、電費的各種繳費服務;訂票、旅游、購車等消費服務;以及申請失業(yè)保障、就業(yè)培訓等申請服務。?

下面將以一個汽車消費服務為例來講述其在此平臺上的實現(xiàn)。這里將汽車消費服務簡化為只包括汽車消費申請和車牌申請兩個子服務的一個簡單流程服務。這里將不涉及到電子交易。汽車消費服務的實現(xiàn)流程圖如圖3所示。?

?

???????????? ?

1.發(fā)起請求;用戶通過客戶端環(huán)境的平臺界面和汽車銷售業(yè)務服務界面向服務器環(huán)境發(fā)起請求,請求消息包括用戶的基本信息及所希望購買的汽車信息??蛻舳谁h(huán)境將請求信息和業(yè)務服務支撐系統(tǒng)運行時的必要信息(如業(yè)務服務綁定名)一起封裝成XML文檔,傳給服務器環(huán)境,其XML文檔如下:?

…?

?

??????? ?

??????? …?

?

?

??????? ?

??????? …?

?

?

…?

2.查詢業(yè)務服務描述信息;服務器環(huán)境根據(jù)業(yè)務服務綁定名新建一個業(yè)務服務實例,代碼如:BusinessService carsalling = new BusinessService(“car”);?

接著向注冊庫查詢汽車銷售業(yè)務服務描述信息。業(yè)務服務描述信息包括業(yè)務服務的應用程序包,啟動主類程序以及端口消息類型等調(diào)用信息。其代碼如:carsalling.find(“car”);?

3.啟動業(yè)務服務;服務器環(huán)境通過注冊庫的汽車銷售業(yè)務服務的描述信息自動加載業(yè)務服務程序包,啟動汽車銷售業(yè)務服務,并將用戶請求信息傳遞給該業(yè)務服務。其代碼如:?

carsalling.load(“car”,userXMLinformation);?

4.查詢子服務描述信息;汽車銷售業(yè)務服務AIL向注冊庫查詢汽車消費申請和車牌申請兩個子服務的描述信息。AIL將根據(jù)汽車銷售業(yè)務邏輯及注冊庫中各服務之間的業(yè)務關系、常用規(guī)范及服務流程,來完成具體操作。汽車銷售業(yè)務服務只是簡單的順序執(zhí)行兩個子服務。?

5.完成汽車申請服務; AIL根據(jù)汽車申請服務的描述信息來生成SOAP請求調(diào)用該服務,從而完成用戶請求信息在汽車銷售商處的具體操作。其主要Java代碼如下:?

…?

Call call = new Call();?

Vector vctParamers = new Vector();?

Response response;?

Try{?

??????? call.setTargetObjectURI(“urn:carApply”);? //設定服務名?

??????? call.setMethodName(“carApply”);??????? //設定方法名?

??????? call.setEncodingStyleURI(Constants.NS-URI-SOAP-ENC);?

??????? vctParamers.addElement(new Parameter?

(“inputXML”,Element.class,elementInput,Constant.NS-URI-LITERAL-XML));?

??????? call.setParamers(vctParameters);???????? //設定需提交的參數(shù)?

??????? response = call.invoke(url,””)????????????? //調(diào)用汽車申請服務?

}catch{}?

…?

6.完成車牌申請服務;AIL根據(jù)車牌申請服務的描述信息來生成SOAP請求調(diào)用該服務,從而完成用戶請求信息在交通管理部門的具體操作,其Java代碼與5中基本相似。?

7.服務返回信息整合;AIL將服務調(diào)用的返回信息進行整合,形成返回消息。并將此消息傳遞給平臺服務器環(huán)境。該返回消息包括汽車申請的成功與否及車牌申請的成功與否等具體信息。?

8.返回用戶信息;服務器環(huán)境將AIL的返回信息進行XML封裝,同樣加上支撐系統(tǒng)的運行信息一起返回給客戶端環(huán)境,客戶端環(huán)境將用戶所需的信息解析出后通過服務界面最終返回給用戶。?

5、結束語?

服務平臺是一種世界潮流,它在城域網(wǎng)內(nèi)實現(xiàn)公眾所需的各種業(yè)務服務,它將是作為城市信息化的重要組成部分,對城市的信息化建設起推動作用,并且有利于電子商務的推廣。本文提出基于SOAP的服務集成平臺結構。并在此結構上給出了一個汽車銷售服務的Java實現(xiàn)。Java和SOAP都具有與平臺無關的優(yōu)良特性,這使得此服務集成平臺具有了良好的通用性,各個功能模塊間的松散耦合又使得此平臺具有了良好的擴展性。

參考文獻?

[1] 施明輝,用基于XML的SOAP機制構建應用系統(tǒng),計算機應用,2002.4?

[2] Bilal Siddiqui ,Developing Web services, Part 3: SOAP interoperability,http://www-106.ibm.com/developerworks/webservices/library/ws-intwsdl3.html,2002.9?

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認版權者。如涉及作品內(nèi)容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經(jīng)濟損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。