0

我对 mule 工作室很陌生。

这是环境设置。

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 生成并输入托管在VM1上的 IIS 中的 .net WCF Web 服务的 URL 来完成此操作。那很好。

然后,我在入站服务和出站客户端之间创建了一个带有 jaxws-Service 的入站端点,其中有一个记录器和一个字符串对象。

如果我设置一个香草入站端点(没有肥皂)并使用一个简单的 html 表单来发布它一切正常,我会得到一个字符串返回给浏​​览器。但是,当流在出站端点之前到达 Soap 组件时,添加 Soap 组件会导致调度程序异常。

org.mule.api.transport.DispatchException:java.lang.reflect.Method 无法转换为 java.lang.String。无法通过端点路由事件:org.mule.module.cxf.CxfOutboundMessageProcessor。消息有效负载的类型:字符串

 <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 & cxf:jaxws-service 服务类是相同的。

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

4

1 回答 1

0

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

<cxf:jaxws-client
   operation="SimplePing"
   enableMuleSoapHeaders="true"
   doc:name="SOAP"
   clientClass="TestTwo.PingService"
   port="BasicHttpBinding_IPing"
/>
于 2013-08-18T20:48:15.320 回答