2012-01-23 20 views
16

Estoy tratando de recuperar el StackTrace desde el controlador onException en Apache Camel:StackTrace de camello Contexto onException

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

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

Sin embargo, lo anterior sólo muestra la excepción y no la totalidad del StackTrace.

Entiendo que Camel almacena la excepción detectada como una propiedad en el Exchange con la clave: Exchange.EXCEPTION_CAUGHT, pero ¿cómo puede recuperarse esto del archivo de rutas de contexto camel?

Respuesta

21

Utilice exception.stacktrace para obtener la stacktrace. Ver las variables enumeradas en la tabla en esta página: http://camel.apache.org/simple

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

También hay un $ {} Exception.Message para referirse al mensaje de excepción en sí.

+0

Gracias, esto funcionó muy bien. Crear un bean fue la otra alternativa que tenía en mente. –

+0

Gracias Claus. Solo una pregunta sobre esto: ¿también es posible usar 'exception.class'? – vikingsteve

+0

Ok, respondí esto - sí, es posible. Pero es casi mejor simplemente usar 'exception' en la expresión simple, ya que eso le da el nombre de clase y el mensaje. – vikingsteve

Cuestiones relacionadas