1

我对mule esb有点陌生,我无法解决我遇到的一个问题。以下是发生的情况:我在 mule 3.2.0 中有一个流程,它接收带有对 ws 的请求的对象。我使用 cxf:jaxws-client 将它发送到 ws 和。在这个流程的开始,我有带有请求-响应模式的 vm:inbound 端点。我想要的是将转换应用于从“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 发送之后,我处理了这个请求消息的流程很少,但我认为这不是它不起作用的原因。提前感谢您的帮助

4

1 回答 1

1

“vm.logService”VM 端点对我来说看起来不像请求响应:由于您没有指定交换模式,因此默认情况下它实际上是单向的。这可以解释为什么你没有得到任何回报。

此外,我们看不到“vmIn”的定义,因此我们无法确定它是正确的请求-响应,这可能是未到达响应块的另一个原因。

实际上:如果您的响应块是流程中的最后一个元素,则不需要它:如果在请求阶段应用“myTransformer”就可以,因为之后没有任何内容。

使用 jaxws-client 发送后,我处理此请求消息的流程很少

我真的不明白你的意思。

于 2012-12-11T22:19:13.907 回答