2012-03-04 14 views
3

OSGiと非OSGiが混在する環境を使用します。 したがって、生成されたすべてのJARはバンドルであり、OSGiコンテナの内部と外部の両方でデプロイメントとランタイムを可能にします。したがって、私たちはすべてOSGi APIの統合なしで書かれており、すべてのサービスをOSGiサービスとして登録するために単一のOSGiエクステンダバンドルを使用します。OSGiの内外で使用されるバンドルの推奨DIソリューション

OSGiコンテナの内側と外側の両方にシステムを配線する際には、1つのDIソリューション(つまり同じ設定ファイル)を使用したいと考えています。むしろ効果的に、私は単純な青写真DIを使用できません。

ここで何をお勧めしますか? この種のシナリオで収集されたベストプラクティスはありますか?

答えて

2

春を使用してください。

明らかにOSGiの外部で動作し、Spring dmを使用してOSGiの内部で動作するようにすることができます。 Beanをサービス・レジストリーとの間でバインドするためには、単にosgiコンテキスト・ファイルを追加する必要があります。

Eclipse RCPアプリケーションでは、複数のプロジェクトで数年間使用しています。この特定のケースでもUIレベルで物事を結びつけるのに使うことができます。

+0

男、「SpringSource Tool Suite」全体を必要としないことを教えてください。 – drozzy

4

私はpojosr

OSGiフレームワークを使用せずに、OSGiのスタイルのサービスレジストリのプログラムを可能にサービスレジストリを見てお勧めします。

OSGiのライフ・サイクル・レイヤーの一部とサービスを、通常はそうでない環境で利用できるようにすることです。

これは、宣言型サービス

+0

興味深いですが、pojosrは私が望むものと逆のサービスを提供します。私は人々がコーディングに通常の依存性注入(すなわち、非osgi-colored)を使用し、依存性注入がin-OSGiデプロイメントランタイムと同じ方法で魔法のように動作するようにしたいと思います。 –

+0

+1 PojoSRとDSは理想的ですが、ほとんどのテストカバレッジでレガシーシステムにかなりの変更が加えられる可能性があります。 – earcam

+0

+1これはOSGiの内部と外部の両方で同じように動作します。私はあなたが "普通の依存症注射"の意味を知らない。 –

3

オプションのカップルによって提供されるものよりも多くを必要としない限り、あなたが、でも、公式のOSGiフレームワーク外で、通常のOSGiサービス・レジストリと宣言型サービスを利用することができます。

  1. グーグルGuiceは、外部(Peaberryを使用してimplicitly、明示的に)内部の両方を動作します。
  2. アパッチCamel - キャメルのbean bindingは、OSGiの、春、(私の知る限り)すべてのEJBコンテナ(でもJBoss)で動作しますし、またGuiceのとうまく動作します。

それはあなたが素敵な新しいOSGiのとレガシーのミックスで、複数のJVM間で実行している可能性がありますとおり、キャメルのEIPは本当に良いフィットかもしれません。しかし、あなたはいつでもGuiceを使い始めることができ、後でCamelを統合することができます。

あなたが決めるところでは、のJARファイルにOSGiマニフェストが含まれていることを確認することが賢明でしょう。

関連する問題