【问题标题】:Dynamic web service client from wsdl来自 wsdl 的动态 Web 服务客户端
【发布时间】:2014-10-14 07:08:40
【问题描述】:

我的一个系统需要调用基于 SOAP 的网络服务。到目前为止,对于每个新的 Web 服务,我都会从提供的 WSDL 文件生成 Java 存根,并使用新的 Web 服务使用者代码重新部署 Web 应用程序。有没有一种好的方法来动态创建一个可以从提供的 WSDL 文件调用方法的 web 服务客户端?我所期待的只是

  • 将 WSDL 文件放在 Web 应用程序可以访问的位置
  • 使用具有 wsdl 文件名的关键字和 webservice 方法所需的其他参数调用 Servlet。

Apache CXF 可以在这方面提供帮助吗?我在一篇文章中读到,在运行时生成 wsdl2java 并加载类,一段时间后,会耗尽 pemgen 内存空间。

【问题讨论】:

    标签: java web-services wsdl cxf


    【解决方案1】:

    你应该看这里:http://cxf.apache.org/docs/dynamic-clients.html 就是这样。

    这里是一个例子:

    ClientImpl client = (ClientImpl)doc.getClientFromWsdl("http://myurl:8080/DataCentersWS?wsdl");
    String operationName = "getVirtualisationManagerUuid";
    BindingOperationInfo op = doc.getOperation(client, operationName);
    List<MessagePartInfo> messagesParts = op.getInput().getMessageParts();
    Object[] params = new Object[messagesParts.size()];
    /* feed yours params here (this feeding was heavy in my code */
    Object[] res = client.invoke(op, params);
    

    cxf的源码分布还有很多其他的例子。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-09
      • 2012-09-17
      • 1970-01-01
      • 1970-01-01
      • 2015-01-24
      • 1970-01-01
      相关资源
      最近更新 更多