我在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的新手。
感谢。
答案 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")