WebService客户端开发(Axis2 1.5)
生活随笔
收集整理的這篇文章主要介紹了
WebService客户端开发(Axis2 1.5)
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
WebService的客戶端開發(fā)方式很多,如果單純?yōu)榱耸褂靡粋€(gè)WebService,而不想依賴太多的框架,那么隨便選擇個(gè)WebService框架就可以了。 為了封裝方便,代碼復(fù)用,更好的性能,一般選擇客戶端存根方式來開發(fā)。 開發(fā)環(huán)境: Idea-8.13 Axis2-1.5 JDK-1.5 一、建立java項(xiàng)目 建立項(xiàng)目后,創(chuàng)建存根存放包。 按照如下圖配置: 一定要選擇ADB方式,ADB綁定方式生成的類最少,易于管理。 二、生成代碼 按照如上圖設(shè)置后,點(diǎn)OK,就生成好了,連單元測試的代碼都封裝好了。 說真的,生成后的代碼直接看就傻眼了,看不出個(gè)頭緒來。 三、看懂Axis2存根代碼 Axis2生成的存根代碼雖然復(fù)雜,但是有規(guī)律的,只要你搞明白生成的原理,再看生成后的代碼,就會恍然大悟。 生成原理: 1、Axis將每個(gè)發(fā)布的服務(wù)生成一個(gè)對應(yīng)的存根類,比如原來我的服務(wù)名為myws,那么生成后的存根就是MywsStub。 2、Axis將服務(wù)中每個(gè)方法生成一個(gè)存根下的內(nèi)部類。 比如: 在服務(wù)端有這樣的方法:public String doSomething(String taskname) 那么,生成的客戶端中會有這樣一個(gè)類: MywsStub.DoSomething 這個(gè)類中還有自己的成員,成員即為原方法的參數(shù)。 四、封裝客戶端代碼 一般來說,生成的WebService客戶端代碼都相當(dāng)?shù)膩y,如果不懂規(guī)律,根本無法閱讀。為了更好更方便更容易的調(diào)用WS服務(wù),需要對客戶端代碼做進(jìn)一步的封裝。封裝的點(diǎn)如下: 1、將存根中固定ip、端口改為變量。同時(shí)需要修改存根的構(gòu)造方法。 2、構(gòu)建一個(gè)和服務(wù)端對等的客戶端類,并在其中的每個(gè)方法中再增加兩個(gè)參數(shù):ip和端口。 3、根據(jù)生成原理對客戶端代碼做更進(jìn)一步封裝。 4、發(fā)布客戶端的jar。 按照以上的步驟,修改存根的構(gòu)造方法。 并做進(jìn)一步封裝,封裝代碼如下: /**?
* WS客戶端封裝代碼?
*?
* @author leizhimin 2009-8-5 13:10:23?
*/?
public?class?MywsClient {?
????????public?String doSomething(String taskname,String wsip,String port)?throws?Exception {?
????????????????MywsStub stub =?new?MywsStub(wsip,port);?
????????????????MywsStub.DoSomething opt =?new?MywsStub.DoSomething();?
????????????????opt.setTaskname(taskname);?
????????????????return?stub.doSomething(opt).get_return();?
????????}?
????????public?static?void?main(String[] args)?throws?Exception {?
????????????????MywsClient client =?new?MywsClient();?
????????????????String rs = client.doSomething("xxx","192.168.14.117","8080");?
????????????????System.out.println(rs);?
????????}?
} 運(yùn)行其中main測試方法如下: xxxis finished!?
Process finished with exit code 0 看看客戶端測試截圖: 看看服務(wù)端tomcat的響應(yīng): 到此,客戶端開發(fā)過程就結(jié)束了。
本文轉(zhuǎn)自 leizhimin 51CTO博客,原文鏈接:http://blog.51cto.com/lavasoft/187993,如需轉(zhuǎn)載請自行聯(lián)系原作者
* WS客戶端封裝代碼?
*?
* @author leizhimin 2009-8-5 13:10:23?
*/?
public?class?MywsClient {?
????????public?String doSomething(String taskname,String wsip,String port)?throws?Exception {?
????????????????MywsStub stub =?new?MywsStub(wsip,port);?
????????????????MywsStub.DoSomething opt =?new?MywsStub.DoSomething();?
????????????????opt.setTaskname(taskname);?
????????????????return?stub.doSomething(opt).get_return();?
????????}?
????????public?static?void?main(String[] args)?throws?Exception {?
????????????????MywsClient client =?new?MywsClient();?
????????????????String rs = client.doSomething("xxx","192.168.14.117","8080");?
????????????????System.out.println(rs);?
????????}?
} 運(yùn)行其中main測試方法如下: xxxis finished!?
Process finished with exit code 0 看看客戶端測試截圖: 看看服務(wù)端tomcat的響應(yīng): 到此,客戶端開發(fā)過程就結(jié)束了。
本文轉(zhuǎn)自 leizhimin 51CTO博客,原文鏈接:http://blog.51cto.com/lavasoft/187993,如需轉(zhuǎn)載請自行聯(lián)系原作者
總結(jié)
以上是生活随笔為你收集整理的WebService客户端开发(Axis2 1.5)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux中ifcfg-eth0配置参数
- 下一篇: 开发中常见的十种对缓存的错误使用