客戶端調用CXF 發佈的WebService

最近工做中用到了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);   
    }google

你們能夠看到,invoke()方法的返回值是Object[],若是咱們如要返回的是服務端自定義的數據類型,怎麼辦,也有解決辦法!.net

怎樣的呢?設計

利用wsdl2java 工具,呵呵,這樣會在你本地生成代理類,你就能夠使用這些自定義數據類型了!代理

若是你想知道怎麼使用,請google,對於此篇,只淺顯的介紹倆種可行思路(固然了,若是你要是願意,能夠打成jar包[僅包含須要用到的自定義數據類型及接口]提供給客戶端)!接口

就說這麼多吧,若有不對的地方,還望你們指正!