Мул — обработка ошибок

В Mule я использую стратегию перехвата исключений, на которую ссылается «сложный» поток. Я поместил компонент jdbc в стратегию исключений, чтобы обновить запись таблицы в случае ошибки. Как я могу получить доступ к трассировке стека исключений, чтобы зарегистрировать ее в этой таблице? Я проверил полезную нагрузку в начале стратегии исключения, и она имеет тип org.apache.commons.httpclient.methods.PostMethod, на самом деле я получил ошибку во время http-вызова.


person user1820620    schedule 04.09.2013    source источник


Ответы (1)


В стратегии исключения исключение недоступно в полезной нагрузке. Он доступен в переменной exceptionPayload объекта Message.

Использовать

Исключение исключения = (Exception)message.getExceptionPayload().getException();

Это дает объект ExceptionPaylaod, чей метод getException() предоставляет объект исключения.

Чтобы получить трассировку стека, используйте следующее.

StackTraceElement[] ste = exception.getCause().getStackTrace();

Оттуда вы можете продолжить по мере необходимости.

Надеюсь это поможет.

person user1760178    schedule 04.09.2013
comment
Спасибо, это полезно. Я получаю сообщение об исключении Mule, которое не содержит трассировку стека java, которую я вижу в консоли (трассировка стека корневого исключения: java.net.UnknownHostException). Есть ли способ получить его? - person user1820620; 04.09.2013
comment
Более того, в MEL текущее исключение привязано к переменной exception. - person David Dossot; 04.09.2013
comment
Обновлен ответ с решением для получения StackTrace. - person user1760178; 04.09.2013
comment
Большое спасибо вам обоим, я использовал переменную исключения в отличном скрипте и exception.getCause().getStackTrace(), чтобы получить stackTrace. - person user1820620; 05.09.2013