2011-10-18 39 views
6

Hemos implementado un mecanismo general que inicia sesión en las excepciones del servidor desde el lado del cliente GWT. Naturalmente, algunos de ellos son excepciones inesperadas (tales como NPE), y por lo tanto son cada tipo de estos seguimientos de pila en nuestro registro (un extracto):Encontrar el seguimiento de la pila real de Java desde un seguimiento de la pila de JavaScript

 
java.lang.Throwable: One or more exceptions caught, see full set in UmbrellaException#getCauses 
     at Unknown.Hq(Unknown Source) 
     at Unknown.ihb(Unknown Source) 
     at Unknown.anonymous(Unknown Source) 
     at Unknown.anonymous(Unknown Source) 
     at Unknown.anonymous(Unknown Source) 
Caused by: java.lang.Throwable: (TypeError): d is null 
stack: EG([object Object],[object Object])@http://domain/path/0B15791BA99231E6B88EAF3BDE38EB64.cache.html:3282 

fileName: http://domain/path/0B15791BA99231E6B88EAF3BDE38EB64.cache.html 
lineNumber: 3282 
     at Unknown.EG(Unknown Source) 
     at Unknown.DG(Unknown Source) 

¿Cómo puedo encontrar el número de clase y la línea de la fuente original de Java?

No quiero implementar una versión compilada detallada, ya que no tengo información sobre el escenario exacto y no puedo reproducir la excepción.

+0

¿Significa eso que debe subclasificar el registrador para cada módulo y establecer la ubicación explícitamente? –

Respuesta

6

El compilador GWT da salida a la asignación en archivos symbolMap en los lugares y -deploy-extra (donde -deploy por defecto el -war 's WEB-INF/deploy y -extra no se emite por defecto).
Lo uso manualmente para depurar cosas raras de vez en cuando.

También puede desofustar rastros mediante programación, utilizando el StackTraceDeobfuscator.
FYI, esta clase es utilizada por el servlet RemoteLoggingServiceImpl GWT-RPC y el servicio Logging RequestFactory; respectivamente llamados por SimpleRemoteLogHandler y RequestFactoryLogHandler (son java.util.logging.LogHandler s que puede usar con el logging API que admite GWT). En este caso, se ve en el WEB-INF/deploy de la aplicación web (por eso -deploy está predeterminado).

+2

Hice lo siguiente: 1. Agregué en el archivo xml del módulo. –

+3

2. Reemplazar RemoteLoggingServiceImpl y llamar a setSymbolMapsDirectory ("WEB-INF/deploy/{Modulename}/symbolMaps /"). –

+0

Aunque estaba en la documentación, no tuvo que agregar la opción -extra. Al menos, no vi ninguna diferencia cuando lo agregué. –

Cuestiones relacionadas