Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wso2 如何生成错误消息并将其发送给jms提供程序_Wso2_Wso2esb - Fatal编程技术网

Wso2 如何生成错误消息并将其发送给jms提供程序

Wso2 如何生成错误消息并将其发送给jms提供程序,wso2,wso2esb,Wso2,Wso2esb,我正在评估WSO2 esb并尝试以下简单用例: jms->(esb)->WebService(WSO2应用服务器上的HelloService) 将ws响应发送到jms队列(端点EPQ\U ESB\U OUT) 将错误发送到jms队列(端点EPQ\U ESB\U ERR) 当我停止WSO2应用程序服务器时,会调用故障序列并向EPQ_ESB_ERR发送一条消息,但消息始终为空 我尝试使用makefault和buildfactory中介,但在这两种情况下都失败了(两种情况下都是空消息) 我的代理人:

我正在评估WSO2 esb并尝试以下简单用例:

jms->(esb)->WebService(WSO2应用服务器上的HelloService) 将ws响应发送到jms队列(端点EPQ\U ESB\U OUT) 将错误发送到jms队列(端点EPQ\U ESB\U ERR)

当我停止WSO2应用程序服务器时,会调用故障序列并向EPQ_ESB_ERR发送一条消息,但消息始终为空

我尝试使用makefault和buildfactory中介,但在这两种情况下都失败了(两种情况下都是空消息)

我的代理人:

<?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>

$1
任何帮助都将不胜感激。谢谢。

猜猜看:
可能您在名称空间方面遇到了一些问题。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>

$1
(实际上,在
元素中不需要名称空间定义)

问题已解决:

取代。。。借

<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>

内容类型
应用程序/xml
就在结束标记之前


我真的不知道为什么它现在可以使用这个参数…

仍然通过更改名称空间或根本不使用名称空间来清空队列中的消息。