由于顺序中的两个发送介体导致尝试代理错误

时间:2013-04-17 05:53:56

标签: wso2 wso2esb

我的代码:

<filter xpath="get-property('statusFromClassMed')='Valid'">
                              <then>
                                 <log level="custom">
                                    <property name="InsideValidFilter" value="--------State is Valid-------"/>
                                 </log>
                                 <log level="custom">
                                    <property name="STATE" value="message is sent to queue"/>
                                 </log>
                                 <property name="OUT_ONLY" value="true"/>
                                 <property name="FORCE_SC_ACCEPTED" value="true" scope="axis2"/>
                                 ***<send>
                                    <endpoint key="jmsMBendpoint"/>
                                 </send>***
                                 <header name="To" action="remove"/>
                                 <property name="RESPONSE" value="true" scope="default" type="STRING"/>
                                 <property name="NO_ENTITY_BODY" scope="axis2" action="remove"/>
                                 <payloadFactory>
                                    <format>
                                       <ns1:PostPublicationResponse xmlns:ns1="http://www.openoandm.org/xml/ISBM/">
                                          <ns1:MessageID>$1</ns1:MessageID>
                                          <ns1:MessageContent>$2</ns1:MessageContent>
                                       </ns1:PostPublicationResponse>
                                    </format>
                                    <args>
                                       <arg expression="get-property('getMessageIDFromClassMed')"/>
                                       <arg expression="get-property('MessageContent')"/>
                                    </args>
                                 </payloadFactory>
                                 ***<send/>***
                              </then>
                              <else>
                                 <log level="custom">
                                    <property name="InsideNonValidFilter" value="--------State is InValid-------"/>
                                 </log>
                                 <header name="To" action="remove"/>
                                 <property name="RESPONSE" value="true" scope="default" type="STRING"/>
                                 <property name="NO_ENTITY_BODY" scope="axis2" action="remove"/>
                                 <payloadFactory>
                                    <format>
                                       <soapenv:Fault xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope">
                                          <soapenv:Code>
                                             <soapenv:Value>soapenv:Receiver</soapenv:Value>
                                          </soapenv:Code>
                                          <soapenv:Reason>
                                             <soapenv:Text xml:lang="en-US">Invalid Parameter</soapenv:Text>
                                          </soapenv:Reason>
                                          <soapenv:Detail/>
                                       </soapenv:Fault>
                                    </format>
                                 </payloadFactory>
                                 <send/>
                              </else>
                           </filter>

我在In-Sequence中使用过滤器。如果过滤器为真,那么我必须将有效负载发送到我的端点中定义的消息代理队列,因此我使用发送中介,之后我必须将有效负载作为响应发送。但是由于使用了两个发送调解器,有时我会尝试使用try-it代理。如何解决这种情况? 还有一个问题?我在我的主题属性中传递了多个主题参数。但它只获得单一价值 提前致谢

1 个答案:

答案 0 :(得分:0)

如果要将响应发送回客户端,请在第一个发送中介使用“receiveSequence”选项,您将收到响应。在该序列中,定义您的其他中介逻辑..

  <send receive="recevingSeq">
      <endpoint>
         <address uri="https://localhost:9445/services/AppService" format="soap11"/>
      </endpoint>
   </send>