客户端调用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包[仅包含须要用到的自定义数据类型及接口]提供给客户端)!接口

就说这么多吧,若有不对的地方,还望你们指正!

相关文章
相关标签/搜索