OSGi でシステムの再起動後もバンドル配線を維持することは可能ですか?新しいバージョンが利用可能になったとしても、古いバージョンをそのまま使用できますか? 要点は、何かがうまくいったとしても、古いバンドルを新しい依存関係に結び付けてリスクを冒したくないということです。言い換えれば、コンポーネントの更新が他のすべてのコンポーネントに影響を与えないように、可能な限り更新を分離しようとしています (既に配線された依存関係を満たすために古いバンドルが引き続き使用されるため)。
例として、A が [1.0.0, 2.0.0) の範囲で B に依存しているとします。B のバージョン 1.0.0 を展開するので、A は B_1.0.0 に接続されます
。ここで、論理変更に依存するバンドル C を作成し、範囲 [1.0.1, 2.0.0) の B に依存します。したがって、B_1.0.1 をデプロイします。システムを再起動すると、C と A は 1.0.1 に接続されます。これは、C と A が両方の依存範囲内にあり、理論的には 1.0.0 よりも A の方が「より適切に」一致するためです。OSGi にこれを行わないように指示し、できるだけ長く配線を維持する方法はありますか (たとえば、古いバンドルが実際に削除されるまで。その場合、範囲内の最高のバージョンを使用しても問題ありません)。
現在行っていることは、範囲を許可しないことです。そのため、依存関係は [1.0.0, 1.0.0] のようになります。これにより、必要な更新の分離が得られますが、基本的にモジュール性が失われます。依存関係を更新するには、依存関係のコードが変更されていなくても、依存関係を更新する必要があります。範囲を許可しないことは大きなアンチパターンだと思うので、範囲を使用したより良い代替案を提案しようとしていますが、それは私たちが必要とする更新の分離を提供し、私の最初のアイデアは、セッション間でも再配線を禁止することです
問題がある場合は、OSGi サービスを使用していません。それらはすべてプレーンバンドルです