Есть ли способ деактивировать данный компонент OSGI по его названию?деактивировать/отключить компонент OSGI по имени из внешнего пакета
Метод componentContext.disableComponent(componentName)
- но он работает только с компонентами одного и того же пучка.
Какое решение лучше всего подходит для этого, не добавляя новую услугу к данному пакету для деактивации компонента?
Решение:
При использовании, например, Felix это будет:
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();
}
}