2
我追逐什麼應該是一個簡單的NullPointerException但Web服務代理不斷吞嚥錯誤。如何讓Java WebService真正向代理對象顯示異常?
WS通過簡單的客戶端庫公開,該客戶端然後調用WS。在WS的某個地方有一個NPE,我無法找到它,因爲堆棧跟蹤只顯示「$ Proxy.someMethod」而不是問題的原因。
如何從代理對象獲取堆棧跟蹤?記錄或處理這些異常是否有很好的策略?
...
Caused by: javax.xml.ws.soap.SOAPFaultException: java.lang.NullPointerException
at com.sun.xml.ws.fault.SOAP11Fault.getProtocolException(SOAP11Fault.java:187)
at com.sun.xml.ws.fault.SOAPFaultBuilder.createException(SOAPFaultBuilder.java:116)
at com.sun.xml.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:254)
at com.sun.xml.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:224)
at com.sun.xml.ws.client.sei.SEIStub.invoke(SEIStub.java:117)
******** I need the trace from this line *********
at $Proxy43.myMethod(Unknown Source)
*****************
at com.mypackage.client.MyClient.aMethod(MyClient.java:70)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.mozilla.javascript.MemberBox.invoke(MemberBox.java:161)
... 17 more
我已經做了一些閱讀,似乎這與檢查與未檢查的異常有關。所以如果我拋出一個IOException異常,我會得到堆棧跟蹤,但是因爲有一個NullPointerException冒泡,所以它沒有給我跟蹤。
我們處於開發/測試階段,因此它有助於在客戶端獲得完整的堆棧跟蹤。我們的測試人員可以向我們發送客戶端錯誤,而不是給我們發送無用的痕跡,大量掙扎給我一個時間戳,然後讓我的團隊去釣魚通過日誌。 – Freiheit 2010-11-02 13:25:44
@Freiheit - 我已經重新做了我的答案,並檢查它的工作原理。希望有幫助。 – Catchwa 2010-11-03 01:30:51
聽起來像它會起作用。公認。這也讓我更接近於返回有用的錯誤代碼/消息,而不僅僅是噴出堆棧跟蹤。 – Freiheit 2010-11-03 14:13:42