2013-03-14 2 views
2

У меня есть поток мула, который может генерировать исключение (невозможно подключиться к коннектору, исключению компонентов и т. Д.). Когда это происходит, поток мула останавливается там, где произошло исключение. Мне нужно поймать любое исключение, которое поток выбрасывает и отправляет уведомление об электронной почте, указывающее на то, что возникло исключение. (особенно для потоков, которые будут работать async как чтение из JMS). Какой элемент в потоке я должен использовать, чтобы поймать любое исключение и отправить eMail?Как поймать любое исключение в потоке мула

Я попытался:

<default-exception-strategy> 
     <smtp:outbound-endpoint host="${email.relay.host}" 
        mimeType="text/html" from="${email.support.from" to="${email.support.to}" 
        cc="${email.support.cc}" bcc="${email.support.bcc}" subject="${email.support.subject}"> 
      </smtp:outbound-endpoint> 
    </default-exception-strategy> 

, но это не становится стартовало вообще. Я также попытался:

<exception-type-filter expectedType="java.lang.Exception"></exception-type-filter> 

, но это, кажется, работает только тогда, когда поток генерирует исключение (нормальное функционирование потока изменяется).

@David Dossot - я добавил следующий фрагмент:

Я добавил следующий фрагмент:

<catch-exception-strategy> 
      <smtp:outbound-endpoint host="${email.relay.host}" 
          mimeType="text/html" from="${email.support.from" to="${email.support.to}" 
          cc="${email.support.cc}" bcc="${email.support.bcc}" subject="${email.support.subject}"> 
      </smtp:outbound-endpoint> 
    </catch-exception-strategy> 

, но я получаю ERRO при запуске мула приложения:

стек Root Exception trace: org.xml.sax.SAXParseException: cvc-complex-type.2.4.a: Неверный контент был найден, начиная с элемента 'catch-exception-strategy'. Один из «{« http://www.mulesoft.org/schema/mule/core »: abstract-message-processor,« http://www.mulesoft.org/schema/mule/core »: abstract-outbound-endpoint,« http://www.mulesoft.org/schema/mule/core »: ответ,« http://www.mulesoft.org/schema/mule/core »: abstract-exception-strategy,« http://www.mulesoft.org/schema/mule/core »: abstract-message-info- отображение} '. at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException (ErrorHandlerWrapper.java:195) at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.error (ErrorHandlerWrapper.java: 131) at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError (XMLErrorReporter.java:384) + еще 3 (установить регистрацию уровня отладки или '-Dmule.verbose.exceptions = true' для всего)


Я использую Mule 3.2.2. Не могли бы вы помочь?

ответ

2

В Mule 3.3 для этого я обычно использую catch-exception-strategy.

На Mule 3.2 и до этого, default-exception-strategy - правильный выбор, но возможно, что некоторые исключения не пойманы должным образом. Это было пересмотрено в Муле 3.3. Время обновления?

+0

@ddossot Я попытался добавить его в поток, но я получаю сообщение об ошибке при запуске мула. Не могли бы вы подтвердить, где это следует добавить? –

+0

@ddossot Спасибо Дэвиду. К сожалению, я не контролирую это! Другого пути нет? –

+0

Mule 3.2 настолько старый, что я точно не помню: возможно, можно настроить стратегию исключения на самом транспорте? –

1

попробуйте использовать этот. } отсутствовал.

<catch-exception-strategy> 
<smtp:outbound-endpoint host="${email.relay.host}" 
    mimeType="text/html" from="${email.support.from}" to="${email.support.to}" cc="${email.support.cc}" bcc="${email.support.bcc}" subject="${email.support.subject}"> 
</smtp:outbound-endpoint></catch-exception-strategy>