客户端调用CXF 发布的WebService

[亡魂溺海] 提交于 2019-11-29 21:38:59

最近工作中用到了WebService,其发布方式有好多种,暂不讨论;

因为要业务联调,所以要模拟客户端的调用,因此也就产生了下面的问题。在这里主要想说一下,客户端调用WebService的方式!

如果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[],如果我们如要返回的是服务端自定义的数据类型,怎么办,也有解决办法!

怎样的呢?

利用wsdl2java 工具,呵呵,这样会在你本地生成代理类,你就可以使用这些自定义数据类型了!

如果你想知道怎么使用,请google,对于此篇,只浅显的介绍俩种可行思路(当然了,如果你要是愿意,可以打成jar包[仅包含需要用到的自定义数据类型及接口]提供给客户端)!

就说这么多吧,如有不对的地方,还望大家指正!

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!