当前位置: 首页 > 知识库问答 >
问题:

克隆Mediaotor在WSO2 ESB 4.8.1中不工作

景辰钊
2023-03-14

验证中介代码:

 <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.impl.llom.soapbodyImpl.getFault(SoapbodyImpl.java:120)在org.apache.synapse.util.messageHelper.cloneAxis2MessageContext(MessageHelper.util)在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)在.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.mediate(abstractListMediator.java:47)在org.apache.synapse.mediators.templateediator.mediate(templatemediator.java:77)在Mediators.abstractListMediator.mediate(AbstractListMediator.java:77)在org.apache.synapse.mediators.abstractListMediator.mediate(AbstractListMediator.java:47)在org.apache.synapse.mediators.base.SequenceMediator.mediate(AbstractListMediator.mediate(AbstractListMediator.java:131)在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.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 action”字段中定义任何内容。

共有1个答案

万高畅
2023-03-14

这是ESB 4.8.1中的一个bug。请检查这个[1]

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

请使用call mediator和enrich mediator来尝试我没有测试过这个。

<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>
 类似资料:
  • 我正试图用OptaPlanner解决时间表问题,但我面临的问题可能与克隆问题有关。为什么我的计划实体收集方法看起来像这样 我犯错了 但是,当方法看起来像 一切都还好。有什么理由呢?为什么我会出现这个错误?谢谢你的帮助。

  • 我正在研究jquery克隆。其中我有一个div和三个元素。第一个元素是select下拉,第二个是text box,第三个是add Button。当用户单击add按钮时,它就完美地克隆了整个div。但是,如果用户从下拉列表的值中选择为“其他”,则需要启用最接近的文本框,这将是第一次运行良好。如果用户单击“添加”按钮,则文本框应处于禁用模式,因为用户尚未从下拉字段中选择另一个。 这是我的jquery代

  • 问题内容: 在node.js中克隆对象的最佳方法是什么 例如,我想避免以下情况: 该对象很可能包含复杂的类型作为属性,因此简单的for(var1 in obj1)无法解决。我需要自己编写一个递归克隆吗,还是内置了一些我看不到的东西? 问题答案: 可能性1 简洁的深层副本: 可能性2(已弃用) 注意: 现在,Node.js文档中将该解决方案标记为不推荐使用: 从未打算在内部Node.js模块之外使用

  • 问题内容: 有没有一种方法可以克隆的实例而无需将其字符串化并重新解析结果? 浅表副本是可以接受的。 问题答案: 使用构造函数和方法。

  • 本文向大家介绍在MongoDB中克隆集合吗?,包括了在MongoDB中克隆集合吗?的使用技巧和注意事项,需要的朋友参考一下 要在MongoDB中克隆集合,可以使用方法。让我们首先用文档创建一个集合。 使用文档创建集合的查询如下- 在method的帮助下显示集合中的所有文档。查询如下- 以下是输出- 这是在MongoDB中进行克隆的查询- 让我们在MongoDB中检查克隆集合的文档。查询如下- 以下

  • 更新:该错误似乎与我拥有的.babelrc文件有关: 当我移除这个文件时,错误就消失了。 原帖: 我正在使用React与包裹捆绑器。首先,我有一个问题,与我的包裹版本和@babel/preset-env(无效版本:未定义)不兼容有关。 我通过在package.json文件中添加一个resolutions标记来解决问题,以强制使用不需要version对象的以前版本的Babel。这起作用了,但现在我在