Soap 克隆MediaTor在WSO2 ESB 4.8.1中不工作
我已经定义了一个“验证”中介故障序列。如果我的验证失败,我希望这样。消息应该发送回客户机以及基于JMS的队列 问题: 克隆中介程序不工作。我使用克隆中介器将消息发送到队列,然后使用“响应”中介器将消息发送回客户端 注意: 如果我删除克隆中介器,消息将完美地发送回客户端。但使用克隆中介器时,它不起作用 验证中介代码:Soap 克隆MediaTor在WSO2 ESB 4.8.1中不工作,soap,wso2,wso2esb,Soap,Wso2,Wso2esb,我已经定义了一个“验证”中介故障序列。如果我的验证失败,我希望这样。消息应该发送回客户机以及基于JMS的队列 问题: 克隆中介程序不工作。我使用克隆中介器将消息发送到队列,然后使用“响应”中介器将消息发送回客户端 注意: 如果我删除克隆中介器,消息将完美地发送回客户端。但使用克隆中介器时,它不起作用 验证中介代码: <validate> <schema xmlns:ns2="http://org.apache.synapse/xsd" xmlns:ns="h
<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&java.naming.factory.initial=org.apache.activemq.jndi.ActiveMQInitialContextFactory&java.naming.provider.url=tcp://localhost:61616&transport.jms.DestinationType=queue"></address>
</endpoint>
</target>
</clone>
<respond></respond>
</on-fail>
</validate>
007
请求不正确
例外情况:
<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&java.naming.factory.initial=org.apache.activemq.jndi.ActiveMQInitialContextFactory&java.naming.provider.url=tcp://localhost:61616&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.ClonesoapenDevelope(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操作”字段中定义任何内容。这是ESB 4.8.1中的一个错误。请检查此[1] 一, 使用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&java.naming.factory.initial=org.apache.activemq.jndi.ActiveMQInitialContextFactory&java.naming.provider.url=tcp://localhost:61616&transport.jms.DestinationType=queue"></address>
</endpoint>
**</call>**
**<enrich>
<source xpath="$ctx:BODY_ELEMENTS/>
<target type="body"/>
</enrich>**
<respond></respond>
</on-fail>
</validate>
007
请求不正确
****
****
****
**
还有别的办法吗。检查我已经更新了答案,事实上,当消息中存在soapfault时,中介行为异常,正如我所知,克隆和xslt中介存在相同的错误。不确定充实。检查这是否有效,然后确定充实“目标”行动应该是什么。它不是“替换”、“孩子”就是“兄弟姐妹”。我试过你的方法。消息已成功发送到队列。但没有响应发送回客户端。请在标记充实操作为“替换”之前添加此属性