我有一个soap服务流程,通过<cxf:proxy-service>
获取入站请求。我在它之后有一个有效负载,以便将有效负载作为String。
这是我的流程:
<flow name="soapService">
<http:inbound-endpoint address="${service.address}" exchange-pattern="request-response">
<cxf:proxy-service wsdlLocation="classpath:service.wsdl" namespace="http://pennmutual.com/services/mvi" service="MVIService" enableMuleSoapHeaders="false"/>
</http:inbound-endpoint>
<set-payload value="#[message.payloadAs(java.lang.String)]"/>
.
.
.
</flow>
<set-payload value="#[message.payloadAs(java.lang.String)]"/>
有效,但如果我将其替换为<object-to-string-transformer>
,则无效。
这两个本身有何不同?
更新
在我的上述流程中使用<set-payload value="#[message.payloadAs(java.lang.String)]"/>
替换<object-to-string-transformer>
时,#[payload]
会提供com.ctc.wstx.sr.ValidatingStreamReader@429eb61a
而不是atcual XML
答案 0 :(得分:10)
message.payloadAs(java.lang.String)
依赖于Mule的自动转换框架:我认为它选择<xml:dom-to-xml-transformer>
而不是<object-to-string-transformer>
作为最合适的转换器。