1

我在 NetBeans 7.1 中创建了两个 web 服务客户端,模仿他们网站上的教程。

不久前,我针对位于 http 位置的 wsdl 文件完成了第一个,并且使用 web 服务没有问题

我目前正在使用的网络服务有一个位于 https 位置的 wsdl 文件。该服务的设置顺利进行。与第一个的唯一区别是弹出窗口提醒我注意安全证书,我接受了该证书。Service、Generated Sources、META-INF 等都创建成功。wsdl 文件的本地副本存储在我的电脑上的 src/.. 文件夹下。

但是,一旦我去运行我的代码,我就会收到这个错误:

找不到“ https://-domain-.net/-XYZServices-/-ABCXML?wsdl-”wsdl 。将资源正确放置在类路径中。

我在 Stackoverflow 和其他在线地方发现了几个类似的问题,但没有真正解决我的问题。无论如何,我尝试了几个建议:

我检查了 jax-ws-catalog.xml 文件,发现上面引用的 url 映射到存储 wsdl 本地副本的本地文件夹。我检查了该本地文件夹是否实际上包含 wsdl 文件 - 它确实包含。我尝试编辑 jax-ws-catalog.xml 文件中的 url 以指向端口 8080 和 8081 - 不高兴。

我想这是一个安全问题,但不知道如何解决这个问题。

谁能在这里指出我正确的方向。

仅供参考:我对 java 和 NetBeans 还很陌生。

谢谢。

4

4 回答 4

7

避免错误“找不到 wsdl。将资源正确放置在类路径中”的最佳方法。就是使用wsdllocation来指定wsdl的位置,同时也将wsdl打包成jar的一部分。

当您指定 wsdllocation 时,请确保将“/”添加到位置的开头。

wsimport  -keep -Xnocompile  -wsdllocation /schema/10.0/MyService.wsdl  schema/10.0/MyService.wsdl
于 2015-05-09T01:41:17.857 回答
0

不确定这是否有帮助,但是...

这里

在客户端使用启用 SSL 的 Web 服务: - 在 WSDL 和客户端位置下的新建 Web 服务客户端向导中,通过以 https://:8181// 的形式设置 WSDL URL 来指定 Web 服务的 WSDL 文件 - 然后对单击创建的 Web 服务并选择编辑 Web 服务属性并在 Wsimport 选项下将 wsdlLocation 选项更正为以下形式:/META-INF/wsdl/_8181//.wsdl

每当您刷新 Web 服务时,都会从已部署的应用程序加载新的 wsdl 文件,并且 wsdl 文件会作为由正确路径定义的资源(提到的 wsdlLocation 选项值)加载。

于 2012-08-17T20:09:06.067 回答
0

只需将您的 WSDL 文件放入您的类路径等 src/main/resources/MyWsdl.xml 并使用它来获取它:

URL url = new URL(baseUrl, "classpath:MyWsdl.xml");

也不要忘记在扩展 javax.xml.ws.Service 的服务类上添加它:

@WebServiceClient(name = "MyService", targetNamespace = "http://example.org/", wsdlLocation = "classpath:MyWsdl.xml")
于 2016-02-10T09:31:13.223 回答
-1

确保您已配置 Web 服务。一种方法是实现一个扩展类javax.ws.rs.core.Application。也就是说,添加一个类似于以下的类:

import java.util.Set;
import javax.ws.rs.core.Application;


@javax.ws.rs.ApplicationPath("rest")
public class ApplicationConfig extends Application {

    @Override
    public Set<Class<?>> getClasses() {
        Set<Class<?>> resources = new java.util.HashSet<Class<?>>();
        addRestResourceClasses(resources);
        return resources;
    }


    private void addRestResourceClasses(Set<Class<?>> resources) {
        resources.add(rest.HelloWorld.class);
        resources.add(rest.Search.class);

        // Here continue adding all the JAX-RS classes that you have
    }

}
于 2015-08-19T11:04:35.397 回答