0

我正在使用 REST 接口公开在一个 OSGi 包中生成的一些数据,以便之后任何人都可以使用典型的 http 请求来使用它。为此,我使用了 apache-cxf、JAX-RS 和 Jetty 的组合(主要用于测试目的)。

我的整个应用程序以两种方式分发:

  • 核心:将一组最小捆绑包作为 OSGi 框架运行。
  • 完整:Core + 加上一组在 Eclipse 中使用的插件,以图形方式,就是这样说的。

在核心启动配置中,我可以毫无问题地完成这项工作,请查看清单:

Require-Bundle: cxf-dosgi-ri-singlebundle-distribution;bundle-version="1.3.1",org.eclipse.core.runtime, org.eclipse.osgi.services;bundle-version="3.3.0", org.mortbay.jetty.server;bundle-version="6.1.23", org.mortbay.jetty.util;bundle-version="6.1.23"

当我尝试启动完整发行版时,码头服务器似乎没有启动,因此 RESTful 服务无法正常工作。完整的发行版附带了更多的插件,主要与向导、透视图等有关。这个问题的根源在某种程度上与 cxf-dosgi-ri-singlebundle-distribution 捆绑包有关,并且可以通过“强制”这个捆绑包的自动启动为真,而不是默认值来解决(查看下图):

在此处输入图像描述

虽然这没关系,但我的问题是……为什么会这样?其次,也是最重要的一点,我通过更新站点分发完整版本,因此用户可以下载它,打开透视图并开始使用它,也就是说,这会影响最终分发吗?有没有办法可以控制更新站点中 apache-cxf 包的 auto-start=true ?

希望我能把自己说清楚...

谢谢!

4

1 回答 1

0

我不喜欢回答我自己的问题,但是因为我没有得到任何反馈,也许其他人也有同样的问题……就这样吧

我决定通过不使用 apache-cxf 来更改我的 restful 包的整个设计,因为它真的不需要。我需要做的就是嵌入式 Jetty 服务器和用于处理 HttpRequests 和 HttpResponses 的 javax。因此,我摆脱了对第三方库的依赖,同时利用了启动问题。

从 Ecipe 中的这些官方网站获得想法:

在 Equinox 中嵌入 HTTP 服务器

编写基于捆绑的服务器应用程序

此外,还可以在此处找到更多动手教程:

OSGi 作为 Web 服务器应用程序

扩展 Eclipse:显示捆绑存档中的 HTML 内容

特别感谢两位作者的启迪:)。

于 2012-08-23T09:13:52.893 回答