很久沒有動(dòng)手寫WebService了,這次,借項(xiàng)目間隙,對(duì)系統(tǒng)進(jìn)行一個(gè)小改造,將一部分功能使用WS進(jìn)行封裝,為下一步異構(gòu)系統(tǒng)集成打下基礎(chǔ)。
但在WS化時(shí),由于日久生疏,一個(gè)小小的WS化變動(dòng),卻花了整整好幾天時(shí)間!為此,狠下以來,將其過程進(jìn)行記錄,以便下次參考。
WS整體流程:
以下分別介紹:
1、設(shè)計(jì)和實(shí)現(xiàn)WebService服務(wù)端功能組件,用于統(tǒng)一處理針對(duì)本應(yīng)用系統(tǒng)所需進(jìn)行WebService化的邏輯實(shí)現(xiàn)。并將系統(tǒng)邏輯處理中的對(duì)象轉(zhuǎn)成序列化后的String對(duì)象,以符合WebService交互標(biāo)準(zhǔn)。
2、根據(jù)SBPApi.java,生成WSDL等:通過Eclipse右鍵菜單中的WebService-->Create Web Service項(xiàng)。完成后,會(huì)在web目錄下建立wsdl目錄和SBPApi.wsdl,在WEB-INF目錄下建立(改寫)server-config.wsdd等文件,并完成對(duì)web.xml的修改。其操作流程示如下:
3、根據(jù)SBPApi.wsdl,生成WebService客戶端開發(fā)包和部署文件:
1)為不影響已有項(xiàng)目,可另建java Web項(xiàng)目;
2)將wsdl目錄復(fù)制至新項(xiàng)目對(duì)應(yīng)的web目錄下;
3)通過eclipse已提供的webService插件(右鍵)功能,生成客戶端開發(fā)包所各文件。此時(shí),所生成的文件與服務(wù)端對(duì)象文件結(jié)構(gòu)一至。
4)調(diào)整關(guān)聯(lián)引用文件,將其調(diào)整至客戶端開發(fā)包,從而避免與服務(wù)器端的引用路徑重復(fù)而引發(fā)不便,并將服務(wù)器SDK中已有文件刪除。
5)建立客戶端的快速使用代理SBPClient.java,對(duì)WebService服務(wù)端交互工作的SBPApiSoapBindingStub.java進(jìn)行客戶端封裝,并根據(jù)服務(wù)端中交互對(duì)象進(jìn)行反向工程,其示例結(jié)構(gòu)如下:
6)將clientApi下的所有文件打包后,加入測試項(xiàng)目進(jìn)行測試。此時(shí),因客戶端所使用的服務(wù)端對(duì)象未包含在WebService客戶端開發(fā)包中,因此需要將服務(wù)端對(duì)象也一同打包。
7)測試。
4、開發(fā)環(huán)境:Eclipse3.3.1.1 + JDK1.5.06 + Apache Axis version: 1.4