如何在OSGi中通过HttpService发布JAX-WS

时间:2015-03-18 14:33:06

标签: java web-services osgi jax-ws

我在OSGi中运行了一个HttpService。通过这项服务,我想提供一个(有状态的)Web服务,但我不明白如何通过HttpService访问我的注释类。

HttpService提供我之前用过的registerServlet(java.lang.String alias, javax.servlet.Servlet servlet, java.util.Dictionary initparams, HttpContext context)来使用Jersey提供我的JAX-RS服务。在这种情况下,ServletContainer完成工作。我想以同样的方式提供我的Web服务。

似乎很明显我需要Servlet。 JAX-WS RI提供了WSServlet类似乎是正确的。它可以实例化,但是如何将我的Web服务注册到此Servlet? JAX-WS RI提供Endpoint来定义通信端点。但我找不到将此实例连接到Servlet的方法。

有人有想法,如何完成工作?

1 个答案:

答案 0 :(得分:1)

如何部署端点的最简单方法是

    MyService svcImpl = new MyService();
    Endpoint endpoint = Endpoint.create(svcImpl);
    endpoint.publish("http://localhost:8080/myws/mysvc");

如果需要使用servlet进行部署,请查看以下文档:

https://jax-ws.java.net/nonav/2.2.10/docs/ch03.html#users-guide-war-file-packaging

在web.xml中,您将找到必要的信息。请注意端点的初始化在

中完成
    com.sun.xml.ws.transport.http.servlet.WSServletContextListener 
  • 您应该能够以某种方式将ContextListener与HttpService一起使用。在初始化期间解析sun-jaxws.xml描述符。