【问题标题】:Clone Mediaotor Not working in WSO2 ESB 4.8.1克隆 Mediaotor 在 WSO2 ESB 4.8.1 中不起作用
【发布时间】:2015-05-05 11:22:29
【问题描述】:

我已经定义了一个“验证”调解器故障序列。如果我的验证失败,我想要那个。消息应该发送回客户端以及基于 JMS 的队列。

问题:

克隆中介不工作。我正在使用克隆调解器将消息发送到队列,然后“响应”调解器将消息发送回客户端。

注意: 如果我删除克隆调解器,则消息将完美地发送回客户端。但是对于克隆调解器,它不起作用。

验证中介代码:

 <validate>
         <schema xmlns:ns2="http://org.apache.synapse/xsd" xmlns:ns="http://org.apache.synapse/xsd" key="gov:/xsd/testschema.xsd"></schema>
         <on-fail>
            <makefault version="soap11">
               <detail xmlns:ns2="http://org.apache.synapse/xsd" xmlns:ns="http://org.apache.synapse/xsd" expression="get-property('ERROR_DETAIL')"></detail>
            </makefault>
            <payloadFactory media-type="xml">
               <format>
                  <ErrorMessage xmlns="">
                     <ErrorCode>007</ErrorCode>
                     <ErrorMessage>Not Correct Request</ErrorMessage>
                  </ErrorMessage>
               </format>
            </payloadFactory>
            <clone continueParent="true" sequential="false">
               <target>
                  <endpoint>
                     <address uri="jms:/ErrorQueue?transport.jms.ConnectionFactoryJNDIName=QueueConnectionFactory&amp;java.naming.factory.initial=org.apache.activemq.jndi.ActiveMQInitialContextFactory&amp;java.naming.provider.url=tcp://localhost:61616&amp;transport.jms.DestinationType=queue"></address>
                  </endpoint>
               </target>
            </clone>
            <respond></respond>
         </on-fail>
      </validate>

例外:

未捕获的异常 {org.apache.axis2.transport.base.threads.NativeWorkerPool} java.lang.ClassCastException: org.apache.axiom.om.impl.llom.OMElementImpl 不能转换为 org.apache.axiom.soap.SOAPFault 在 org.apache.axiom.soap.impl.llom.SOAPBodyImpl.getFault(SOAPBodyImpl.java:120) 在 org.apache.synapse.util.MessageHelper.cloneSOAPEnvelope(MessageHelper.java:383) 在 org.apache.synapse.util.MessageHelper.cloneAxis2MessageContext(MessageHelper.java:233) 在 org.apache.synapse.util.MessageHelper.cloneMessageContext(MessageHelper.java:86) 在 org.apache.synapse.mediators.eip.splitter.CloneMediator.getClonedMessageContext(CloneMediator.java:159) 在 org.apache.synapse.mediators.eip.splitter.CloneMediator.mediate(CloneMediator.java:99) 在 org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:77) 在 org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:47) 在 org.apache.synapse.mediators.builtin.ValidateMediator.mediate(ValidateMediator.java:212) 在 org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:77) 在 org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:47) 在 org.apache.synapse.mediators.template.TemplateMediator.mediate(TemplateMediator.java:77) 在 org.apache.synapse.mediators.template.InvokeMediator.mediate(InvokeMediator.java:129) 在 org.apache.synapse.mediators.template.InvokeMediator.mediate(InvokeMediator.java:78) 在 org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:77) 在 org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:47) 在 org.apache.synapse.mediators.base.SequenceMediator.mediate(SequenceMediator.java:131) 在 org.apache.synapse.mediators.base.SequenceMediator.mediate(SequenceMediator.java:196) 在 org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:77) 在 org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:47) 在 org.apache.synapse.mediators.base.SequenceMediator.mediate(SequenceMediator.java:131) 在 org.apache.synapse.core.axis2.ProxyServiceMessageReceiver.receive(ProxyServiceMessageReceiver.java:166) 在 org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:180) 在 org.apache.synapse.transport.passthru.ServerWorker.processEntityEnclosingRequest(ServerWorker.java:411) 在 org.apache.synapse.transport.passthru.ServerWorker.run(ServerWorker.java:183) 在 org.apache.axis2.transport.base.threads.NativeWorkerPool$1.run(NativeWorkerPool.java:172) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)

注意: 我也没有在“克隆”中介的“SOAP 操作”字段中定义任何内容。

【问题讨论】:

    标签: soap wso2 wso2esb


    【解决方案1】:

    这是 ESB 4.8.1 中的一个错误。请检查此 [1]

    1.https://wso2.org/jira/browse/ESBJAVA-3087

    试试这个呼叫中介和丰富中介。我没有测试过。

    <validate>
             <schema xmlns:ns2="http://org.apache.synapse/xsd" xmlns:ns="http://org.apache.synapse/xsd" key="gov:/xsd/testschema.xsd"></schema>
             <on-fail>
                <makefault version="soap11">
                   <detail xmlns:ns2="http://org.apache.synapse/xsd" xmlns:ns="http://org.apache.synapse/xsd" expression="get-property('ERROR_DETAIL')"></detail>
                </makefault>
                <payloadFactory media-type="xml">
                   <format>
                      <ErrorMessage xmlns="">
                         <ErrorCode>007</ErrorCode>
                         <ErrorMessage>Not Correct Request</ErrorMessage>
                      </ErrorMessage>
                   </format>
                </payloadFactory>
    
            **<property name="BODY_ELEMENTS" expression="$body">**
                **<call>**
    
                      <endpoint>
                         <address uri="jms:/ErrorQueue?transport.jms.ConnectionFactoryJNDIName=QueueConnectionFactory&amp;java.naming.factory.initial=org.apache.activemq.jndi.ActiveMQInitialContextFactory&amp;java.naming.provider.url=tcp://localhost:61616&amp;transport.jms.DestinationType=queue"></address>
                      </endpoint>
    
                **</call>**
        **<enrich>
                <source xpath="$ctx:BODY_ELEMENTS/> 
                <target type="body"/>
        </enrich>**   
                <respond></respond>
             </on-fail>
          </validate>
    

    【讨论】:

    • 有没有其他的办法。或任何其他实现此目标的方法。
    • 检查我已经更新了答案,实际上当消息中存在soapfault时,中介行为异常,正如我所知道的克隆和xslt中介存在相同的错误。不确定丰富。检查是否可以正常工作
    • 丰富的“目标”操作应该是什么。它是“替换”、“孩子”或“兄弟姐妹”。
    • 我试过你的方法。消息已成功发送到队列。但没有响应发送回客户端。
    • 标签丰富操作是“替换”之前添加此属性
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-23
    • 2014-06-16
    • 1970-01-01
    相关资源
    最近更新 更多