2011-10-18 24 views
6

Abbiamo implementato un meccanismo generale che registra le eccezioni del server dal lato client GWT. Naturalmente, alcuni di loro sono eccezioni impreviste (come NPE), e quindi ci sono sempre i tipi di queste tracce di stack nel nostro registro (un estratto):Individuazione della traccia dello stack effettivo Java da una traccia stack 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) 

Come posso trovare il numero della classe e la linea in la fonte java originale?

Non voglio distribuire una versione compilata dettagliata, poiché non ho informazioni sullo scenario esatto e non riesco a riprodurre l'eccezione.

+0

Ciò significa che è necessario creare una sottoclasse del logger per ogni modulo e impostare la posizione in modo esplicito? –

risposta

6

Il compilatore GWT emette la mappatura nei file symbolMap nelle posizioni -deploy e -extra (dove -deploy default s' WEB-INF/deploy, e -extra non viene emesso per default il -war).
Io lo uso manualmente per eseguire il debug di cose strane di volta in volta.

È anche possibile deoffuscare le tracce a livello di programmazione, utilizzando StackTraceDeobfuscator.
FYI, questa classe è utilizzata dal servlet GWT-RPC RemoteLoggingServiceImpl e dal servizio RequestFactory Logging; rispettivamente chiamati da SimpleRemoteLogHandler e RequestFactoryLogHandler (sono java.util.logging.LogHandler s che è possibile utilizzare con il logging API supportato da GWT). In questo caso, viene esaminato lo WEB-INF/deploy dell'applicazione Web (motivo per cui i valori predefiniti sono -deploy).

+2

Ho eseguito le operazioni seguenti: 1. Aggiunto nel file xml del modulo. –

+3

2. Sovrascrivere RemoteLoggingServiceImpl e chiamare setSymbolMapsDirectory ("WEB-INF/deploy/{Modulename}/symbolMaps /"). –

+0

Sebbene fosse presente nella documentazione, non è stato necessario aggiungere l'opzione -extra. Almeno, non ho visto alcuna differenza quando l'ho aggiunto. –

Problemi correlati