【问题标题】:Any way to make a bundle required with Knoplerfish?有什么方法可以制作 Knoplerfish 所需的捆绑包?
【发布时间】:2011-07-12 14:11:05
【问题描述】:

如果特定捆绑包无法初始化,是否有任何方法可以中止 Knoplerfish 的启动?默认情况下,FrameworkErrorEvent 会打印到控制台,并且框架会继续加载。

init.xargs

-initlevel 80
-istart my-required-bundle.jar

控制台输出

[stdout] Installed and started: file:jars/my-required-bundle.jar (id#34)
[stdout] ## DEBUG: errors - FrameworkErrorEvent bundle #34
[stdout] ## DEBUG: errors - FrameworkErrorEvent throwable:
[stderr] org.osgi.framework.BundleException: BundleActivator start failed

【问题讨论】:

    标签: osgi knopflerfish


    【解决方案1】:

    没有标准的 OSGi 方法可以做到这一点,因为没有标准的方法来告诉框架要安装什么包(这取决于启动器)。也没有标准的方式来获得此事件的通知,因此您可以对其采取行动。如果 Knopflerfish 没有提供特定的系统属性或类似的东西来处理这个问题,我看到你可以采取两条路线。

    • 构建您自己的启动器。实例化一个org.knopflerfish.framework.Main,对其进行配置(自述文件中有一些关于此的信息),然后通过从框架中获取BundleContext 来安装捆绑包。然后,您可以捕获来自 bundle 的 start() 方法的 BundleExceptions,并在其类型为 RESOLVE_ERROR 时中止启动。
    • 创建一个等待特定时间的捆绑包,然后检查框架以查看是否所有捆绑包都已启动(您可以从BundleContext 获取所有当前安装的捆绑包的列表)。如果其中一个不在状态INSTALLED,您可以通过停止系统捆绑包(即捆绑包0)来停止框架。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-23
      • 1970-01-01
      • 2021-06-19
      • 2010-10-15
      • 2015-04-16
      • 2012-01-29
      相关资源
      最近更新 更多