我们使用 Karaf-4 作为 OSGI 容器。我们有多个与某个功能相关的 bundle 。当任何 bundle 的某个功能失败时,我们希望以编程方式进行识别。我们尝试了 BundleTracker 和 BundleListener,但是当 bundle 在“GracePeriod”状态下等待后失败时,我们没有收到通知。
我们可以在 karaf 控制台中使用“list”命令查看失败包的状态。我们希望通过通知以编程方式实现此目的,而不是在 karaf 控制台中执行“list”命令。
最佳答案
您可以使用BundleService作为 OSGi 服务。 getInfo 方法为您提供 BundleState 等信息。对于失败的 bundle ,您可以调用 getDiag 来获取详细状态。
其实这就是diag命令在内部执行。
关于osgi - 以编程方式识别 Karaf 中的 OSGI bundle 故障,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48814293/