有没有办法按名称停用给定的OSGI组件?
有componentContext.disableComponent(componentName)
方法 - 但它只适用于同一个包的组件。
在不向给定包添加新服务以停用组件的情况下,执行此操作的最佳实践解决方案是什么?
解决方案:
使用时,例如菲利克斯这将是:
import org.apache.felix.scr.ScrService;
@Reference
private ScrService serviceComponentRuntime;
public void stopByName(final String componentName)
{
final org.apache.felix.scr.Component[] components = serviceComponentRuntime.getComponents(componentName);
for (final org.apache.felix.scr.Component component : components)
{
component.disable();
}
}