구성 특성 수신을 위한 서비스의 코딩
구성 특성은 활성화 메소드에서 제공된 org.osgi.service.component.ComponentContext 오브젝트를 통해 사용 가능합니다.
시작하기 전에
이 태스크 정보
활성화가 발생한 후 특성이 업데이트된 경우 삽입에 사용되는 메소드는 서비스가 자체의 OSGi 선언 서비스(DS) 선언에서 제공하고 컨텍스트에 따라 달라집니다.
일반적으로 서비스 선언에 modified 속성을 사용하여 특별히 업데이트된 특성의 인젝션에 사용할 메소드를 선언하는 것이 가장 좋습니다. 수정된 메소드를 사용할 수 없는 경우 DS는 서비스를 비활성화한 후 새 특성을 사용하여 서비스를 다시 활성화합니다.
서비스를 비활성화한 후 활성화하면 종속 서비스가 다시 순환되는 원인이 될 수 있으므로 특별히 필요한 경우가 아니면 피해야 합니다. 구성 업데이트를 받아보기 위한 좋은 방법은 modified 속성을 사용하는 것입니다.
예
이전 태스크 서비스를 지속적 ID와 연관시키기에서 서비스를 DS로 정의했습니다.
다음 내용은 그 태스크에 설명되어 있던 DS 선언으로부터의 메소드 활성화 및 수정에 대한 예입니다.
private static Dictionary<String, Object> _props = null;
protected void activate(ComponentContext cc) {
_props = cc.getProperties();
}
protected void modified(Map<?, ?> newProperties) {
if (newProperties instanceof Dictionary) {
_props = (Dictionary<String, Object>) newProperties;
} else {
_props = new Hashtable(newProperties);
}
}
구성 특성의 값을 가져올 때에는 어느 정도의 유연성이 허용되는 다음 메커니즘을 사용하십시오.
- 동일한 번들에 포함된 기본 특성을 예상할 수 있되, 사용자 구성의 마이그레이션이 필요하지 않도록 사용자 대체를 허용하는 방향으로 메소드를 코딩하십시오.
- 중복되거나 인식되지 않는 특성을 무시하십시오.