Webservice客户端找不到wsdl

时间:2012-08-17 16:52:14

标签: java https wsdl netbeans-7 webservices-client

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

前一段时间我针对位于http位置的wsdl文件做了第一个,使用webservice时没有问题

我目前正在处理的网络服务有一个位于https位置的wsdl文件。服务的设置顺利完成。与第一个的唯一区别是弹出窗口警告我安全证书,我接受了。服务,生成的源,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 个答案:

答案 0 :(得分:5)

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

指定wsdllocation时,请确保在该位置的开头添加“/”。

wsimport  -keep -Xnocompile  -wsdllocation /schema/10.0/MyService.wsdl  schema/10.0/MyService.wsdl

答案 1 :(得分:0)

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

来自Here

  

在客户端使用启用SSL的Web服务:    - 在WSDL和Client位置下的New Web Service Client向导中,通过在表单中​​设置WSDL URL来指定Web Service的WSDL文件   https://:8181 //    - 然后右键单击创建的Web服务并选择“编辑Web服务属性”,并在“Wsimport选项”下更正wsdlLocation   以下表格的选项:   / META-INF / WSDL / _8181 //。WSDL

     

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

答案 2 :(得分:0)

确保您已配置了自己的网络服务。 一种方法是实现扩展 <runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> <assemblyIdentity name="SomeAssembly" publicKeyToken="123" culture="neutral" /> <bindingRedirect oldVersion="3.0.0.0" newVersion="3.0.0.0" /> <codeBase version="4.0.0.0" href="bin/SomeAssembly.dll" /> <codeBase version="3.0.0.0" href="SomeAssembly.dll" /> </dependentAssembly> </assemblyBinding> </runtime> 的类。也就是说,添加一个类似于以下的类:

javax.ws.rs.core.Application

答案 3 :(得分: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")