たとえば、バンドル「A」とバンドル「B」はlog4jを使用しています。 log4jは1つしか持てませんか?または各バンドル内にlog4jを持つ必要がありますか?同じjarを使用する2つのOSGiバンドルがある場合、それぞれのバンドルにこのjarが必要ですか、または1つで十分ですか?
答えて
バンドル 'B'は、バンドル 'A'がlog4jパッケージをエクスポートしていて、バンドル 'B'がそれらをインポートすると、バンドル 'A'のlog4jを使用できます。
実際にはlog4j bundle(log4j 1.2.16はOSGi準拠のリリースです)を使用し、 'A'と 'B'をインポートすることをお勧めします。リンクしたlog4j.jarを調べて、OSGiマニフェストエントリがあることを確認できます。
バンドルを共有する場合、グローバル状態は1つしかありません(静的フィールドなど)。
通常、log4jを再利用できますが、あるアプリケーションではパッケージをDEBUGレベルにし、別のアプリケーションではINFOを使用する場合は、2つのバンドルを維持する必要があります。
他の人の意見に同意します。 log4j jarファイルを1つだけコピーできるだけでなく、非常に望ましいコピーです。このようなJARの重複を避けることは、OSGiの主な使用例の1つです。バンドル内のライブラリを徹底的にパッケージ化してクラスパス上に確実にパッケージする代わりに、各バンドルはライブラリパッケージ(この場合はlog4j)に依存することを明示的に宣言することができます。これにより膨らみを防ぎ、必要に応じて共有ライブラリを更新するのがずっと簡単になります。
のOSGiの全体的なアイデアを共有できるようにすることです...
上記、共有がカップリングを作成し、一般的には、公開APIの夫婦のみにしたいです。悪いバンドルは、無限の数の依存関係の中で推移するように見えるバンドルです。 OSGiサービスの考え方全体は、他のバンドルとあまりにも多くを結びつけたときに人々が作り出す大きな泥の球を最小限に抑えることです。
Devがあなたに答えを与えました。 OSGiの考え方は、バンドル間の依存関係を最小限に抑えることができるようにすることです。
- 両方のバンドルにlog4jがある場合、実際には OSGiのすべての利点を無駄にしています。
- log4jが1つのバンドルにある場合、f.e:Bundle Aは、バンドルAとBの間に直接依存します.Bは常にAを必要とするためです。 Aが何らかの理由で停止した場合、Bは動作しません。
- 新しいバンドル「Bundle_Log4j」を作成し、そのパッケージをインポートするためにAとBを宣言すると、バンドルAとバンドルBを個別に扱うことができるので、理想的なソリューションです。
- 1. OSGiの2つのバンドルで同じJARの2つのバージョンを使用するにはどうすればよいですか?
- 2. osgiバンドルのlib jarにアクセス
- 3. MVC3同じViewModelが2つのケースで使用され、1つのケースで必須属性がある場合
- 4. 1つのJavaアプリケーションで2つの異なるバージョンのJARが必要です
- 5. JasperReportsを実行するには、アプリケーションにバンドルする必要がある特定のjarファイルは何ですか?
- 6. バンドル:毎回同じコマンドラインオプションを使用する必要がありますか?
- 7. Maven-bundle-pluginを使用したJARのOSGIバンドル
- 8. Maven:JavaFX:1つのJarファイルでバンドルを束ねる
- 9. OSGiバンドルとしてPrimefaces jarをデプロイ - javax.facesクラスが見つかりません
- 10. ソースをjarに添付する必要があるのはいつですか
- 11. Javaで - 2つが同じ場合に配列の要素を合計する必要があります
- 12. OSGiバンドルと通常の.JARファイルの使用の違い
- 13. 同じエンティティを使用する2つのバンドルSymfony2
- 14. SQL 2つのテーブルは、それぞれのデータに応じてプルする必要があります
- 15. MVC - それぞれのjavascriptでコントロールをバンドルするのに便利ですか?
- 16. 同じ名前でActionNameを使用する2つのアクションがある場合、両方でAuthorizeを使用する必要がありますか?
- 17. 'bnd-maven-plugin'を使用してOSGiバンドルjarにサードパーティのjarファイル(解決可能)を追加するにはどうすればいいですか?
- 18. antでバンドルjarを作成する
- 19. ネットワーク上にCordaノードを配置する場合、どのJARがまったく同じである必要がありますか?コルダの展開に
- 20. 私は2つのメソッド(それぞれ同じ出力)が
- 21. すべてのコンシューマが同じAPIを同じ方法で使用する場合、すべてのコンシューマ向けに1つのPactファイルが必要ですか?
- 22. OSGiのWAB - それは別のバンドル/ WAB
- 23. Oracle JDBCドライバJARをDockerイメージにバンドルすることはできますか?
- 24. 異なるクラスに使用されるjarファイルの2つのバージョンが必要です
- 25. 2つのヘッダーを使用する必要がありますか、それとも1つの方法を使用するのですか
- 26. この場合、2つのbackingbeansを用意する必要があります
- 27. Google App EngineソースとJavaDoc JARバンドルがありますか?
- 28. 同じバンドル識別子または同じ名前の2つのアプリケーションをアップロードできますか?
- 29. 1つのバンドルがServiceReferenceから別のバンドルのBundleインスタンスを取得する方法はありますか?
- 30. それぞれ約4GBの2つのjsonファイルの違いを見つける必要があります