Menu Close
8.4. 不足している依存関係を追跡する方法
不足している依存関係を追跡するには、以下の手順を実行します。
-
bundle:diag
console コマンドを使用します。これにより、バンドルが非アクティブである理由に関する情報が提供されます。使用法については、『Apache Karaf Console Reference』を参照してください。 -
クイックチェックを実行して、必要なすべてのバンドルと機能が実際にOSGiコンテナーにインストールされていることを確認します。
bundle:list
を使用して、インストールされているバンドルやfeatures:list
を確認して、インストールされている機能を確認できます。 bundle:install
console コマンドを使用して、バンドルをインストール(起動しない)します。以下は例になります。karaf@root()> bundle:install MyBundleURL
bundle:dynamic-import
console コマンドを使用して、インストールしたバンドルの動的インポートを有効にします。たとえば、バンドルのバンドル ID が 218 の場合、以下のコマンドを入力してこのバンドルで動的インポートを有効にします。karaf@root()> bundle:dynamic-import 218
この設定により、OSGi はコンテナーにすでにインストールされている バンドル を使用して依存関係を解決でき、通常の依存関係解決メカニズム(
Import-Package
ヘッダーに基づく)を効果的にバイパスできます。これはバージョンチェックをバイパスするため、通常のデプロイメントにはお勧めしません。間違ったバージョンを簡単に取得でき、アプリケーションが誤動作する可能性があります。これでバンドルを解決できるようになります。たとえば、バンドル ID が 218 の場合は、以下の コンソールコマンドを入力します。
karaf@root()> bundle:resolve 218
バンドルが解決(bundle
:list を使用してバンドル
ステータスを確認)すると、package:imports
コマンドを使用してバンドルに有線されたすべてのパッケージの完全なリストを取得できます。たとえば、バンドル ID が 218 の場合、以下のコンソールコマンドを入力します。karaf@root()> package:imports -b 218
コンソールウィンドウで、依存パッケージの一覧が表示されます。
Package │ Version │ Optional │ ID │ Bundle Name ─────────────────────────────────────┼───────────────┼────────────┼─────┼────────────────────────────────── org.apache.jasper.servlet │ [2.2.0,3.0.0) │ resolved │ 217 │ org.ops4j.pax.web.pax-web-runtime org.jasypt.encryption.pbe │ │ resolved │ 217 │ org.ops4j.pax.web.pax-web-runtime org.ops4j.pax.web.jsp │ [7.0.0,) │ resolved │ 217 │ org.ops4j.pax.web.pax-web-runtime org.ops4j.pax.web.service.spi.model │ [7.0.0,) │ │ 217 │ org.ops4j.pax.web.pax-web-runtime org.ops4j.pax.web.service.spi.util │ [7.0.0,) │ │ 217 │ org.ops4j.pax.web.pax-web-runtime ...
-
バンドル JAR ファイルを展開し、META-
INF/MANIFEST.MF ファイルの
ヘッダーに一覧表示されているパッケージを確認します。この一覧を、前の手順で確認したパッケージの一覧と比較します。マニフェストのImport-
PackageImport-Package
ヘッダーから見つからないパッケージの一覧をコンパイルし、これらのパッケージ名をプロジェクトの POM ファイルの Maven バンドルプラグイン設定のImport-Package
要素に追加するようになりました。 動的インポートオプションをキャンセルするには、OSGi コンテナーから古いバンドルをアンインストールする必要があります。たとえば、バンドル ID が 218 の場合、以下のコマンドを入力します。
karaf@root()> bundle:uninstall 218
- インポートされたパッケージの更新されたリストでバンドルを再構築し、OSGi コンテナーでテストできるようになりました。
addurl :experimental: :toc: :toclevels: 4 :numbered: