首页 文章

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

提问于
浏览
1

我在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 来定义通信 endpoints . 但我找不到将此实例连接到Servlet的方法 .

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

1 回答

  • 1

    如何部署 endpoints 的最简单方法是

    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中,您将找到必要的信息 . 请注意 endpoints 的初始化是在

    com.sun.xml.ws.transport.http.servlet.WSServletContextListener
    
    • 你应该能够以某种方式将ContextListener与HttpService一起使用 . 在初始化期间解析器sun-jaxws.xml被解析 .

相关问题