我正在迈向JAX-WS世界的第一步并使用glassfish 4。
我刚刚尝试重建JavaEE7 Oracle Jax-WS示例并拥有以下Web服务:
@WebService
public class Hello {
@WebMethod
public String sayHello(String name) {
System.out.println("Webservice sayHello called...");
return "Hello " + name;
}
}
没有更多..我已经将它部署在glassfish上,我可以使用测试器,我可以看到WSDL - 很好。
现在我正在编写应该由JSF2视图调用的客户端..来自bean:
@Named
@RequestScoped
public class HelloServiceClient {
@WebServiceRef(wsdlLocation="http://localhost:8080/HelloService/HelloService?WSDL")
private HelloService service;
public String callHello() {
Hello helloPort = service.getHelloPort();
return helloPort.sayHello(" JSF2 View!");
}
public String callWSSayHello(String name) {
Hello helloPort = service.getHelloPort();
return helloPort.sayHello(name);
}
}
还有一个简约视图,只需调用callHello()方法并显示结果。
我正在将该应用程序部署到同一个glassfish服务器并出现以下错误:
java.io.IOException的: com.sun.enterprise.admin.remote.RemoteFailureException:发生错误 部署期间:加载应用程序时出现异常: java.lang.IllegalStateException:ContainerBase.addChild:start: org.apache.catalina.LifecycleException: com.sun.xml.ws.transport.http.servlet.WSServletException:WSSERVLET11: Laufzeitdeskriptor konnte nicht geparst werden: javax.xml.ws.WebServiceException:Laufzeitdeskriptor “/WEB-INF/sun-jaxws.xml”fehlt。有关更多信息,请参阅server.log 的信息。
所以我不明白sun-jaxws的概念 - 尽管如此 - oracle文档和示例并没有告诉我任何关于它的事情。
我做错了什么 - 可能在我的IDE或其他任何地方?
答案 0 :(得分:0)
我找到了问题的答案:
我的IDE自动将WSServlet添加为我的web.xml的监听器 - >如果你从web.xml中删除它,它正在按预期工作。