【问题标题】:Running Jersey on OSGi Equinox在 OSGi Equinox 上运行 Jersey
【发布时间】:2014-05-08 09:57:33
【问题描述】:

我们有一个应用程序,我们想在其中使用 OSGi Equinox 运行 Jersey。请提供任何帮助或指示。我在网上得到的所有内容都是使用 Apache Felix。我不想那样做。 我的应用程序使用以下内容

用于客户端代码的 Angular JS 休息服务泽西岛 用于部署的 OSGi Equinox 和 Jetty。

请建议这是否可能,如果可以,那么如何

【问题讨论】:

    标签: jersey osgi equinox


    【解决方案1】:

    见https://github.com/everit-org/osgi-remote-jersey/tree/v1.0.2

    • 进入测试目录
    • 编辑 pom.xml 并将 felixtest 环境中的 jetty.port 更改为您喜欢的端口
    • 在测试中运行“mvn install”
    • 转到目标/eosgi-dist/felixtest/bin
    • 运行 runConsole.bat(或 linux 上的 runConsole.sh)
    • 打开 localhost:port/system/console 并查看安装了什么(基本上是测试项目的所有 maven 依赖项)

    该解决方案也适用于 felix 和 equinox。

    根据问题更新(没有扩展器):

    您可以实现与扩展器相同的逻辑。简而言之:

    ResourceConfig resourceConfig = new ResourceConfig();
    resourceConfig.register(myJAXRSAnnotatedObjectOrClassType);
    Servlet servletContainer = new ServletContainer(resourceConfig);
    // register the newly created servlet instance to the server
    

    您可以通过多种方式注册该 servlet:

    • 通过 HTTP 服务
    • 带白板图案
    • 通过创建一个 wab 和
      • 创建一个自己的 Servlet 来包装 jersey servletContainer 实例
      • 在 web.xml 中配置一个类型为 ServletContainer 的新 servlet

    您可以多次调用 resourceConfig.register。这样,您可以在一个 servlet 实例下注册多个带有 JARS 注释的类。

    使用 resourceConfig.register,您不仅可以注册 JAXRS 注释类,还可以注册 Jersey 知道的任何组件。例如,如果要添加 JSON 解析功能,可以使用:

    resourceConfig.register(JacksonFeature.class);
    

    【讨论】:

    • 是否可以在没有任何扩展程序的情况下做到这一点?
    • 感谢您的详细解释。
    【解决方案2】:

    你看过OSGi JAX-RS Connector吗?它使用 Jersey,最初是在 Equinox 上开发和测试的。 AFAIK 他们也确实支持 Felix。

    另一个选项是Eclipse Gyrex。但它更像是一个基于 Equinox、Jetty 和 Jersey 的完整堆栈,如果您更喜欢组装自己的堆栈,它可能不是最佳选择。但是,它仍然是 Jersey 1.x。计划在即将发布的 Luna 版本之后进行升级。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-10-10
      • 2017-01-19
      • 2013-05-30
      • 1970-01-01
      • 2010-11-06
      • 1970-01-01
      • 2015-08-22
      相关资源
      最近更新 更多