当前位置: 首页 > 知识库问答 >
问题:

以编程方式识别 Karaf 中的 OSGI 捆绑包故障

寿意远
2023-03-14

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

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

共有1个答案

许典
2023-03-14

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

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

 类似资料:
  • 符号名ram 线程“main”组织中出现异常。奥斯基。框架BundleException:bundle ram[1]中未解析的约束:无法解析1.0:缺少需求[1.0]osgi。装电线。包裹(osgi.willing.package=android.dalvik)。阿帕奇。菲利克斯。框架菲利克斯。resolveBundleRevision(Felix.java:3826)位于org。阿帕奇。菲利克斯

  • 我试图在Felix中添加一个新的OSGI包(没有Karaf)作为ActiveMQ客户端(消息发送方)。 ActiveMQ客户端在非OSGI环境中运行良好。但当我在Felix中使用相同的代码(稍加修改)时,它会抛出以下错误: org.osgi.framework.捆绑异常:无法解决com.packtpub.felix.bookshelf-库存-impl-mock[7](R 7.3):缺少需求[com

  • 上下文 我有一个基于OSGi的大型(Equinox3.9/EclipseRCP4.4)应用程序,还有几个“可选”包。这些可选捆绑包中的每一个都提供了可选的用户界面和一些额外的服务(通过SCR组件),这些服务只适用于我们的一部分客户。 应用程序始终作为预打包安装分发(也就是说,我们不使用P2或任何其他自动配置机制)。直到最近,我们为每个需要一些可选捆绑包的客户构建了不同的预打包安装。可选捆绑包的数量

  • 我正在尝试部署我现有的项目,该项目在ApacheKaraf4.2.1(运行时)中内置了SpringDM(OSGI)1.2.1,但没有正确安装。ApacheKaraf4.2.1支持SpringDM(OSGI)1.2.1吗?我知道spring dm(OSGI)1.2.1不再正式支持spring,它已作为eclipse Gemini项目的名称转移到eclipse。我已经浏览了下面提到的一些链接:Spri

  • 我使用EclipseIndigo使用OSGiJava框架开发了一些包。有一个主捆绑包,它依赖于其他捆绑包,并且具有要运行的主程序。如果我尝试在Eclipse中运行所有捆绑包,一切都正常工作,但是如果我将每个捆绑包保存为一个JAR,并在命令行中启动OSGi框架,当我尝试启动主捆绑包时,会出现异常<code>NoClassDefFoundError。找不到的类是依赖项。包的其余部分处于活动状态,主包刚

  • 于是我就开始了实现这些依赖的“兔子洞”。基于maven页面,我将features.xml文件放在一起: 现在,当我尝试安装它时,我得到: 我觉得这可能和equinox vs Felix有关?我只是使用默认的Karaf设置,并使用内置的Netbeans Maven项目创建包,对于OSGI世界来说,我还是比较新的。在大多数情况下,我可以启动和运行bundle,并为一个应用程序建立了一个基本的集合,但这