プロジェクトのプラグインを管理する手段としてOSGIを使用することに興味があります。それは私のインターフェイスの多くの実装者がある可能性があります、それぞれは独自の/独立したOSGIバンドルにエクスポートされた実装クラスで表示されます...インタフェースの複数の実装者。 OSGiはどうですか?
答えて
Declarative Service行くべき道があります。
あなたは、そのインターフェイスの各実装がバンドルの活性化および非活性化の方法を定義することができservice
<service>
<provide interface="my.Interface"/>
<property name="foo" value="bar"
</service>
としてあなたのインターフェイスを宣言することができます。
しかし、本当にきれいなのはその性質です。あなたが最新のSCR(「拡張コンポーネントバンドル」である「サービスコンポーネントランタイム」を使用していれば、新しいOSGi R4.2 DS - 宣言型サービス仕様を実装しています)クラスはOSGIモデルから何もインポートしません。彼らは純粋なPOJOのままです。
<reference name="myInterfaceServiceName"
interface="my.Interface"
bind="myActivationMethod" unbind="myDeactivationMethod"
cardinality="0..n"/>
サービスを検出して一覧表示し、あなたの最初のサービスのすべてのあなたの具体的な事例をとの意思あなたとそれらに対処します:
その後、あなたの最初のサービスに依存別のサービスを定義します。
詳細については、Eclipse Extensions and Declarative Servicesの質問をご覧ください。
プレゼンテーション:Component Oriented Development in OSGi with Declarative Services, Spring Dynamic Modules and Apache iPOJO、EclipseCON2009からは、具体的な例が示されます。
これは、宣言的に(VonCのように)、標準サービスレジストリを使用して実行時に詳細に、または動的に実行できます。
実装者は、実装をサービスとして簡単に登録でき、消費者はレジストリから取得できます。これはかなり基本的なOSGiです。サービスはプロパティで登録することもできるため、サービスを検索する際にコンシューマはこれらのプロパティを使用して実装を区別できます。
はい、私はそれを得る - しかし、私は "インストール"や "活性化"せずに、バンドルからエクスポートされたwhtクラスのようなメタデータを読んでみたいです...これは可能です。 –
- 1. EJB Beanは複数のインタフェースを実装できますか?
- 2. NHibernateは - 同じインタフェースを実装する複数の種類
- 3. 同じテストで複数のインタフェース実装をテストする - JUnit4
- 4. の実装インタフェース
- 5. Goでインタフェース変数がどのように実装されていますか?
- 6. 城ウィンザーMVCの同じインタフェースの複数の実装
- 7. OCamlにおける複数の実装とのインタフェース
- 8. インタフェースServiceConnectionの実装
- 9. インタフェースの実装 - パラメータ
- 10. Roslyn - インタフェースのシンボル実装ですか?
- 11. オブジェクトがインタフェースを実装しているかどうかのテスト
- 12. インタフェースの実装方法は
- 13. .NET用OSGiの実装
- 14. 活字体関数インタフェースの実装
- 15. インタフェースの実装の指定
- 16. OSGiフレームワークの内容(内部実装)は何ですか?
- 17. インタフェースを実装し、
- 18. モデルのインタフェースをLaravelで実装する
- 19. JavaでOSインタフェースを実装するのは誰ですか?
- 20. インタフェースを実装した素数シーケンス(Java)
- 21. 複数のクラスを参照する単一のJavaクラス/インタフェースを実装する
- 22. 抽象クラス内のインタフェース実装のチェックはアンチパターンですか?
- 23. 城ウィンザーオート複数のインタフェースの登録とそれに対応する実装
- 24. Spring Serviceは複数のインタフェースを実装しています:良いか悪いですか?
- 25. 値がインタフェースを実装しているかどうかのチェックの説明。 Golang
- 26. 列挙は、その実装インタフェース
- 27. OSGi構成管理サービスの既存の実装ですか?
- 28. 複数のプラットフォームの実装を扱う
- 29. HaskellはOSGiを実装できますか?
- 30. OSGI動的メタタイプの実装方法
このモデルには1つの障害があります。このモデルは非常にパッシブなように見えます。これは、一度起動するとバンドルが見つかるだけです。私は利用可能なバンドルのディレクトリとそのエクスポートされたタイプがアクティブになる前に入手できることを期待していました。これは可能かどうか? –
バンドルについて学ぶためにはトラッカーでなければならないが、それは遅すぎることを意味し、どのブーンがアクティブ/非アクティブであるかを制御できないため、これは完全に可能ではない。 –