本地WSDL的FileNotFoundException

时间:2014-05-11 21:45:53

标签: java web-services java-ee wsdl glassfish

我尝试为我的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

获得

非常感谢任何帮助!

2 个答案:

答案 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")