У меня есть этот компонент (псевдо-код):Лучшего подход для обработки динамического дополнения услуг
@Component
class ServiceComponent {
Set<MyService> set = synchronizedSet();
@Activate
activate(){... process set...}
@Reference
addService(MyService service){set.add(service)}
}
Теперь, на начальном этапе, когда компонент активирован, он будет добавлять все доступные экземпляры MyService. Но как мне лучше обрабатывать дополнения после активации компонента?
Да, я знаю, поэтому я написал это псевдокод. Извините за путаницу, но как лучше всего справиться с динамическим поведением дополнений/абзацев. Я имею в виду, например, использовать наблюдаемый список (из Eclipse JFace), чтобы прослушать набор после его изменения после активации компонента. Но есть ли лучшие практики в чистом OSGi? –
Это зависит от того, что ваш код должен делать с этой информацией. –
Если вы используете наблюдаемый SWT/JFace, помните, что вы не можете предсказать, из какого потока будет вызываться метод addService. Поэтому вы не можете напрямую обновлять пользовательский интерфейс из этого метода. Вам нужно будет использовать 'Display.asyncExec', чтобы внести какие-либо изменения в пользовательский интерфейс, связанные с добавленной услугой. В Swing эквивалент будет 'SwingUtilities.invokeLater'. –