2013-03-05 56 views
0

我已經寫了一個eclipse插件,它註冊了一個BundleListenerBundleContext,其中它是started。註冊的監聽器將記錄所有的BundleEvents。我注意到只有記錄類型爲STARTED的事件。如何收聽所有包事件?

我已經註冊了捆在日食config.ini與4

默認捆綁啓動級別2級開始有沒有辦法,我能聽議決例如類型的事件什麼辦法?我是否爲接收這種類型的事件而啓動該包太遲?是否可能使用多個捆綁環境?

回答

1

由於動態性,強制排序通常是一個壞主意,在OSGi中更糟。你可以得到一些東西,看起來它已經按照起始級別進行了排序,但它確保非常脆弱,並且很快變得非常複雜。由於一般情況下你需要事件來發現狀態,我不知道你的用例是什麼。在OSGi中,找到Bundle狀態是微不足道的。對於需要事件進行狀態發現的應用程序,BundleTracker提供了一個非常好的API來發現一組狀態中的bundle。根據我的經驗,BundleTracker適合99%的BundleListener用例。

如果您只是記錄日誌,則所有Framework事件都會記錄到日誌服務中,並且日誌服務通常會很早啓動。使用日誌閱讀器服務,您可以訪問在開始之前發生的事件。

+0

我知道這是不好的做法。但是我需要描述我們的eclipse的啓動,因爲這很慢(主要是由於舊盒子,但這是不能快速改變的)。感謝BundleTracker和LogService提示。那看起來很有希望 – SpaceTrucker 2013-03-05 13:45:04

+0

由於Equinox可能已經在第一個捆綁包啓動之前解決了所有捆綁包,並且可以註冊一個監聽器來查看捆綁包事件,您可能爲時已晚,無法查看已解決的事件。 – 2013-03-05 13:54:34

+0

我想你可以通過在安裝任何包之前編寫一個啓動程序並向框架註冊一個監聽器來看到RESOLVED事件。但是,爲什麼呢? – 2013-03-05 14:51:26