Почему WSO2 PropertyMediator не запускает FaultSequence при возникновении исключения?

В прокси-последовательности или последовательности API, когда у нас есть определенная функция faultSequence, каждое исключение внутри этой последовательности должно запускать faultSequence.

Пример

    <target faultSequence="sub_handelFault_1.0">
    <inSequence onError="sub_handelFault_1.0">
        <property name="originalRequest" expression="$body/*[1]" type="OM" />

Когда посредник xslt выдает исключение (например, когда сообщение запроса не является правильно отформатированным XML), срабатывает функция faultSequence с правильной обработкой ошибок.

Но, что удивительно, PropertyMediator выдает исключение, которое никогда не запускает функцию faultSequence. Выполнение последовательности прерывается, и сообщение запроса теряется. Это очень опасно, особенно для асинхронных сообщений (JMS).

Вы можете проверить это, отправив не очень хорошо отформатированный XML в последовательность с посредником свойств.


person Osman Mrzljak    schedule 18.03.2015    source источник


Ответы (1)


В PropertyMediator (также в HeaderMediator) в 4.8.0 есть ошибка, поэтому исключение не обрабатывается должным образом. Это исправлено в patch0781. Если вы не можете применить этот патч, для этого есть обходной путь. Просто добавьте посредничество сценария, которое пытается прочитать полезную нагрузку XML. Это вызовет ошибку и правильную обработку ошибок, поэтому будет выполнена ошибкаSequence. Пример

<script language="js"><![CDATA[ 
     mc.getPayloadXML(); ]]></script>
person Osman Mrzljak    schedule 27.03.2015