wso2esb 4.8.1和4.9.0错误的不同行为

wso2esb 4.8.1和4.9.0错误的不同行为,wso2esb,Wso2esb,我有一个注册的错误序列 在版本4.8.1中,SOAP信封按错误顺序提供 而在4.9.0中则不是 为了在onError序列出错后访问4.9.0中的SOAP消息内容,我必须首先将其复制到某个临时变量。这很不方便 这可能是一个bug,还是4.9.0的一个新特性 这是我的错误顺序。如果我删除,中介信封将从序列中变为空,并出现错误。如果不使用Rich mediator,则消息包含空soap信封。它可以在日志中介器的输出和存储在RabbitMQ后端的消息中看到。实际上,这是XXXXNotifySendSeq

我有一个注册的错误序列

在版本4.8.1中,SOAP信封按错误顺序提供 而在4.9.0中则不是

为了在onError序列出错后访问4.9.0中的SOAP消息内容,我必须首先将其复制到某个临时变量。这很不方便

这可能是一个bug,还是4.9.0的一个新特性

这是我的错误顺序。如果我删除,中介信封将从序列中变为空,并出现错误。如果不使用Rich mediator,则消息包含空soap信封。它可以在日志中介器的输出和存储在RabbitMQ后端的消息中看到。实际上,这是XXXXNotifySendSequence序列的一个错误序列,我添加了它们作为参考

<?xml version="1.0" encoding="UTF-8"?>
<sequence name="XXXXNotifyErrorSequence" trace="disable" xmlns="http://ws.apache.org/ns/synapse">
    <log level="full">
                    <property name="mssg" expression="get-property('mssg')"/>
                    <property name="retry_count" expression="get-property('retry_count')"/>
                </log>
  <filter xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope" xpath="get-property('mssg')">
    <then>
      <enrich>
        <source clone="true" property="mssg" type="property"/>
        <target type="envelope"/>
      </enrich>
      <property name="mssg" action="remove"/>
    </then>
    <else/>
  </filter>



  <filter xmlns:ns="http://org.apache.synapse/xsd" xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope" xmlns:ns3="http://org.apache.synapse/xsd" xpath="get-property('retry_count')">
        <then>
            <property name="retry_count" expression="number(get-property('retry_count'))+1" scope="default" type="STRING"/>
            <filter xpath="get-property('retry_count') > 5">
                <then>
                    <log>
                        <property name="Dropping--Count" expression="get-property('retry_count')"/>
                    </log>
                    <drop/>
                </then>
                <else>
                    <sequence key="XXXXNotifySendSequence"/>
                </else>
            </filter>
        </then>
        <else>
            <property name="retry_count" value="1" scope="default" type="STRING"/>
            <clone continueParent="true">
                <target>
                    <sequence>
                        <makefault version="soap11">
                            <code xmlns:soap11Env="http://schemas.xmlsoap.org/soap/envelope/" value="soap11Env:VersionMismatch"/>
                            <reason expression="get-property('ERROR_MESSAGE')"/>
                        </makefault>
                        <send/>
                    </sequence>
                </target>
            </clone>
        </else>
    </filter>

    <clone>
        <target>
            <sequence>
                <log level="custom">
                    <property name="STORE" value="store the message"/>
                </log>
                <store messageStore="XXXXRabbitMQNative"/>
            </sequence>
        </target>
    </clone>

</sequence>
这是调用onError序列的序列

<?xml version="1.0" encoding="UTF-8"?>
<sequence name="XXXXNotifySendSequence"
  onError="XXXXNotifyErrorSequence" trace="disable" xmlns="http://ws.apache.org/ns/synapse">
  <log level="full">
    <property name="XXXX" value="request start"/>
  </log>
  <enrich>
    <source clone="true" type="envelope"/>
    <target property="mssg" type="property"/>
  </enrich>
  <property name="DISABLE_CHUNKING" scope="axis2" type="STRING" value="true"/>
  <call>
    <endpoint key="HTTPEndpoint"/>
  </call>
  <log level="full">
    <property name="XXXX" value="request end"/>
  </log>
