Java 使用Mule 3.5中的CXF使用Web服务

Java 使用Mule 3.5中的CXF使用Web服务,java,web-services,mule,cxf,anypoint-studio,Java,Web Services,Mule,Cxf,Anypoint Studio,我正在尝试使用mule(AnyPointStudio)中的CXF组件使用web服务。 因此,我尝试从URL生成WSDL文件,但得到了以下错误:Rpc/编码的WSDL在CXF中不受支持,因此我遵循了 它工作了,生成了客户端存根,然后将文件复制到我的mule项目中 但我得到了这个错误: Service.SomeService.<init>(java.net.URL, javax.xml.namespace.QName) (java.lang.NoSuchMethodException)

我正在尝试使用mule(AnyPointStudio)中的CXF组件使用web服务。 因此,我尝试从URL生成WSDL文件,但得到了以下错误:
Rpc/编码的WSDL在CXF中不受支持
,因此我遵循了

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

但我得到了这个错误:

Service.SomeService.<init>(java.net.URL, javax.xml.namespace.QName) (java.lang.NoSuchMethodException)
Service.SomeService.(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>


有什么想法吗?

您的配置不正确,特别是您的出站端点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到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放在本地类路径中

请在此处签出完整文档作为参考,以便对其进行配置:-



谢谢您的回答!很抱歉,我没有明确我必须从WSDL生成,所以您建议的“另一种方法”对于我来说不适用于“不支持cxf”,还有其他想法吗?