2011-10-18 4 views
6

Nous avons implémenté un mécanisme général qui enregistre les exceptions du serveur du côté client GWT. Naturellement, certains d'entre eux sont des exceptions inattendues (telles que NPE), et donc nous obtenons sorte de ces traces de pile dans notre journal (un extrait):Recherche de la trace de pile réelle Java à partir d'une trace de pile 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) 

Comment puis-je trouver le numéro de classe et ligne la source Java originale?

Je ne souhaite pas déployer une version compilée détaillée, car je n'ai pas d'informations sur le scénario exact et je ne peux pas reproduire l'exception.

+0

Cela signifie-t-il que vous devez sous-classer l'enregistreur pour chaque module et définir explicitement l'emplacement? –

Répondre

6

Le compilateur GWT émet le mappage dans les fichiers symbolMap dans les -deploy et -extra endroits (où -deploy par défaut WEB-INF/deploy du -war et -extra n'est pas émis par défaut).
Je l'utilise manuellement pour déboguer des choses étranges de temps en temps.

Vous pouvez également désobfecter des traces par programmation, en utilisant le StackTraceDeobfuscator.
FYI, cette classe est utilisée par le servlet RemoteLoggingServiceImpl GWT-RPC et le service RequestFactory Logging; appelés respectivement par les SimpleRemoteLogHandler et RequestFactoryLogHandler (ils sont java.util.logging.LogHandler que vous pouvez utiliser avec le logging API pris en charge par GWT). Dans ce cas, il se penche sur le WEB-INF/deploy de la webapp (c'est pourquoi -deploy y est par défaut).

+2

J'ai effectué ce qui suit: 1. Ajout de dans le fichier xml du module. –

+3

2. Remplacez RemoteLoggingServiceImpl et appelez setSymbolMapsDirectory ("WEB-INF/deploy/{Modulename}/symbolMaps /"). –

+0

Bien qu'il était dans la documentation, n'a pas eu à ajouter l'option -extra. Au moins, je n'ai vu aucune différence quand je l'ai ajouté. –