代码之家  ›  专栏  ›  技术社区  ›  Freiheit

如何获取Java Web服务,以实际显示代理对象中的异常?

  •  2
  • Freiheit  · 技术社区  · 14 年前

    我正在寻找一个简单的NullPointerException,但是一个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冒泡,所以它没有给我跟踪。

    1 回复  |  直到 14 年前
        1
  •  1
  •   Catchwa    14 年前

    将服务包装在一个try/catch块中,并抛出在WSDL中定义为被调用服务的错误元素的异常。这样客户机将得到一个可用的stacktrace。