我已经编写了一个eclipse插件,将BundleListener注册到BundleContext started。已注册的侦听器将记录所有BundleEvents。我注意到只记录了STARTED类型的事件。
我已经注册了捆绑包,从eclipse的config.ini
级别2开始,默认捆绑包起始级别为4.
有没有什么方法可以听取RESOLVED类型的事件?我是否因为接收该类型的事件而开始太晚了?是否可以使用多个捆绑上下文?
答案 0 :(得分:1)
由于动力学的原因,强制排序通常是一个坏主意,在OSGi中更糟糕。你可以得到一些看起来像起始级别的订单,但它保证非常脆弱,很快变得非常复杂。因为一般来说你需要事件来发现状态我想知道你的用例是什么。在OSGi中,找到Bundle状态是微不足道的。对于需要事件进行状态发现的应用程序,BundleTracker提供了一个非常好的API来发现一组状态中的bundle。根据我的经验,BundleTracker非常适合99%的BundleListener用例。
如果您只是记录日志,则所有Framework事件都会记录到Log Service中,而Log Service通常会很早启动。使用日志读取器服务,您可以访问在开始之前发生的事件。