</sequence>

我不太清楚你为什么那样写错误序列。但当我像吼叫一样改变时,它就起作用了。无需充实和转让给其他财产

序列:与您的相同-未触及

<?xml version="1.0" encoding="UTF-8"?>
<sequence name="XXXXNotifySendSequence"
    onError="XXXXNotifyErrorSequence" trace="disable" xmlns="http://ws.apache.org/ns/synapse">
    <log level="full">
        <property name="XXXX" value="request start"/>
    </log>
    <enrich>
        <source clone="true" type="envelope"/>
        <target action="replace" property="mssg" type="property"/>
    </enrich>
    <property name="DISABLE_CHUNKING" scope="axis2" type="STRING" value="true"/>
    <call>
        <endpoint key="HTTPEndpoint"/>
    </call>
    <log level="full">
        <property name="XXXX" value="request end"/>
    </log>
</sequence>
故障顺序:

<?xml version="1.0" encoding="UTF-8"?>
<sequence name="XXXXNotifyErrorSequence" trace="disable" xmlns="http://ws.apache.org/ns/synapse">
    <log>
        <property expression="get-property('ERROR_CODE')"
            name="========error-code=========" xmlns:ns="http://org.apache.synapse/xsd"/>
        <property expression="get-property('ERROR_MESSAGE')"
            name="========error-message=========" xmlns:ns="http://org.apache.synapse/xsd"/>
    </log>
    <makefault version="soap11">
        <code value="soap11Env:VersionMismatch" xmlns:soap11Env="http://schemas.xmlsoap.org/soap/envelope/"/>
        <reason expression="get-property('ERROR_MESSAGE')" xmlns:ns="http://org.apache.synapse/xsd"/>
        <role>sample</role>
        <detail>sample detail</detail>
    </makefault>
    <send/>
</sequence>
代理:调用序列

<?xml version="1.0" encoding="UTF-8"?>
<proxy xmlns="http://ws.apache.org/ns/synapse"
       name="samplecall"
       transports="http,https"
       statistics="disable"
       trace="disable"
       startOnLoad="true">
   <target inSequence="XXXXNotifySendSequence"/>
   <description/>
</proxy>
响应:因为没有定义终点

 <soapenv:Fault xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
   <faultcode xmlns:soap11Env="http://schemas.xmlsoap.org/soap/envelope/">soap11Env:VersionMismatch</faultcode>
   <faultstring>Couldn't find the endpoint with the key : HTTPEndpoint</faultstring>
   <faultactor>sample</faultactor>
   <detail>sample detail</detail>
</soapenv:Fault>
在日志中:

2015-11-08 17:19:55,250]  INFO - LogMediator To: /services/samplecall.samplecallHttpSoap11Endpoint, WSAction: urn:mediate, SOAPAction: urn:mediate, MessageID: urn:uuid:106d763f-cdc1-43d2-98a9-63d22d17eb81, Direction: request, XXXX = request start, Envelope: <?xml version='1.0' encoding='utf-8'?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Body/></soapenv:Envelope>
[2015-11-08 17:19:55,252]  INFO - LogMediator To: /services/samplecall.samplecallHttpSoap11Endpoint, WSAction: urn:mediate, SOAPAction: urn:mediate, MessageID: urn:uuid:106d763f-cdc1-43d2-98a9-63d22d17eb81, Direction: request, ========error-code========= = 305100, ========error-message========= = Couldn't find the endpoint with the key : HTTPEndpoint

你能分享一下你的故障序列,看看你说的不可用是什么意思吗?我已经添加了一个错误序列OK。但SOAP信封的内容在哪里?是否可以按错误顺序访问它?如果出现故障,我将消息存储在外部队列中,然后使用采样消息处理器从队列中读取消息并再次处理它们。这个想法来自-。