最近工做中用到了WebService,其發佈方式有好多種,暫不討論;java
由於要業務聯調,因此要模擬客戶端的調用,所以也就產生了下面的問題。在這裏主要想說一下,客戶端調用WebService的方式!web
若是WebService自己沒有返回值返回值僅是基本數據類型時,我推薦你們閱讀一下下面這篇博客,其中動態客戶端調用很好用。設計模式
http://www.oschina.net/question/54100_26065工具
在這裏我強調一下:wsdl地址和方法名稱必定不要出錯!學習
public static void main(String[] args) {
JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance(); //這個是否是用到了工廠方法設計模式呢?學習中
String wsUrl = "http://localhost:8080/webservice_path/webservice_name?wsdl"; //wsdl地址
String method = "webservice_method";//webservice的方法名
Client client = dcf.createClient(wsUrl);
Object[] res = null;
try {
res = client.invoke(method);//調用webservice
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("res:"+res[0]);
System.exit(0);
你們能夠看到,invoke()方法的返回值是Object[],若是咱們如要返回的是服務端自定義的數據類型,怎麼辦,也有解決辦法!.net
怎樣的呢?設計
利用wsdl2java 工具,呵呵,這樣會在你本地生成代理類,你就能夠使用這些自定義數據類型了!代理
若是你想知道怎麼使用,請google,對於此篇,只淺顯的介紹倆種可行思路(固然了,若是你要是願意,能夠打成jar包[僅包含須要用到的自定義數據類型及接口]提供給客戶端)!接口
就說這麼多吧,若有不對的地方,還望你們指正!