단일 구성 인스턴스 대 다중 구성 인스턴스

OSGi Metatype Service를 사용하여 여러 구성 인스턴스를 구성할 수도 있습니다.

OSGi Metatype Service를 사용하여 구성 설명에 설명된 대로 OSGi Metatype Service를 사용하여 지정된 서비스(구성 PID로 식별)의 단일 구성 특성 세트를 지원할 수 있습니다. 동일한 구성 유형의 여러 인스턴스를 지원하는 것도 일반적입니다(예: Liberty가 애플리케이션 및 데이터 소스에 대해 여러 항목을 지원하는 방식으로). 이는 팩토리 구성을 처리 중임을 Liberty 구성 구문 분석기 및 구성 관리 서비스에게 알리는 메타 유형 정의를 제공함으로써 수행될 수 있습니다. 또한 구성을 수신하는 클래스는 org.osgi.service.cm.ManagedServiceFactory 인터페이스를 구현해야 합니다.

다음과 같이 server.xml 파일에서 최상위 레벨 구성 요소의 여러 인스턴스를 지원합니다.
<server>
    <teenager name="joy" age="15" />
    <teenager name="angela" age="18" />
</server>
factoryPid 속성을 Designate 요소에 추가하여 메타데이터의 구성을 정의해야 합니다.
참고: ManagedServiceFactory 인터페이스를 사용하여 구성을 받으려는 경우에는 여전히 pid 속성이 필요합니다. 선언 서비스(DS) 컴포넌트를 사용하는 경우에는 이 속성이 필요하지 않습니다.
<?xml version="1.0" encoding="UTF-8"?>
<metatype:MetaData xmlns:metatype="http://www.osgi.org/xmlns/metatype/v1.1.0"  
                   xmlns:ibm="http://www.ibm.com/xmlns/appservers/osgi/metatype/v1.0.0">

    <OCD id="teenager-ocd" name="teenager" >
       <AD id="name" name="name" type="String" />
       <AD id="age" name="age" type="Integer" />
    </OCD>

    <Designate factoryPid="teenager" pid="teenager">
        <Object ocdref="teenager-ocd" />
    </Designate>
  
</metatype:MetaData>
다음과 같이 ManagedServiceFactory 구현이 ManagedServiceFactory 서비스 유형으로 팩토리 pid에 등록됩니다.
bundleContext.registerService(ManagedServiceFactory.class, new MgdSvcFactoryImpl(), new Hashtable();
defaults.put(org.osgi.framework.Constants.SERVICE_PID, "teenager"));
ManagedServiceFactory 구현이 teenager 구성의 각 인스턴스에 대한 특성 세트를 수신합니다. 각 인스턴스는 다음과 같이 updated() 메소드에 제공된 고유(내부적으로 생성된) PID로 고유하게 식별됩니다.
public void updated(String pid, Dictionary<String, ?> properties)
						throws ConfigurationException {
	  	  String name = (String) properties.get("name");
    Integer age = (Integer) properties.get("age");
	}

예를 들어, server.xml 파일에서 teenager 요소 중 하나가 삭제되어 특정 구성 인스턴스가 삭제된 경우 deleted() 메소드를 통해 ManagedServiceFactory 구현에 알리며 삭제된 인스턴스의 pid가 제공됩니다. 따라서 ManagedServiceFactory 구현이 지정된 임의의 시점에 유효한 인스턴스를 계속 추적할 수 있습니다.


주제의 유형을 표시하는 아이콘 참조 주제

파일 이름: rwlp_extensions_instances.html