osgi - Apache Karaf 如何对要安装和启动的包进行排序?

标签 osgi apache-felix apache-karaf

我定义了四个包:

bundle 1 : export package x version 1
bundle 2 : import package x ver [1,2] and export package y;y uses x    
bundle 3 : export package x version 2
bundle 4 : import package y and also import package x version 2

使用 apache felix(可分发的二进制文件),我发现我应该在启动 bundle 3 之前手动强制不解析(或启动)bundle 1 和 bundle 2(否则会出现使用约束问题,因为 bundle 2 将使用包x version 1 and in bundle 4 将出现 package x version 1 and version 2 --> uses constraint violation).
感谢这些帖子的作者:
http://njbartlett.name/2011/02/09/uses-constraints.html
http://blog.springsource.com/2008/10/20/understanding-the-osgi-uses-directive/
我不喜欢对我的包强加顺序,我需要将我的所有包复制到/bundle 目录中,然后安装框架实例并启动它们。 我注意到 Apache felix 按字母顺序对要安装的包进行排序(因此包 1 将首先安装然后启动)。 我尝试使用 Apache karaf,将我的包复制到/deploy 中,我发现问题消失了,所以我的问题是:

Apache Karaf(或 felix 文件安装)是否应用一种策略来强加任何启动包的顺序以避免此类问题?

最佳答案

您应该尝试使用 Karaf 功能进行此类部署。您创建一个包含一个功能的功能文件,并将所有包添加到该功能。然后 Karaf 将加载所有的 bundle 并一次解析并启动它们。因此,解析器应该能够正确解析您的所有 bundle 。

关于osgi - Apache Karaf 如何对要安装和启动的包进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16418086/

相关文章:

java - 为什么在使用 Apache Felix Gogo 启动我的最小示例包时会出现 BundleException?

java - Apache FELIX JAX-RS 更改上下文路径

java - 如何使用 Apache Karaf/OSGi 构建桌面应用程序?

java - hawtio-web 卡住 "deploying",无法在 karaf 中启动

osgi - PAX 考试 - 类未找到错误

osgi - 使用 SlingScriptHelper#getService() 方法过滤 OSGi 服务

java - OSGI:声明性服务在捆绑启动后可用

java - 并行运行多个版本的 servlet Web 应用程序

osgi - OSGi 片段包可以发布声明性服务吗?

osgi - 如何根据配置绑定(bind)动态引用?