1

REST フロントエンドを持つ API を構築しており、スタック全体にほぼ 10 の異なるバンドルが含まれており、ゆっくりと成長しています。これはこれまでのところうまくいきます。

長期的には、API スタックのさまざまなバージョン (OSGi バーソニング メカニズムを使用) を用意し、REST フロントエンドを介して/api/v2/path/to/resourceまたは同様の形式でアクセスできるようにする予定です。

私が最初に考えたのは、新しいバージョンのスタック全体をデプロイすることだけでした。すべてのバンドルをインストールします。新しい REST バンドルは/api/<version-number>ブループリントで jaxrs-server に追加され、すべてが機能するはずですが、私の懸念は、長期的には大量のバンドルがデプロイされることです。インストールされているバンドルなどの全体的な概要が失われることを感じています。

何らかの方法でスタックを分離する方法はありますか? バージョンごとに新しいコンテナをインストールしたくありません。Karaf のインスタンスを少し調べましたが、バンドルが同じインスタンスにインストールされている場合と同じように、jaxrs-servers に「追加」できますか? 例えば。同じホスト、ポートなどで REST フロントエンドにアクセスします。

ありがとう

4

2 に答える 2

2

私は間違いなくバージョン間の分離に行きます。

確かに、OSGi のバージョン管理は非常に強力ですが、同じバンドルのさまざまなバージョンを多数展開する場合は、すべての配線を正確に行うことをお勧めします。そうしないと、デバッグが非常に困難な問題に直面することになります。また、新しいバージョンを展開することで、古いバージョンを台無しにする可能性があります。これは、まさに防止したいことです。

Karaf では、インスタンス間でバンドルを簡単に共有できないため、インスタンス間の分離は少し重すぎるかもしれません。

これに対処するOSGi標準はサブシステムと呼ばれ、これにより、httpサーバーのように、コードの大部分を共有するさまざまなスコープのサブアプリケーションを使用して、必要なことを実行できます。

この標準はかなり新しいもので、成熟した実装はないと思いますが、Eclipse Virgoを参照することをお勧めします。乙女座はサブシステムをサポートしていません (まだ?) が、乙女座には「計画」の概念があり、それがあなたの目的に役立つと思います。

于 2013-03-30T10:44:26.340 に答える