0

我已经编写了一个 Eclipse 插件,它将一个BundleListener注册到它启动的BundleContext中。注册的侦听器将记录所有BundleEvents。我注意到只记录了STARTED类型的事件。

我已将捆绑包注册为在config.inieclipse 中的级别 2 开始,默认捆绑包启动级别为 4。

例如,有什么方法可以让我收听 RESOLVED 类型的事件?我是否为接收该类型的事件而启动捆绑包太晚了?是否使用了多个捆绑上下文?

4

1 回答 1

1

由于动态,强制排序通常是一个坏主意,在 OSGi 中更糟。你可以得到一些看起来像开始级别排序的东西,但它肯定是非常脆弱的,并且很快就会变得非常复杂。因为通常您需要事件来发现状态,所以我想知道您的用例是什么。在 OSGi 中,查找 Bundle 状态是微不足道的。对于需要状态发现事件的应用程序,BundleTracker 提供了一个非常好的 API 来发现处于一组状态的捆绑包。根据我的经验,BundleTracker 非常适合 99% 的 BundleListener 用例。

如果您只是记录,所有框架事件都会记录到日志服务,并且日志服务通常会很早就启动。使用日志阅读器服务,您可以访问在您开始之前发生的事件。

于 2013-03-05T13:09:44.910 回答