2017-06-16 5 views
1

活性化されました。また、コンポーネントクラスはインターフェイスを実装しているので、コンポーネントのアクティブ化の際に自動的にサービスが登録されることを理解しています。有効な方法は、私はOSGiのコンポーネントを持って

ここで、特定の条件が満たされている場合、コンポーネントのアクティブ化とサービス登録を動的に中断できるようにしたいと思います。コンポーネントアクティベータで 'ComponentException'をスローすると、ジョブが実行されないようです:

@Activate 
public void activate() { 
    if (notReady) 
    throw new ComponentException("Component not ready"); 
} 

何か提案がありますか?ありがとう!

答えて

2

アクティブ化する前に発生するサービス登録をプリエンプすることはできません。あなたは2つのコンポーネントを使う方が良いでしょう。サービスを持つ第2のコンポーネントを有効にするか無効にするかを決定する、サービスのない即時のもの。この2番目のコンポーネントは、デフォルトで無効にすることができます。

0

私はさらに上記のBJ Hargraveの答えに基づいてグーグル・グーグルを行いました。このスレッドで解決策の詳細がわかりました。私は参照のためにそれを掲示しています:

OSGi DS & deactivating a component manually

関連する問題