2012-10-22 43 views
2

我似乎真的在这里苦苦挣扎。我想要做的(按此顺序)是:使用Jersey(REST资源),OSGi(Apache Felix)和Maven(构建和部署)的示例?

1)使用Jersey应用程序和资源(注释)构建RESTful资源(这不是问题)。

2)打包,安装并将该软件包作为HTTP服务(包括依赖项)启动到Felix OSGi容器中。

3)在OSGi容器中打包,安装和启动WAR,可以将#2作为依赖项。

我希望能够使用Maven完成所有这些工作。

我似乎无法找到甚至是单个步骤的工作示例,尤其是涉及Maven的工作,更不用说这些步骤的组合。我曾尝试过从不同级别的成功网络中整理出各种各样的网页,但还不是端到端的工作示例。

任何指针将不胜感激......

回答

3

我没有对新泽西州的例子,但我有一个tutorial for CXF with Apache Karaf(使用菲利克斯)。它显示了如何创建Rest服务并使用maven构建它。使用Apache Karaf,您可以直接从Maven仓库部署捆绑软件。将此移至泽西可能只是意味着交换lib并使用另一个蓝图配置来初始化其余服务。

Apache卡拉夫也允许部署战争和工作,但我还没有测试过它们。

3

Apache Stanbol会执行其大部分或全部功能(不确定是否包含开箱即用的战争包装)来实施其RESTful服务。

您将不得不挖掘其codebase,但在那里搜索Jax-RS注释应该指向正确的位置。

+0

这是有益的,但我希望的东西更简单。我所遇到的问题似乎与我从各种渠道一起拼凑一切。 我会看看我能在本周使用Stanbol。 – KJQ

1

我也正在努力与你正在尝试做什么。到目前为止,我似乎真的非常接近,但可惜不能令人信服,这是我一直在做:

  1. 创建与Maven一个战争定义我的球衣资源的
  2. 与Maven捆绑插件捆绑(见部分Adding OSGi metadata to existing projects without changing the packaging type)。这使我可以在Tomcat中运行restlets并进行测试。
  3. 在Eclipse中定义一个目标,其中包含我使用p2-maven-plugin插件创建的本地定义的p2站点中的资源。通过这种方式,我可以将WAR项目中的任何依赖项收集到一个p2站点中,我可以将它部署到Eclipse定义的目标上
  4. 我卡在哪里试图将Jersey资源注册为服务,我试过了:
  5. 使用JAX-RS OSGI connector,我最终放弃了它,因为它使用了glassfish泽西岛,当泽西岛还没有定义第2版API时,它似乎可以导出泽西的第2版API。当我想使用Jersey libs版本1.17时,这会导致程序包解析问题。
  6. 使用白板注册资源la Apache Felix HTTP Service,我目前似乎还没有工作的方法。
  7. 最后,如果前面没有工作,我会尽力Amdatu
  8. 我可能会尝试另一条路线是从Jersey project OSGI chapter
1

我试过这个组合,并使其运行起来 -

1-模块化规范 - > OSGi规范

2- OSGi实现 - >的Apache菲利克斯4.4.0

3- OSGi运行时 - >的Apache Karaf 3.0.3

4-软件架构REST的规格 - JAX-RS

5 JAX-RX实施 - >的Apache CXF - 2.7.5

你可以请参阅本教程 - http://java.dzone.com/articles/building-cxf-rest-service-osgi

现在,我也计划从CXF迁移到Jersey,因为Jersey是JAX-RS的轻等待参考实现。现在我打算使用Apache和Felix/Apache Karaf一起使用Jersey。您可以在Karaf中安装Jersey,并将Jersey Rest Web Services作为Bundle进行部署。您可以参考本教程 - https://vzurczak.wordpress.com/2014/09/30/web-applications-with-osgi-working-with-jersey/

+0

这看起来很有前途。 – KJQ