Java 如何从OSGi中的BundleContext获取ComponentContext

Java 如何从OSGi中的BundleContext获取ComponentContext,java,osgi,osgi-bundle,Java,Osgi,Osgi Bundle,我有一个包含多个组件的OSGi捆绑包,我想激活/停用同一捆绑包中其他组件的组件 我从下面的代码中获得了一条文本: import aQute.bnd.annotation.component.Activate; import aQute.bnd.annotation.component.Component; import aQute.bnd.annotation.component.Deactivate; @Activate public void activate(Map<String,

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

我从下面的代码中获得了一条文本:

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();
}

但是如何获取ComponentContext,以便执行enableComponent或disableComponent?

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

@Activate
public void activate(ComponentContext context)

只需注入ComponentContext。然后可以从中获取BundleContext以及配置属性

@Activate
public void activate(ComponentContext context)

@金门:我批准了你的编辑。我想指出的是,如果你想从帖子中删除好的名字,你还应该删除谢谢,嗨,等等。请参阅讨论,如果您感兴趣的话。您可能希望切换到标准OSGi注释,因为启发标准化注释的bnd注释将被弃用。@Golden Gate:我批准了您的编辑。我想指出的是,如果你想从帖子中删除好的名字,你还应该删除谢谢,嗨,等等。请参阅讨论,如果您感兴趣。您可能希望切换到标准OSGi注释,因为启发标准化注释的bnd注释将被弃用。您还可以将所有参数放在activate方法上:void activateMap properties,ComponentContext context,BundleContext bc。您还可以将所有参数放在activate方法上:void activateMap属性、ComponentContext上下文、BundleContext bc。