私のチームはOSGiに基づいた新しいシステムを開発しようとしています。今では50以上のバンドルとカウントがあります。問題は、バンドル間に依存関係があることです。たとえば、バンドルAの起動時にOSGiにサービスを登録し、バンドルBの起動時にそのサービスを使用します。したがって、バンドルBよりも前にバンドルAの起動が必要です。バンドルAの開始レベルをバンドルB未満に設定します。OSGiバンドル間の依存関係を管理するために、異なる開始レベルを使用することは合理的ですか?
サービスレベルの設定を避けるためにServiceTrackerを使用しようとしましたが、システム全体を管理し理解することが困難になります。
しかし、私はこの記事をインターネットで見つけました:OSGi and Start Levels。
- 開始レベル内のスタート順は不定である:私はそれで2つの文ではわかりません!
- 全体として、開始レベルを操作するときは、開始順序に依存しないでください。開発レベルの問題ではなく、マネジメントの問題としてスタートレベルを考えてください。
開始レベルによって開始順序が決まるわけではありませんか?それではいつ使うべきですか?
OSGiバンドル間の依存関係を管理するために、異なる開始レベルを使用することは妥当ですか?
すべてのバンドルを動的モジュール(ServiceTrackerを使用して、使用するすべてのサービスを追跡)にすることは可能ですが、シニア開発者には時間がかかり、デバッグが難しくなります。
私のチームは、同様の問題に対して開始レベルを使用しています。問題を見つけ出すには最適な方法ですが、根底にある問題を直ちに解決する時間がない場合は、短期的な解決策として役立ちます。 – Jon7
+1 to rsteeleの答え。開始順序に応じて、非常に脆弱になります。開始レベルの別のユースケースは、最適化です。あなたのバンドルはどんな順序で起動されていても常に* WORK *する必要がありますが、バンドルは開始順序によっては多少の作業が必要になることがあります。したがって、開始レベルを使用してアプリのパフォーマンスを最適化できます。実際の機能には依存しないでください。 –
ありがとうNeil。私は効率の問題を考慮していなかったが、多くの意味がある。 –