java - 从代码中解析 OSGi 包

标签 java osgi bundle osgi-bundle

我必须以编程方式确保多个 OSGi 包的特定启动顺序,因为激活过程对其他包有一些依赖性。我通过 Java 代码管理 bundle 的生命周期,在其中尝试确定 bundle 的连接以计算正确的启动顺序。所有 bundle 均已正确安装。

由于 bundle 接线缝要在已解析状态下初始化,因此我正在寻找一种以编程方式解析 bundle 的方法。我只找到bundle.start()这不仅解决了问题,而且还启动了 bundle 。有没有办法只解决而不开始?如果我手动使用 OSGi shell,我可以通过 resolve <bundle-id> 来实现此目的.

最佳答案

您无法以可靠且稳健的方式做到这一点。 OSGi 没有开始排序。时期。出去。克服它。

原因很简单, bundle 可能会被停止,并且会导致您在启动时发明的任何巧妙的顺序失效。

唯一有效的顺序是服务依赖关系。每个组件应该指定它所依赖的服务,并且在它需要的服务注册之前不要启动。这是获得订单的唯一可靠方式。

当您可以使用 DS 时,这当然是微不足道的。

关于java - 从代码中解析 OSGi 包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40991055/

相关文章:

Java 导入/导出依赖项

java - 从 OSGi 包访问命令行参数

java - 控制osgi声明性服务的实例化

dependency-injection - 在 Wildfly 中用于模块间服务注入(inject)的 OSGI 替代方案是什么?

java - getSupportFragmentManager() 不适用于 fragment 类的 onCreateView() 方法。

java - java `SingleThreadExecutor` 是否保证前一项工作在新工作开始之前完成?

java - 在午夜运行 Spring cron 作业

android - 将二维字符串数组变量从 1 个 Activity 传递到另一个 Activity

ruby-on-rails - Ruby on Rails - Carrierwave 获取图像尺寸宽度和高度

java - 嵌入式 Tomcat 7 比 Tomcat 6 慢