我对mule esb有点新意,我无法解决我遇到的一个麻烦。这是发生的事情: 我有一个流量在mule 3.2.0,它接收对象与ws的请求。我用cxf发送它给ws:jaxws-client和。在此流程的开头,我有vm:带有请求 - 响应模式的入站端点。我想要的是将转换应用到从“vmIn端点”作为响应返回的对象,然后从流的“vm.logService端点”发送回调用方。我实际上得到了响应,但它是有效负载。 “vm.logService”是我通过MuleClient.send(url,message,properties)从Java代码发送MuleMessage的端点。我读过这应该用“响应”块完成,但似乎是这不会发生。
这是我的配置
<vm:endpoint name="vmOut" path="vmOut" exchange-pattern="request-response"/>
<vm:endpoint name="vmIn" path="vmIn" exchange-pattern="request-response"/>
<pattern:web-service-proxy
name="name"
inboundEndpoint-ref="vmIn"
transformer-refs="logging"
responseTransformer-refs="logging"
outboundEndpoint-ref="vmOut" />
<flow name="logService">
<vm:inbound-endpoint path="vm.logService"/>
<vm:outbound-endpoint ref="vmIn">
<cxf:jaxws-client serviceClass="my.WSClass" operation="operation"
enableMuleSoapHeaders="false"/>
<object-to-string-transformer/>
</vm:outbound-endpoint>
<response>
<custom transformer name="myTransformer" class="someclass" />
</response>
<flow name="genericTransformer">
<vm:inbound-endpoint path="vmOut"/>
<custom-transformer class="mypkg.GenericServiceTransformer">
</custom-transformer>
</flow>
<flow name="import">
<vm:inbound-endpoint path="vm.import" exchange-pattern="request-response"/>
<http:outbound-endpoint address="${Service}" responseTimeout="${ws.timeout}" exchange-pattern="request-response" />
<object-to-string-transformer/>
</flow>
好吧,在使用jaxws-client发送之后,我有更多的流来处理这个请求消息,但我不认为这就是为什么它不起作用的原因。在此先感谢您的任何帮助
答案 0 :(得分:1)
“vm.logService”VM端点看起来对我没有请求 - 响应:由于您没有指定交换模式,因此默认情况下它实际上是单向的。这可以解释为什么你没有得到任何回报。
此外,我们没有看到“vmIn”的定义,因此我们无法确定它是否是正确的请求 - 响应,这可能是未到达响应块的另一个原因。
实际上:如果你的响应块是流程中的最后一个元素,你就不需要它了:如果在请求阶段应用了“myTransformer”就行了,因为之后什么都没有。
在使用jaxws-client发送之后,我还有更多的流来处理此请求消息
我真的不明白你的意思。