3

4 つのバンドルを定義しました。

bundle 1 : export package x version 1
bundle 2 : import package x ver [1,2] and export package y;y uses x    
bundle 3 : export package x version 2
bundle 4 : import package y and also import package x version 2

apache felix (配布可能なバイナリ) を使用して、バンドル 3 を開始する前に、バンドル 1 を解決 (または開始) しないように手動で強制する必要があることがわかりました (そうしないと、バンドル 2 がパッケージ x バージョン 1 を使用するため、使用制約の問題が発生します)バンドル 4 では、パッケージ x バージョン 1 およびバージョン 2 が表示されます --> 制約違反を使用します)。
これらの投稿の著者に感謝します:
http://njbartlett.name/2011/02/09/uses-constraints.html
http://blog.springsource.com/2008/10/20/understanding-the-osgi-uses -指令/
バンドルに順序を課すのは好きではありません。すべてのバンドルを /bundle ディレクトリにコピーしてから、フレームワークのインスタンスをインストールして起動する必要があります。Apache felix はバンドルをアルファベット順に並べ替えてインストールすることに気付きました (したがって、バンドル 1 がインストールされ、最初に開始されます)。Apache karaf を試してみました。バンドルを /deploy にコピーしたところ、問題が解消されたことがわかりました。質問は次のとおりです。

Apache Karaf (または felix ファイルのインストール) は、この種の問題を回避するために、バンドルを開始する順序を課す戦略を適用しますか?

4

3 に答える 3

3

この種の展開には、Karaf 機能の使用を試みる必要があります。1 つの機能を含む機能ファイルを作成し、すべてのバンドルをこの機能に追加します。その後、Karaf はすべてのバンドルをロードして解決し、それらを 1 回のパスで開始します。したがって、リゾルバーはすべてのバンドルを正しく解決できるはずです。

于 2013-05-07T17:40:04.317 に答える
0

Felix FileInstall には注文機能がありません。

開始順序はそれほど重要ではありませんが (バンドルは任意の順序で開始できる必要があります)、優れた管理エージェントは、バンドルのバッチを単一の操作としてインストールおよび解決できる必要があります。ただし、FileInstall は、ファイルシステム ディレクトリをポーリングするたびに、バンドルをインストール/解決/開始します。そのため、FileInstall は実際には運用展開には使用できません。

Karaf については何も知りませんが、単にディレクトリをポーリングする管理エージェントであれば、同じ問題を抱えている可能性があります。

于 2013-05-07T15:41:31.943 に答える
0

Apache Karaf は、構成可能な deploy フォルダー内のバンドルに startlevel を自動的に追加します。デフォルトは 50 です。したがって、すべてのカスタム バンドルは StartLevel 50 としてインストールされます。これにより、karaf 自体の基本的なバンドル、特にファイル インストーラー バンドルがすでに稼働していることも確認されます。

于 2013-05-07T15:05:15.447 に答える