質問
お互いを自動検出するEclipseプラグインを作成することはできますか?
2つの主要な状況で動作する必要があるプラグインのセットを開発しています:
- 個別に
- 互いに協力して。
個別に実行すると、プラグインは「正常に動作する」はずです。しかし、コンサートでは、同じモデルコンテンツの一部を共有し、プラグインの1つは、コンテンツを共有する他のプラグインのリストをユーザーに提示する必要があります。例:
Fooプラグインは次を検出しました オントロジーを共有できるプラグイン:
[]バープラグイン
[] Bazプラグイン
[]共有しないでください
Eclipseは、他のプラグインのこの種の自動検出を容易にする内部公開/検出方法を提供していますか?
解決
答えは、宣言型サービスを通じて行う必要があります。 eclipse xml拡張機能とosgi POJOサービスの両方の利点を組み合わせています。 osgiサービスのように暗黙的に動的であるが、“オンデマンドでロードされるものeclipse拡張機能など。
2006年にeclipse3.3で導入されたこのプレゼンテーション。
宣言型サービスには、他のサービスへの参照を定義するオプションがあります。参照のカーディナリティを指定することもできます。カーディナリティーは2つの数値を使用して指定されます。最初の数値である0または1はオプションを示し、2番目の数値である1またはnは多重度を示します。
実際には、これらの DS(宣言型サービス)は使いにくいですが、 BundleActivatorを追跡することを意味するBundleContextにアクセスする必要があるため、これは必ずしも簡単ではありません ...
何らかのサービス指向コンポーネントモデルを定義する必要がある場合は、このプレゼンテーションは、今日存在するさまざまな代替案を提供するとともに、これらの「宣言型サービス」の詳細を提供する必要があります
DSに関連してrcreswickが見つけたものを公開するには:
- OSGi入門:宣言型サービスの紹介
- OSGi入門:宣言型サービスと依存関係
他のヒント
まあ、OSGIサービスレジストリは、プラグイン自体ではなく、実行時にpojoベースのサービスの共有を実現できます。 OSGI API、宣言サービス、Spring DM、iPojoに直接コーディングするなど、これを容易にするいくつかのオプションがあります(他にもあると確信しています)。
動的なオブザーバー/オブザーバブルスタイルのソリューションを実現する手段として、ホワイトボードパターンをチェックアウトできます。