【问题标题】:My question is about javax.xml.ws.WebServiceException: Undefined port type while trying to get port?我的问题是关于 javax.xml.ws.WebServiceException:尝试获取端口时未定义的端口类型?
【发布时间】:2018-10-17 10:27:23
【问题描述】:

我想知道为什么我的客户端代码中有这个异常。 我只有一个 wsdl 和 Web 服务接口,并尝试调用一个方法哦这个 Web 服务。

这是我的客户端代码:

   URL url = new URL("file:/C:/Projects/wsdl2.wsdl");
   QName qname = new QName("http://impl.service.proxy.ma/", "SPWSImplService");
   Service service = Service.create(url, qname);
   SPIntWS sPIntWS = service.getPort(SPIntWS.class);

我看到了很多像我这样的情况,但在我的情况下,我无法在实现类的 @WebService 注释中给出 endpointIneterface。 这是一些日志:

 Exception in thread "main" javax.xml.ws.WebServiceException: Undefined port type: {http://ws.client/}SPIntWS
at com.sun.xml.internal.ws.client.WSServiceDelegate.getPort(WSServiceDelegate.java:349)
at com.sun.xml.internal.ws.client.WSServiceDelegate.getPort(WSServiceDelegate.java:355)
at javax.xml.ws.Service.getPort(Service.java:188)
at scci.client.application.Client.sPIntWSProcess(Client.java:74)
at scci.client.application.Client.main(Client.java:44)

感谢您的帮助。

【问题讨论】:

    标签: java web-services wsdl jax-ws


    【解决方案1】:

    在 URL 中您提到文件路径不是主机,因此您将其更改为

    URL url = new URL("file:/C:/Projects/wsdl2.wsdl");
    

    成为

    URL url = new URL("http://localhost:8080/Projects/wsdl2.wsdl");
    

    将 wsdl 文件放在工作区文件夹下。

    【讨论】:

    • 当我按照你所说的进行更改时,我的连接超时,我认为问题不在于这一点。
    • 是的,您应该首先定义服务端点接口 (SEI)。SEI 通常是标准 Java 接口。这将是 WSDL 文档中的“wsdl:portType”元素。 SEI 中定义的方法将成为 WSDL 中“wsdl:portType 元素”中的“wsdl:operation”元素。您需要使用所需的 JAX-WS 注释来注释 SEI 接口。
    • 您可以使用 wsimport 工具从 WSDL 文档生成 java 类。
    • 您正在使用自上而下的方法:从 WSDL 开始。
    【解决方案2】:

    为了解决这个错误,我使用了 wsimport 工具并在不更改客户端代码中的任何内容的情况下生成接口和实现。

    【讨论】:

      猜你喜欢
      • 2012-11-05
      • 1970-01-01
      • 1970-01-01
      • 2011-07-13
      • 2021-10-02
      • 2020-12-26
      • 1970-01-01
      • 1970-01-01
      • 2012-05-03
      相关资源
      最近更新 更多