当前位置: 首页 > 知识库问答 >
问题:

SOAP处理程序实现破坏了Web服务

马权
2023-03-14

我有一个非常简单的SOAP客户机,它是我在wsimport实用程序的帮助下针对自己的web服务创建的。客户端工作得非常好,但是当我添加一个处理程序时就崩溃了。下面是我的工作客户端,它将“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个答案

景承教
2023-03-14

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

 类似资料:
  • 我创建了一个应用程序,按照指南http://spring.io/guides/gs/producing-web-service/ 执行Web服务“getCountry”工作正常,但现在我需要在执行getCountry之前拦截SOAP消息。 我创建了一个实现“SOAPHandler”的类,但在将请求传递给getCountry之前,我必须告诉spring boot使用这个处理程序。 知道怎么做吗?

  • 我正在从一个空的MVC构建一个OWIN登录,我刚刚开始添加这个部分,在创建一个要放入URL的身份声明之后,使用我的数据库登录用户。 这是我创建登录用户声明的代码 这是我的Show.cshtml代码 这是我的代码,我调用我的数据库,并为登录用户存储我的数据 我的登录(登录模型输入)完成并返回到Show.cshtml,然后在这里有一个异常@Html。AntiForgeryToken().我得到的例外是

  • 问题内容: 我遇到了一个我无法解释的奇怪问题。我希望有人可以帮助您! 我正在运行Python 2.7.3和Scipy v0.14.0,并试图实现一些非常简单的多处理器算法,以使用该模块加速我的代码。我设法使一个基本的示例工作: 运行正常,返回 但是,如果我取消注释该行,则会得到: 而且我可以看到只有一个核心在我的系统上进行工作。实际上,从scipy包导入任何模块似乎都具有这种效果(我已经尝试了几次

  • 问题内容: 我有一个SOAP消息处理程序,它能够获取Web服务响应的原始XML。我需要将此XML放入Web服务客户端,以便可以在响应发送之前对响应执行一些XSL转换。我在寻找一种从SOAP处理程序获取数据的好方法方面遇到了麻烦,该SOAP处理程序捕获传入的消息,并使原始XML可用于生成的(从WSDL)Web服务客户端。有什么想法甚至可行吗? 我想出了这样的东西: 在非常简单的测试中,这似乎可行。但

  • 要求 > 需要调用一个带有wsdl的webservice,它不会通过浏览器打开。 我有一个wsdl文档,其中给出了一个虚拟endpoint。 一旦存根类等生成,终端应该在运行时更改。 必须调用第三方方法,该方法将在SOAP消息中添加头,该方法将只接受SOAP消息,该方法必须从我们应该添加到流中的SoapHandler调用。 我已经尝试了以下所有方法 Axis 1.4服务运行良好,我可以访问SOAP

  • 问题内容: 当我尝试创建此错误时出现: 错误(E_UNKNOWN)::遇到意外错误MongoError:Server.insert(/ Users / oscargallon / Documents / developer / sails / reyesmagoswebpae / node_modules / sails- mongo / node_modules / mongodb / node