0

我正在尝试使用 mule(Anypoint Studio)中的 CXF 组件使用 Web 服务。所以我尝试从 URL 生成 WSDL 文件,但我得到了这个错误:Rpc/encoded wsdls are not supported in CXF所以我遵循了这个答案。

它工作并生成客户端存根,然后将文件复制到我的骡子项目中。

但我收到此错误:

Service.SomeService.<init>(java.net.URL, javax.xml.namespace.QName) (java.lang.NoSuchMethodException)

这是我的流程:

<flow name="WebServiceTest">
          <cxf:jaxws-client
         clientClass="service.SomeService"
         wsdlLocation="http://127.0.0.1:8000/api/v2_soap/?wsdl"
        operation="test"/>         
      <outbound-endpoint address="http://127.0.0.1:8000/api.php/?type=v2_soap"/>
</flow>

有任何想法吗?

4

1 回答 1

0

您的配置不正确,特别是您的出站端点 url。您可以尝试按照 Mule 文档配置 CXF 客户端。
您还可以为您的JAX-WS服务构建客户端,而无需从 WSDL 生成客户端。在这里,您需要一份服务接口和本地所有数据对象的副本才能使用如下内容:-

<flow name="csvPublisher">
  ...
  <cxf:jaxws-client serviceClass="org.example.HelloService" operation="sayHi"/>
  <outbound-endpoint address="http://localhost:63081/services/greeter"/>
</flow>

另一种方法是您可以使用 CXF 生成的客户端作为出站端点。首先,您需要使用来自 CXF 或 Maven 插件的WSDL to Java工具生成一个 CXF 客户端。
然后您需要配置如下内容:-

<flow name="csvPublisher">
  ...
  <cxf:jaxws-client
         clientClass="org.apache.hello_world_soap_http.SOAPService"
         port="SoapPort"
         wsdlLocation="classpath:/wsdl/hello_world.wsdl"
         operation="greetMe"/>
  <outbound-endpoint address="http://localhost:63081/services/greeter"/>
</flow>

最好将 wsdl 放在本地类路径中。

请在此处查看完整文档作为参考以对其进行配置:-
https://docs.mulesoft.com/mule-user-guide/v/3.7/sumption-web-services-with-cxf

使用 Mule 3.4 使用 Web 服务

于 2015-12-27T12:20:13.930 回答