如何收听所有捆绑事件?

时间:2013-03-05 12:45:13

标签: java eclipse osgi

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

我已经注册了捆绑包,从eclipse的config.ini级别2开始,默认捆绑包起始级别为4.

有没有什么方法可以听取RESOLVED类型的事件?我是否因为接收该类型的事件而开始太晚了?是否可以使用多个捆绑上下文?

1 个答案:

答案 0 :(得分:1)

由于动力学的原因,强制排序通常是一个坏主意,在OSGi中更糟糕。你可以得到一些看起来像起始级别的订单,但它保证非常脆弱,很快变得非常复杂。因为一般来说你需要事件来发现状态我想知道你的用例是什么。在OSGi中,找到Bundle状态是微不足道的。对于需要事件进行状态发现的应用程序,BundleTracker提供了一个非常好的API来发现一组状态中的bundle。根据我的经验,BundleTracker非常适合99%的BundleListener用例。

如果您只是记录日志,则所有Framework事件都会记录到Log Service中,而Log Service通常会很早启动。使用日志读取器服务,您可以访问在开始之前发生的事件。