以编程方式识别 Karaf 中的 OSGI Bundle 故障

Identify OSGI Bundle failure in Karaf programmatically

我们使用 Karaf-4 作为 OSGI 容器。我们有几个与一个功能相关的包。当任何捆绑软件在某个功能中失败时,我们希望以编程方式进行识别。我们尝试了 BundleTracker 和 BundleListener,但是当捆绑在 "GracePeriod" 状态等待后失败时我们没有收到通知。

我们可以在 karaf 控制台中使用 "list" 命令查看失败包的状态。我们希望通过通知以编程方式实现这一点,而不是我们在 karaf 控制台中执行 "list" 命令。

您可以将 BundleService 用作 OSGi 服务。 getInfo 方法为您提供了 BundleState。对于失败的捆绑包,您可以调用 getDiag 来获取详细状态。

实际上这就是 diag 命令在内部所做的。