0

OSGiでConfigurationオブジェクトを作成したいのですが、永続化されないため、フレームワークを再起動したときに存在しません。バンドルのSTART_TRANSIENTに似ています。

背景:OBR上にデプロイされたOSGi(Felix)ベースのクライアント側アプリケーションがあります。私が話している構成オブジェクトは、アプリケーションを効果的に起動します。これは正常に機能しますが、コンテキストが停止している間にコンテンツが変更されることがあります。その場合、OSGiがすべてのバンドルを復活させ、すべての構成オプションを追加すると、アプリケーションが起動します。次に、正しい構成を挿入すると、アプリケーションが停止してから再起動します。

したがって、実際には機能しますが、アプリは2回起動し、古い状態を再構築する前にフレームワークにアクセスできません。

何か案は?

4

3 に答える 3

1

OSGiConfigAdmin仕様はこれをサポートしていません。また、私が精通しているCM implのいずれについても、非標準的な手段を知りません。

于 2012-07-11T23:36:42.853 に答える
1

BJが言ったように、構成管理仕様ではこれに対する標準サポートはありません。

ただし、Felixの実装は、役立つ2つの機能をサポートしています。まず、felix.cm.dirconfigadminが内部状態を保存する場所を構成するプロパティを設定できます(デフォルトでは、Frameworkストレージディレクトリの下のどこかにあります)。これを自分で制御する場所に設定し、OSGiを起動するたびにワイプすることができます(起動するたびにOSGi Frameworkストレージディレクトリ全体をワイプすることもできます...これを行う人もいますが、より広い結果が得られますを求めました)。

次に、もう少し制御が必要な場合、FelixConfigAdminはPersistenceManagerサービスを使用した永続性のカスタマイズをサポートします。おそらくこれを実装して、制御したい特定のpidに対して空/存在しないを返すことができます。

于 2012-07-12T00:50:38.090 に答える
0

さて、私が最後にしたことは次のとおりでした:

  • OBRからプロビジョニングしない、特別な非常に小さな「ブート」バンドルを作成しました。代わりに、クラスパスからインストールします。

  • そのバンドルが構成を制御し、その構成を本当にロードしたい瞬間にSTART_TRANSIENTを使用します。

正確にはきれいではありませんが、それは仕事を成し遂げます。一時的な構成はOSGiで行うのが理にかなっていると思います。

于 2012-07-13T08:38:09.190 に答える