如何从OSGi中的BundleContext获取ComponentContext

Ash*_*hok 1 java osgi osgi-bundle

我有一个包含多个组件的OSGi包,我想从同一个包中的其他组件激活/停用组件.

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();
}
Run Code Online (Sandbox Code Playgroud)

但我怎么能得到ComponentContext这样我可以做enableComponentdisableComponent

Chr*_*der 5

只需注入ComponentContext即可.然后,您可以从中获取BundleContext以及配置属性.

@Activate
public void activate(ComponentContext context)
Run Code Online (Sandbox Code Playgroud)

  • 您还可以将所有参数放在activate方法上:void activate(Map <String,Object> properties,ComponentContext context,BundleContext bc). (2认同)