2012-05-17 2 views
1

eclipse에서 OSGI를 사용하기 시작했습니다. Declarative Services에서 서비스가 활성화되면 실행 된 두 가지 메소드가 있음을 알았습니다. 활과 바인딩 ... 이 두 가지의 차이점은 무엇입니까?다른 'Bind'와 'Activate'사이에 무엇이 있습니까

서비스 시작시 수행 할 특정 작업을 실행하려면 Bind 메서드 또는 Activate 메서드에 넣어야합니까?

답변

2

바인딩 방법은 구성 요소 인스턴스에 서비스 참조, 즉 구성 요소가 의존하는 서비스를 삽입하는 데 사용됩니다. activate 메소드 (선언되고있는 경우)는, 컴퍼넌트가 성립했을 때의 기동 처리의 마지막 스텝에서 불려갑니다.

그래서 모든 필수 종속성이 그 시점에서 해결되었음을 알고 activate 메소드에서 액션을 코딩하려고한다고 가정합니다.

선언적 서비스 구성 요소는 서비스 자체는 아니지만 서비스 자체를 제공 할 수도 있습니다.

+0

고맙습니다. 나는 그것을 가지고 있다고 생각합니다. :) – D007

+0

여러 서비스가 참조되는 번들에서 필자는 필요한 서비스를 사용할 수 있고 바인딩 된 후에 activate 메서드가 호출된다는 것을 알고 있습니다. 하지만 서비스 공급자 번들에서 activate 메서드가 호출되는 시점은 언제입니까? – D007

1

activate 메서드는 구성 요소가 활성화 될 때 호출됩니다. 따라서 초기화 작업을 수행하기에 좋은 시점입니다. bind 메서드는 구성 요소가 참조하는 각 서비스에 대해 한 번 호출됩니다. 따라서 구성 요소에 LogService에 대한 참조가있는 경우 LogService에 대한 bind 메서드는 각 LogService 개체가 구성 요소에 바인딩 된 상태에서 호출됩니다. 그런 다음이 메서드는 LogService을 필드에 저장할 수 있습니다.

+0

고맙습니다. :) – D007

관련 문제