我是mule studio的新手。
这是environements设置。
VM1 = Windows 7,Visual Studio 2012,IIS 7。 IIS7中托管的.net 4.5 WCF Web服务,它具有接受字符串并返回字符串的操作。
VM2 = Ubuntu 13.4 OpenJDK 1.7.0_25 Mule Studio 3.5社区版。
我创建了一个带有出站端点的JAXWS-Client,我通过单击WSDL中的generate并在 VM1 上输入IIS中托管的.net WCF Web服务的URL来完成此操作。那很好。
然后,我在入站服务和出站客户端之间创建了一个带有jaxws-Service的入站端点,其中有一个记录器和一个字符串对象。
如果我设置一个vanilla入站端点(没有soap)并使用一个简单的html表单发布它一切正常,我得到一个字符串回到浏览器。但是,当流在出站端点之前到达Soap组件时,添加Soap组件会导致dispatcherexception。
org.mule.api.transport.DispatchException:java.lang.reflect.Method 无法强制转换为java.lang.String。无法路由事件 endpoint:org.mule.module.cxf.CxfOutboundMessageProcessor。信息 payload的类型为:String
<flow name="testtwoFlow1" doc:name="testtwoFlow1">
<http:inbound-endpoint exchange-pattern="request-response" path="SimplePing" doc:name="HTTP" host="0.0.0.0" port="8081"/>
<cxf:jaxws-service serviceClass="TestTwo.IPing" doc:name="SOAP" />
<logger level="INFO" doc:name="Logger"/>
<object-to-string-transformer doc:name="Object to String"/>
<flow-ref name="testtwoFlow3" doc:name="Flow Reference"/>
</flow>
<sub-flow name="testtwoFlow3" doc:name="testtwoFlow3">
<cxf:jaxws-client operation="SimplePing" serviceClass="TestTwo.IPing" enableMuleSoapHeaders="true" doc:name="SOAP"/>
<logger level="INFO" doc:name="Logger"/>
<http:outbound-endpoint exchange-pattern="request-response" host="192.168.0.2" port="80" path="MuleExperiments/Ping.svc" method="POST" doc:name="HTTP" />
</sub-flow>
我已广泛搜索过,如果示例显示入站服务与出站客户端进行交互,那么我就会遇到很多问题。或抛出异常的描述,导致它的原因以及如何解决它。我猜它几乎是因为服务和客户端都是从同一个WSDL生成的,但我不认为这是一个真正的问题。或者在我的cxf:jaxws-service&amp; cxf:jaxws-service服务类是一样的。
在这个时刻,我的目标是简单地输入/输出一个字符串
答案 0 :(得分:0)
我的客户端配置错误。它应该是clientClass,而不是serviceClass,并且还需要设置端口。一旦我做了这些改变,我就让它发挥作用了。
<cxf:jaxws-client
operation="SimplePing"
enableMuleSoapHeaders="true"
doc:name="SOAP"
clientClass="TestTwo.PingService"
port="BasicHttpBinding_IPing"
/>