1

過去 10 年間、Spring を依存性注入として使用して、2 つのアプリケーション スイートを構築してきました。spring-batch と spring-amqp も使用します。現在、OSGI への移行を検討しています。これにより、モノリシック アプリケーションを複数のバンドルに分割して、より機敏性を高めることができます。2 つのスイートは Web アプリケーションであり、2 つの個別の war ファイルとしてデプロイされます。OSGI ランタイムとして Apache Karaf を使用する予定です。

Spring-DM は廃止され、依存関係の注入にブループリントを使用するには、すべてを変換する必要があるようです。

私の質問は、これを段階的に行う方法です。このすべてを一度に変換することは不可能に近いでしょう。バンドル アクティベーターのサービス レジストリに必要なサービスを公開する責任がある限り、1 つのバンドルで Spring DI を使用し、独自のアプリケーション コンテキストを持つことができるように思われますが、存在するかどうかはわかりません。トランザクション管理のように失われる魔法のようなものです。

これに関するガイダンスをいただければ幸いです。

4

2 に答える 2

2

問題をさらに大きく見せて、Blueprint の代わりに DS に切り替えることを検討することもできます... OSGi モデルを真に活用するには、DS はあらゆる面で Blueprint よりもはるかに優れています。実際には、最初のハードルを越えた後は、はるかに進歩し、より多くの利益を得ることができます。Blueprint は Spring を OSGi で利用できるようにしましたが、OSGi を「取得」することはありませんでした。

戦略として、Spring アプリを単一のバンドルとして存続させ、徐々に移行していきます。つまり象のアプローチです。

OSGi が提供する最大の利点は、次のように要約できます。

  • モジュールには、コラボレーションのみを処理するサービス API があることを確認してください。つまり、各サービス API は、アクターがどのように存在し構成されるかではなく、アクターがどのように連携するかというストーリー/シナリオである必要があります。
  • 構成管理者が構成作業を行えるようにします。つまり、構成 API を公開することはありません。OSGi では、構成が必要なものではなく、インスタンスを登録します。

OSGi モデルとサービスを本当に理解していることを確認してください。OSGiを最大限に活用するOSGi enRouteを調べてみてください。

于 2016-02-29T09:14:42.023 に答える
0

blueprint-maven-plugin をご覧になることをお勧めします。これにより、CDI および JEE アノテーションのサブセットを使用して、インジェクション、トランザクション、永続性を定義できます。プラグインはビルド時にブループリント xml を作成し、それを karaf で実行できます。大きな利点は、これらの注釈が Spring でもサポートされていることです。したがって、Spring を使用して本番環境に移行し、並行してリリースできます。

ここに完全な例がありますAnnotation based blueprint and JPA .

このプラグインを使用して、開発とリリースが並行して行われている中規模のプロジェクトを移行しました。プラグインの使用中にさらにアドバイスが必要な場合は、きっとお役に立ちます。

于 2016-02-15T22:59:46.820 に答える