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