大規模OSGiアプリケーションの管理

eclipse java maven-2 osgi

私はたくさんのバンドルを含む、大きく成長しているOSGiアプリケーションを持っています。 この種のアプリケーションを管理するための最善の方法を知りたいと思います。 現在、私はEclipseとMavenを使用していますが、これは(maven-bundle-pluginを介して)バンドルを構築するのに最適ですが、現在のところアプリケーション全体を管理するのは容易ではありません。

私がやりたいことは、実行可能なONE実行構成またはONE pom.xmlのどちらかを持ち、アプリケーション/プロジェクト全体を構築して起動することです。 また、デバッグに役立つものが欲しいのですが。

私はPAX Constructのことを聞いてEclipseにインストールしたことがありますが、これまでのところほとんど役に立ちません(おそらく私はそれを正しく使っていないのでしょう)。

大規模なOSGiアプリケーションを正しく管理している人がいると確信しています。 共有できるアドバイスがあれば、非常に役に立ちます。

ありがとう、スティーブン

  3  0


ベストアンサー

実行設定はhttp://paxrunner.ops4j.org/space/Pax Runner [Pax Runner]で可能です。 それはあなたがOSGiプラットフォームの実装を選択することを可能にし、プロファイル(ある役割のためのバンドルの事前にパッケージ化されたセット、例えば 「+ web 」、「 log 」、「 ds +」など)およびプロビジョニングのサポートが良好です。たとえば、Mavenリポジトリからバンドルをロードできます。 その結果、次のような実行設定を持つことができます。

--platform=felix
--log=INFO
--profiles=scalamodules,ds,config,log
mvn:com.my/bundle/[email protected]
# other bundles

アプリケーションが非常に大きい場合、または異なるアプリケーションがある場合は、独自のプロファイルを作成する方法もあります。

1


まあ…

それはすべてあなたがアプリケーションを「管理する」ことによって何を意味するのかに依存します。

開発、構築、デバッグに時間を割くために – Eclipse IDEはこの請求にぴったり合うはずです。

Maven …​ 私はそれを自分で使ったことがないので、私はそれについて話すことはできません。

私たちはかなり大規模なEclipseベースのアプリケーション(実際にはいくつか)を持っていますが、開発者側ではEclipse以外に特別なものは何も使用していません。それは統合SCMです。

ccビルドサーバーでは、構築とパッケージ化を行うためにヘッドレスエクリプスも使用します。

これで、ワークスペースのセットアップはすべての依存関係と中間ビルドステップで少し手遅れになったので、ターゲットプラットフォームのマテリアライゼーションを管理するために Buckminsterを調査していますワークスペースリソース。

それがうまくいけば、私たちはおそらくBuckyを使った構築に移るでしょう – それは確かに有望に見えます。

(私はPAXの経験がありませんが、一見したところ、それは同様に有望に見えます…​)

1


私はOSGiにはかなり新しいですが、

バンドルを必要とする1つのOBRリポジトリファイルを用意し、OBRサービスに依存関係を見つけさせてOSGホストを追加するような方法でOBRサービスを使用することはできませんか。

0


この分野は、現時点では非常に貧弱な支援しか受けていないと思います。 OSGIは実際には展開やパッケージングについては何も定義していないので、他のフレームワークに任されています( それを実行するための独自の方法を考え出す

RCP(Eclipseベース)アプリケーションを構築しているのであれば、Eclipseシステムはexesなどの作成に至るまで、これらすべてを行います。 しかし、ビルドは主にEclipseワークスペース上で行われ、ヘッドレスビルドはより面倒です。 TychoプロジェクトはMavenとEclipseのビルドサイクルに参加することによってこれをより賢明にしようとしています、しかしそれは一般的なOSGIよりもむしろRCPアプリケーションに焦点を合わせています。

あなたがRCPをしていないのであれば、これも私の状況ですが、私は一般的な解決策を見つけていないので、おそらくあなたはあなた自身の解決策を実行しなければなりません。 これが私たちがしていることの概要です。

アプリケーションに含まれるすべてのバンドルをリストするPOMプロジェクトを1つ定義します。 このプロジェクトが行うのは、参照を一覧表示することです – それを ‘bundle-list’プロジェクトと呼びましょう。

それから、開発モードでプロジェクトを実行するためにpaxプロビジョンを使います。 これは、 ‘bundle-list’ pomをpaxプロジェクトのプロビジョニングpomの親にすることで(通常は ‘provision’フォルダーに)あります。 次に、paxを起動すると、そのプロジェクトのバンドルのリストを使ってOSGIを起動します。 これを機能させるには、 ‘bundle-list’プロジェクト内のバンドル参照を ‘提供’スコープとしてマークする必要があります。

それから、ディストリビューションを作成するために別のプロジェクトがあります。 このプロジェクトは、その親として ‘bundle-list’プロジェクトも持っています。 このプロジェクトはバンドルjarのダウンロードを含む配布を作成するために様々なプラグインを使用します。 このディストリビューションにはOSGIを起動するスクリプトが含まれていますが、これらは手書きのもので、paxシステムはありません。

これはバンドルのリストを1か所にまとめておくためにはうまくいきますが、それでも多くの手書きのスクリプトがあり、2つのシステム間で設定を共有する問題があります 設定ファイル、バンドルの開始レベルなど

0


タイトルとURLをコピーしました