2011-10-18 33 views
6

Chúng tôi đã triển khai một cơ chế chung để ghi lại các ngoại lệ của máy chủ từ phía máy khách GWT. Đương nhiên, một số trong số đó là trường hợp ngoại lệ bất ngờ (chẳng hạn như NPE), và do đó chúng tôi đang nhận được loại những đống dấu vết trong nhật ký của chúng tôi (một đoạn trích):Tìm dấu vết ngăn xếp thực tế Java từ theo dõi ngăn xếp 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) 

Làm thế nào tôi có thể tìm thấy những lớp và dòng số ở nguồn java gốc?

Tôi không muốn triển khai phiên bản được biên dịch chi tiết, vì tôi không có thông tin về kịch bản chính xác và tôi không thể tạo lại ngoại lệ.

+0

Vậy điều đó có nghĩa là bạn cần phải phân lớp nhật ký cho mỗi mô-đun và đặt vị trí một cách rõ ràng? –

Trả lời

6

Trình biên dịch GWT kết quả đầu ra các bản đồ trong các tập tin symbolMap tại các địa điểm -deploy-extra (nơi -deploy mặc định là 's WEB-INF/deploy, và -extra không được phát ra theo mặc định -war).
Tôi sử dụng nó theo cách thủ công để gỡ lỗi những điều kỳ lạ theo thời gian.

Bạn cũng có thể khử dấu vết theo trình tự, bằng cách sử dụng StackTraceDeobfuscator.
FYI, lớp này được sử dụng bởi RemoteLoggingServiceImpl servlet GWT-RPC và dịch vụ Logging RequestFactory; tương ứng được gọi là SimpleRemoteLogHandlerRequestFactoryLogHandler (chúng là java.util.logging.LogHandler s mà bạn có thể sử dụng với số logging API mà GWT hỗ trợ). Trong trường hợp này, nó nhìn vào WEB-INF/deploy của webapp (đó là lý do tại sao -deploy mặc định ở đó).

+2

Tôi đã làm như sau: 1. Thêm vào tệp xml mô-đun. –

+3

2. Ghi đè RemoteLoggingServiceImpl và gọi tới setSymbolMapsDirectory ("WEB-INF/deploy/{Modulename}/symbolMaps /"). –

+0

Mặc dù nó nằm trong tài liệu, không phải thêm tùy chọn -extra. Ít nhất, tôi không thấy bất kỳ sự khác biệt nào khi tôi thêm nó. –

Các vấn đề liên quan