我尝试为我的jax-ws @Stateless @WebService bean webservice实现一个使用者。该服务运行良好,我可以使用NetBeans&GlassFish的Web服务测试功能成功测试它。
使用者是与服务相同的部署的Servlet。我使用
注入服务@WebServiceRef(wsdlLocation = "http://localhost:8080/EchoService/EchoBean?wsdl")
EchoService echo;
但每当我打开servlet时,我得到的是具有以下根异常的堆栈跟踪
java.io.FileNotFoundException:
http://localhost:8080/EchoService/EchoBean/__container$publishing$subctx/null?WSDL
我可以在浏览器中从http://localhost:8080/EchoService/EchoBean/?WSDL
加载WSDL,但我不知道__container$publishing$subctx/null
部分,我的代码中没有提到任何部分。
完整堆栈跟踪可在http://pastebin.com/dneCPj8z
获得非常感谢任何帮助!
答案 0 :(得分:1)
如果您使用的是Glassfish 4,@WebServiceRef
注释在servlet和过滤器上无法正常工作。这是根据GLASSFISH-20740提交的。检查this thread。
HTH
答案 1 :(得分:0)
在您的项目中,
"Your project name"/Configuration Files/xml-resources/web-service-references/"Your web service name"/wsdl/
复制“ localhost_8080”文件夹并将其粘贴到以下位置:
"Your project name"/Web pages/WEB-INF/wsdl.
也更改:
@WebServiceRef(wsdlLocation = "http://localhost:8080/EchoService/EchoBean.wsdl")
至:
@WebServiceRef(wsdlLocation = "WEB-INF/wsdl/localhost_8080/EchoService/EchoBean.wsdl")