1

検索ではヒントが得られませんでした。次の状況でどのように動作できますか。

同じインターフェースの2つのOSGI実装が欲しいです。1つは通常のもので、もう1つは指定された期間(クリスマスの週はfe)で動作する(アクティブ/現在/何でも)必要があります:))

主な目標は、フラグ/プロパティを指定せずに、またはランキングを手動で切り替えずに、同じインターフェイスを呼び出すことです。アプリケーションは、この特別な期間の実装を何らかの方法で切り替え、前後に別の/通常のジョブを実行する必要があります:)

私は初心者です。OSGIの概念をどこかで完全に理解していない可能性があります。ヒントやリンクを教えてくれて申し訳ありません。英語で申し訳ありません。

ApacheAriesでのFelix/Equinoxの使用。

4

5 に答える 5

3

サービスの発行者は、通常のAPIを使用して、いつでもそのサービスを登録および登録解除できます。選択した場合は、定期的なスケジュールに従って行うことができます。

継続的に利用可能な別のサービスインスタンスがある場合、サービスの利用者はサービスの2つのインスタンスを表示することもあれば、1つを表示することもあります。使用可能なインスタンスが1つしかない場合、そのインスタンスのみを取得するのは簡単です。インスタンスが2つある場合は、「優先」インスタンスを確実に取得する方法が必要です。SERVICE_RANKINGプロパティは、これを行う方法です。getService通常の方法でServiceTrackerは常に上位のサービスが返されるため、要件を満たしているように見えます。

于 2010-12-19T23:23:00.520 に答える
1

フレームワークレベルで日付/時刻ベースのサービスの可用性をサポートするOSGIコンテナーをまだ見たことがありません。

もし私があなたなら、2つのインターフェース実装の前にプロキシサービスをドロップし、そこに日付ロジックに基づいたサービス呼び出しを配置するだけです。

于 2010-12-18T13:59:17.247 に答える
0

あなたが求めているものに対するフレームワークのサポートはないと思います。

サービスフィルターを回避する場合は、これを試してみてください。

PolicyServiceを実装します。このサービスは、特定の時点でサービスのどのインスタンスを登録するかを決定する役割を果たします。ポリシーサービスが実装を切り替えるときは、通常どおり、登録/登録解除APIを使用します。ポリシーサービス実装は、サービス実装マッピングへの日付範囲を指定する構成ファイルを読み込むことができます。これにより、構成ファイルを変更し、新しいサービスで新しいバンドルをインストールすることにより、新しい動作を追加できます。

于 2010-12-21T00:09:46.047 に答える
0

私は、サービスが実際に呼び出せる場合にのみ、サービスがそれ自体を公開する必要があるというNeilに同意します。この問題に対する私の解決策は、すべてのサービスプロデューサーを「時間制約の依存関係」に依存させることです。このような依存関係は、標準の依存関係フレームワーク(Declarative Services、Blueprint、iPOJOなど)では使用できませんが、Apache Felix Dependency Managerを使用して簡単に実装できます。これにより、独自のタイプの依存関係を作成できます。このような新しい依存関係を一度作成するのは手間がかかることに注意してください。ただし、これがアプリケーションのコア部分である場合は、それだけの価値があると思います。サービスの利用者は特別なロジックを必要とせず、そこにあったサービスを呼び出すだけです。

于 2010-12-30T12:49:13.287 に答える
0

さて、私がついにやったこと...

  1. 共通のディスパッチャバンドルを実装し、それを介してのみサービスを呼び出します(したがって、呼び出しがオンデマンドの場合、cronは必要ありません)
  2. ディスパッチャがリクエストを取得すると、独自のキャッシュでインターフェイスを検索し、
  3. 同じランキングのサービスが1つ以上あり、両方が等しい(登録されている)場合-次に
  4. ディスパッチャは、「from」フィールドと「to」フィールドを使用して独自に記述した@TimigPolicyアノテーションを介して必要なサービスを解決します
  5. 指定されたサーバーの場合newdatetime()-ディスパッチャは適切なサービスインスタンスを返します

多くの仕事、私は言うべきです:)しかし、ほぼ完璧に動作します:)

ヒントをくれてありがとう、本当に助かりました!!!

于 2011-01-04T17:57:12.167 に答える