0

BundleListener開始するBundleContextに登録する Eclipse プラグインを既に作成しました。登録されたリスナーは、すべてのBundleEventsをログに記録します。STARTEDタイプのイベントのみがログに記録されていることに気付きました。

config.iniデフォルトのバンドル開始レベル 4 で、Eclipseのレベル 2 で開始するようにバンドルを登録しました。

たとえば、タイプ RESOLVED のイベントをリッスンできる方法はありますか? バンドルの開始が遅すぎて、そのタイプのイベントを受信できませんか? 複数のバンドル コンテキストが使用されている可能性がありますか?

4

1 に答える 1

1

順序付けを強制することは、一般的に悪い考えであり、OSGiではダイナミクスのためにさらに悪いことです。開始レベルで順序付けされているように見えるものを取得できますが、非常に壊れやすく、すぐにひどく複雑になることが保証されています。一般に、状態を検出するにはイベントが必要なので、ユースケースはどのようなものか疑問に思います。OSGiでは、バンドル状態を見つけるのは簡単です。状態検出のイベントを必要とするアプリケーションの場合、BundleTrackerは、一連の状態のバンドルを検出するための非常に優れたAPIを提供します。私の経験では、BundleTrackerはBundleListenerのユースケースの99%にうまく適合します。

ログを記録しているだけの場合、すべてのFrameworkイベントはログサービスにログに記録され、ログサービスは通常非常に早く開始されます。ログリーダーサービスを使用すると、開始する前に発生したイベントにアクセスできます。

于 2013-03-05T13:09:44.910 に答える