【发布时间】:2014-05-08 09:57:33
【问题描述】:
我们有一个应用程序,我们想在其中使用 OSGi Equinox 运行 Jersey。请提供任何帮助或指示。我在网上得到的所有内容都是使用 Apache Felix。我不想那样做。 我的应用程序使用以下内容
用于客户端代码的 Angular JS 休息服务泽西岛 用于部署的 OSGi Equinox 和 Jetty。
请建议这是否可能,如果可以,那么如何
【问题讨论】:
我们有一个应用程序,我们想在其中使用 OSGi Equinox 运行 Jersey。请提供任何帮助或指示。我在网上得到的所有内容都是使用 Apache Felix。我不想那样做。 我的应用程序使用以下内容
用于客户端代码的 Angular JS 休息服务泽西岛 用于部署的 OSGi Equinox 和 Jetty。
请建议这是否可能,如果可以,那么如何
【问题讨论】:
见https://github.com/everit-org/osgi-remote-jersey/tree/v1.0.2
该解决方案也适用于 felix 和 equinox。
根据问题更新(没有扩展器):
您可以实现与扩展器相同的逻辑。简而言之:
ResourceConfig resourceConfig = new ResourceConfig();
resourceConfig.register(myJAXRSAnnotatedObjectOrClassType);
Servlet servletContainer = new ServletContainer(resourceConfig);
// register the newly created servlet instance to the server
您可以通过多种方式注册该 servlet:
您可以多次调用 resourceConfig.register。这样,您可以在一个 servlet 实例下注册多个带有 JARS 注释的类。
使用 resourceConfig.register,您不仅可以注册 JAXRS 注释类,还可以注册 Jersey 知道的任何组件。例如,如果要添加 JSON 解析功能,可以使用:
resourceConfig.register(JacksonFeature.class);
【讨论】:
你看过OSGi JAX-RS Connector吗?它使用 Jersey,最初是在 Equinox 上开发和测试的。 AFAIK 他们也确实支持 Felix。
另一个选项是Eclipse Gyrex。但它更像是一个基于 Equinox、Jetty 和 Jersey 的完整堆栈,如果您更喜欢组装自己的堆栈,它可能不是最佳选择。但是,它仍然是 Jersey 1.x。计划在即将发布的 Luna 版本之后进行升级。
【讨论】: