我正在使用 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 ?
希望我能把自己说清楚...
谢谢!