2016-07-26 2 views
1

私は複数のコンポーネントを持つOSGiバンドルを持っています。同じバンドル内の他のコンポーネントからコンポーネントをアクティブ/非アクティブ化したいと思います。OSGiのBundleContextからComponentContextを取得する方法

私はコードの下からBundleContextを得た:

import aQute.bnd.annotation.component.Activate; 
import aQute.bnd.annotation.component.Component; 
import aQute.bnd.annotation.component.Deactivate; 

@Activate 
public void activate(Map<String, Object> properties) { 

    BundleContext bundleContext = FrameworkUtil.getBundle(MyComponent.class).getBundleContext(); 
} 

しかし、私はenableComponentまたはdisableComponentを行うことができるようにどのように私はComponentContextを得ることができますか?

+1

@ゴルデンゲート:あなたの編集を承認しました。投稿から名前を削除する場合は、「ありがとう」、「こんにちは」なども削除する必要があります。[こちら](http://meta.stackexchange .com/questions/2950/should-hi-thanks-taglines-and-salutations-from-from-posts)を読んで興味のある方は、ディスカッションをしてください。 –

+0

標準化されたアノテーションに影響を与えたbndアノテーションは非推奨になるため、標準のOSGiアノテーションに切り替えることができます。 –

答えて

5

単純にComponentContextを挿入します。 BundleContextとconfigプロパティを取得できます。

@Activate 
public void activate(ComponentContext context) 
+2

また、すべての引数をactivateメソッドに入れることもできます:void activate(Map properties、ComponentContext context、BundleContext bc)。 –

関連する問題