【问题标题】:mule weird flow behavior骡子奇怪的流动行为
【发布时间】:2012-12-14 20:58:45
【问题描述】:

我正在使用 mule 3.2.0 和 我在 java-class 中调用 muleclient.send 方法,该方法将soap-request发送到mule流(此处不存在),它将其发送到接收请求的http端点,使用代理模式将其记录到我的数据库并将其传播到具有 Dispatcher 转换器的“ServiceFlow” - java 类,它使用 MuleClient.send(String url, Object payload, Map messageProperties) 方法将有效负载数组的一个对象分派到端点。 然后它由 cxf:jax-ws-client 处理,再次登录到数据库并传输到 Dispatcher 的另一个实例(其中传入的有效负载再次是 Object[] 类型)。那里有执行服务调用的 http 端点。这部分工作正常。 但是在收到响应时出现了麻烦。我已经放置了 Test1(2,3,4) 转换器来打印我的流程中的调用链(它们只是执行 System.out.println()),并看到它们以奇怪的顺序被调用:我有像 1,3 然后是 TestTransformer(也是 sysouter)然后我在主流程“服务流”的调用者中收到错误“NullPayload”,然后我收到测试 4 和测试 2 输出。模式“1Proxy”中的 responseTransformer-refs 将被忽略,就像在“ServiceProxy”中一样。我一直在寻找一个星期的解决方案,但找不到它。在调试中,我可以看到名为“TestTransformer”的转换器具有预期的有效负载(Object []),但是当我在类调用者中收到它时,它显示为“NullPayload”。我现在可以看到我的一个端点有 path 元素而不是 ref,不确定这是否会对流造成任何影响,但会检查它。还尝试使用“响应”块来确保我的流程按预期运行。任何建议表示赞赏。谢谢

这是我的配置:

<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>

【问题讨论】:

    标签: mule


    【解决方案1】:

    好吧,我的问题确实是“路径”元素,而不是像

    <inbound-endpoint ref="vm1Out"/>
    

    【讨论】:

    • 请使用您问题上的编辑链接添加更多信息。 Post Answer 按钮应仅用于问题的完整答案。
    • 但是如果这是对我的问题“奇怪的流动行为”的完整答案呢?我的意思是问题是错误的端点引用?
    猜你喜欢
    • 1970-01-01
    • 2014-07-09
    • 1970-01-01
    • 2017-04-09
    • 2015-09-18
    • 1970-01-01
    • 1970-01-01
    • 2021-12-02
    • 1970-01-01
    相关资源
    最近更新 更多