Mule 骡子奇怪的流动行为
我正在使用mule 3.2.0和 我在java类中调用muleclient.send方法,该方法将soap请求发送到mule流(此处不存在),该流将其发送到http端点,该端点接收请求,使用代理模式将其记录到我的数据库,并将其传播到“ServiceFlow”,该“ServiceFlow”具有Dispatcher transformer-java类,该类使用muleclient.send调用(字符串url、对象有效负载、映射消息属性)方法将有效负载数组的一个对象分派到端点。 然后它被cxf:jax-ws-client处理,再次登录到数据库,并传输到Dispatcher的另一个实例(其中传入的负载也是Object[])。在这里,我有http端点,它执行服务调用。这部分工作正常。 但在接收响应时出现了问题。我将Test1(2,3,4)Transformer放在流中打印调用链(它们只执行System.out.println()),并看到它们以一种奇怪的顺序被调用:我的调用顺序与TestTransformer(也是sysouter)类似,然后我得到了错误“NullPayload”在主流的调用者“服务流”中,然后我收到测试4和测试2输出。模式“1Proxy”中的responseTransformer引用被忽略,就像在“ServiceProxy”中一样。我已经寻找解决方案大约一周了,但找不到它。在调试中,我可以看到中名为“TestTransformer”的转换器具有预期的负载(Object[])但当我在类调用者中收到它时,它显示为“NullPayload”。我现在可以看到我的一个终结点具有path元素而不是ref,不确定这是否会对流造成任何影响,但会检查它。还尝试使用“response”块确保流按预期运行。欢迎提供任何建议。谢谢 我的配置如下所示:Mule 骡子奇怪的流动行为,mule,Mule,我正在使用mule 3.2.0和 我在java类中调用muleclient.send方法,该方法将soap请求发送到mule流(此处不存在),该流将其发送到http端点,该端点接收请求,使用代理模式将其记录到我的数据库,并将其传播到“ServiceFlow”,该“ServiceFlow”具有Dispatcher transformer-java类,该类使用muleclient.send调用(字符串url、对象有效负载、映射消息属性)方法将有效负载数组的一个对象分派到端点。 然后它被cxf:jax
<http:endpoint name="httpService" address="${service.soap}" exchange-pattern="request-response" responseTimeout="${timeout}" />
<vm:endpoint name="vmService" path="vmService" exchange-pattern="request-response"/>
<pattern:web-service-proxy
name="ServiceProxy"
inboundEndpoint-ref="httpService"
transformer-refs="to-string logging"
responseTransformer-refs="to-string logging"
outboundEndpoint-ref="vmService" />
<flow name="ServiceFlow" >
<inbound-endpoint ref="vmService"/>
<cxf:jaxws-service serviceClass="pkg.ServiceImpl" wsdlLocation="${service.wsdl}" enableMuleSoapHeaders="false" validationEnabled="true"/>
<custom-transformer class="pkg.Dispatcher">
<spring:property name="vmFlowPath" value="vm.logService"/>
</custom-transformer>
<custom-transformer name="TestTransformer" class="pkg.TestTransformer"/>
</flow>
<vm:endpoint name="vm1In" path="vm1In" exchange-pattern="request-response"/>
<vm:endpoint name="vm1Out" path="vm1Out" exchange-pattern="request-response"/>
<custom-transformer name="arrayGenerator" class="pkg.ArrayGenerator"/>
<custom-transformer name="objectExtractor" class="pkg.ObjectExtractor"/>
<custom-transformer name="faultChecker" class="pkg.FaultChecker"/>
<custom-transformer name="objectLogging" class="pkg.ObjectLogger">
<pattern:web-service-proxy
name="1Proxy"
inboundEndpoint-ref="vm1In"
transformer-refs="arrayGenerator objectLogging"
responseTransformer-refs="objectLogging objectExtractor faultChecker"
outboundEndpoint-ref="vm1Out" />
<flow name="logService">
<vm:inbound-endpoint path="vm.logService exchange-pattern="request-response"/>
<custom-transformer class="Test1"/>
<vm:outbound-endpoint ref="vm1In">
<cxf:jaxws-client
serviceClass="pkg.ServiceImpl"
operation="import"
enableMuleSoapHeaders="false"/>
<object-to-string-transformer/>
</vm:outbound-endpoint>
<object-to-xml-transformer>
<xm:xml-to-object-transformer returnClass="pkg.WSResponseClass"/>
<custom-transformer class="Test2"/>
</flow>
<flow name="DispatcherToServiceFlow">
<custom-transformer class="Test3"/>
<vm:inbound-endpoint path="vm1.Out"/>
<custom-transformer class="pkg.Dispatcher">
<spring:property name="vmFlowPath" value="vm.import"/>
</custom-transformer>
</flow>
<flow name="import">
<vm:inbound-endpoint path="vm.import" exchange-pattern="request-response"/>
<http:outbound-endpoint address="${importService}" responseTimeout="${timeout}" exchange-pattern="request-response" />
<object-to-string-transformer/>
<custom-transformer class="Test4"/>
</flow>
好的,我的问题实际上是“path”元素,而不是使用“ref”元素引用现有的vm端点,如
<inbound-endpoint ref="vm1Out"/>
请使用问题上的编辑链接添加其他信息。回答后按钮应仅用于问题的完整答案。但如果这是我问题“奇怪的流动行为”的完整答案呢?我的意思是问题出在错误的端点引用上?