2012-01-23 7 views
16

Próbuję pobrać StackTrace z obsługi onException w Apache Camel:StackTrace z Camel Kontekst onException

<onException> 
      <exception>java.lang.Exception</exception> 
      <handled> 
       <constant>true</constant> 
      </handled> 

      <setHeader headerName="exception"> 
       <simple>${exception}</simple> 
      </setHeader> 
    </onException> 

Jednak powyżej pokazuje tylko raczej wyjątek niż całą StackTrace.

Rozumiem, że Camel przechowuje złapany wyjątek jako właściwość na giełdzie za pomocą klucza: Exchange.EXCEPTION_CAUGHT, ale w jaki sposób można go pobrać z pliku tras kontekstowych wielbłądów?

Odpowiedz

21

Użyj pliku exception.stacktrace, aby pobrać stos śledzenia. Zobacz zmienne wymienione w tabeli na tej stronie: http://camel.apache.org/simple

<simple>${exception.stacktrace}</simple> 

Istnieje również $ {exception.message}, aby zapoznać się z komunikatem wyjątku samego.

+0

Dzięki, to działało. Tworzenie fasoli było drugą alternatywą, którą miałem na myśli. –

+0

Dzięki Claus. Tylko pytanie na ten temat - czy możliwe jest również użycie 'exception.class'? – vikingsteve

+0

OK, odpowiedziałem na to - tak, to możliwe. Ale lepiej użyć po prostu 'wyjątku' w prostym wyrażeniu, ponieważ daje to nazwę klasy i wiadomość. – vikingsteve