Mule方法不能转换为字符串

时间:2013-08-18 08:20:43

标签: mule mule-studio

我是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服务类是一样的。

在这个时刻,我的目标是简单地输入/输出一个字符串

1 个答案:

答案 0 :(得分:0)

我的客户端配置错误。它应该是clientClass,而不是serviceClass,并且还需要设置端口。一旦我做了这些改变,我就让它发挥作用了。

<cxf:jaxws-client
   operation="SimplePing"
   enableMuleSoapHeaders="true"
   doc:name="SOAP"
   clientClass="TestTwo.PingService"
   port="BasicHttpBinding_IPing"
/>