SOAP Handler实现打破了webservice

时间:2014-08-15 02:20:28

标签: java web-services soap handler

我有一个非常简单的SOAP客户端,我是在wsimport实用程序的帮助下针对我自己的webservice创建的。客户端工作原理非常好,但是当我添加一个处理程序时,它会中断。下面是我的工作客户,打印' 1'到控制台...

public class MyFirstSoapClient {

    public static void main(String args[]) {    

        SuperSimpleServiceService sib = new SuperSimpleServiceService();
        ServiceEndpointInterface sei = sib.getSuperSimpleServicePort();

        System.out.println(sei.return1());
    }
}

现在对于有趣的部分,这里是与处理程序实现相同的客户端,后跟输出...

public class MyFirstSoapClient {

    public static void main(String args[]) {

        SuperSimpleServiceService sib = new SuperSimpleServiceService();
        sib.setHandlerResolver(new HandlerRegistration());
        ServiceEndpointInterface sei = sib.getSuperSimpleServicePort();

        System.out.println(sei.return1());

    }
}

输出

MyHandler: getHeaders
MyHandler: handleMessage
MyHandler: close
Exception in thread "main" com.sun.xml.internal.ws.streaming.XMLStreamReaderException: unexpected XML tag. expected: {http://interfaces.wsd.oce/}return1Response but found: {http://interfaces.wsd.oce/}return1
    at com.sun.xml.internal.ws.streaming.XMLStreamReaderUtil.verifyTag(Unknown Source)
    at com.sun.xml.internal.ws.streaming.XMLStreamReaderUtil.verifyTag(Unknown Source)
    at com.sun.xml.internal.ws.client.sei.ResponseBuilder$DocLit.readResponse(Unknown Source)
    at com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(Unknown Source)
    at com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(Unknown Source)
    at com.sun.xml.internal.ws.client.sei.SEIStub.invoke(Unknown Source)
    at com.sun.proxy.$Proxy24.return1(Unknown Source)
    at oce.wsd.client.MyFirstSoapClient.main(MyFirstSoapClient.java:22)

请注意,在输出中,在异常之前打印了3行,这些行来自我的处理程序类,这证明它已注册并正常工作。我意识到这是有限的信息,但我不知道哪里可以解决这个问题。任何想法从哪里开始?如果有任何其他课程有帮助,请告诉我。

1 个答案:

答案 0 :(得分:6)

我在使用虚拟SoapHandler实现时遇到了同样的问题。 (与您的日志相同的调用顺序:getHeaders,handleMessage,close,Exception)。 结果我的问题是从handleMessage方法返回false。文档说明:"返回true以继续处理。" http://docs.oracle.com/javase/6/docs/api/javax/xml/ws/handler/Handler.html