我在评估WSO2 esb并尝试这个简单的用例:
jms - > (esb) - > WebService(WSO2应用程序服务器上的HelloService) 发送响应jms队列的响应(结束点EPQ_ESB_OUT) 将故障发送到jms队列(终点EPQ_ESB_ERR)
当我停止WSO2 Application Server时,会调用故障序列并向EPQ_ESB_ERR发送一条消息,但该消息始终为空...
我尝试过使用makefault和buildfactory mediators,但两种情况都失败了(两种情况都是空信息)。
我的代理人:
<?xml version="1.0" encoding="UTF-8"?>
<proxy xmlns="http://ws.apache.org/ns/synapse" name="Test04Proxy02" transports="jms" startOnLoad="true" trace="enable">
<target>
<endpoint key="EPW_HelloService"/>
<inSequence>
<log>
<property name="STEP" value="==== INseq"/>
</log>
</inSequence>
<outSequence>
<property name="OUT_ONLY" value="true"/>
<log>
<property name="STEP" value="==== OUTseq"/>
</log>
<send>
<endpoint key="EPQ_ESB_OUT"/>
</send>
</outSequence>
<faultSequence>
<property name="OUT_ONLY" value="true" scope="default" type="STRING"/>
<log level="full">
<property name="STEP" value="==== FAULTseq"/>
<property name="ERROR_CODE" expression="get-property('ERROR_CODE')"/>
<property name="ERROR_MESSAGE" expression="get-property('ERROR_MESSAGE')"/>
<property name="ERROR_DETAIL" expression="get-property('ERROR_DETAIL')"/>
</log>
<payloadFactory>
<format>
<ns:text xmlns:ns="http://myns">$1</ns:text>
</format>
<args>
<arg xmlns:ns="http://myns"
evaluator="xml"
expression="get-property('ERROR_MESSAGE')"/>
</args>
</payloadFactory>
<send>
<endpoint key="EPQ_ESB_ERR"/>
</send>
</faultSequence>
</target>
</proxy>
任何帮助都会受到赞赏。感谢。
答案 0 :(得分:0)
只是一个猜测:
也许你在使用namesspace有一些问题。 WSO似乎广泛使用ns
命名空间,因此我会尝试在您的有效负载工厂中使用不同的命名空间,例如
<payloadFactory>
<format>
<myns:text xmlns:myns="http://myns">$1</myns:text>
</format>
<args>
<arg evaluator="xml" expression="get-property('ERROR_MESSAGE')"/>
</args>
</payloadFactory>
(您实际上不需要<arg>
元素中的命名空间定义)
答案 1 :(得分:0)
问题解决了:
替换为
<makefault version="soap11">
<code expression="get-property('ERROR_CODE')"/>
<reason expression="get-property('ERROR_MESSAGE')"/>
</makefault>
并添加了
<parameter name="transport.jms.ContentType">
<rules>
<jmsProperty>contentType</jmsProperty>
<default>application/xml</default>
</rules>
</parameter>
在结束标记之前。
现在不知道为什么它可以用这个参数...