2

Robert DunneのOSGiの依存関係:Heaven and Hellを見た後、私は特に次のことに興味があります。

バンドルの依存関係を認識していないリゾルバーを使用している場合は、ACTIVEこれらすべてを自分で管理する必要があります。Nimbleを使用すると、必要なものを要求し、残りはリゾルバーに任せることができます。これにより、開発ライフサイクルがスピードアップし、スクリプトの冗長な混乱がなくなります。

リチャードが言ったように、obrを使用すると、解決時間の依存関係を解決できます。ただし、バンドルのソースをスキャンしないと、アクティブ時の依存関係(アクティブなバンドルの依存関係を自動的に解決する)を解決するのは難しいと思います。

たとえば、バンドルAがBundleContext.registerメソッドを使用してバンドルBに登録されたサービスを使用した場合、バンドルAをアクティブ化するときに、バンドルBもアクティブ化する必要があるという事実をどのように知ることができますか?

4

1 に答える 1

2

アプローチ全体の背後にある前提は、バンドルが要件と機能を示すメタデータを提供することです。web.xmlファイルや宣言型サービスコンポーネントファイルなど、バンドル内の他のアーティファクトからいくつかの追加情報を推測できます。

コードレベルの依存関係があっても、任意の動的クラスローディングを検出する方法はありません。メタデータは不可欠です。

バンドルのすべての可能な機能と要件を決定できるプログラムを作成することは、難しい静的分析の問題であり、これらは停止問題と同等である、つまり不可能である傾向があります。

于 2012-09-19T15:19:12.490 に答える