의 동적 추가를 처리하기 위해 : 구성 요소가 활성화 될 때가장 좋은 방법은 서비스
@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' 메서드가 호출 될 스레드를 예측할 수 없다는 것을 명심하십시오. 따라서이 방법으로 UI를 직접 업데이트 할 수는 없습니다. 추가 된 서비스로 인해 UI를 변경하려면'Display.asyncExec'를 사용해야합니다. Swing에서 해당하는 것은'SwingUtilities.invokeLater'입니다. –