我正在尝试使用mule(Anypoint Studio)中的CXF组件来使用Web服务。
所以我尝试从URL生成WSDL文件,但我得到了这个错误:Rpc/encoded wsdls are not supported in CXF
所以我跟着this answer.
它工作了,它生成了客户端存根,然后将文件复制到我的mule项目中。
但是我收到了这个错误:
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>
有什么想法吗?
答案 0 :(得分:0)
您的配置不正确特别是您的出站端点网址。 您可以尝试按照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/consuming-web-services-with-cxf
和
Consuming a Webservice Using Mule 3.4