각 서비스의 구성 특성은 OSGi Metatype Service 스펙과 함께 컴파일되는 메타데이터에 설명되어 있습니다.
메타데이터에는 기본값, 번역 가능한 이름과 설명 및 유효성을 검증할 수 있는
정보를 포함할 수 있습니다. 결과 XML 파일은 스펙에 따라 OSGI-INF/metatype 디렉토리에 서비스가 포함된 번들로 패키지됩니다.
이 태스크 정보
구성을 설명하기 위해 선택적으로 메타데이터를 제공할 수 있습니다.
메타데이터를 제공하면 다음과 같은 이점이 있습니다.
- 기본값은 구현 코드와 분리하여 기본값을 찾기 쉬운 메타 유형
XML 파일에 둘 수 있습니다.
- 각 속성에 대해 적절한 데이터 유형과 기타 유효성 검증 데이터를 지정하여
구성 구문 분석기 및 개발자 도구로 유효성을 검증할 수 있도록 하고
속성을 처리하기 위해 작성하는 코드를 단순화할 수 있습니다.
- 개발자 도구 및 기타 유틸리티에서 사용 가능한 구성에 대해
설명하는 XML 스키마에 구성이 포함됩니다.
- 각 속성에 대한 번역 가능한 이름과 설명을 제공할 수 있으며
이러한 이름과 설명은 개발자 도구에 표시됩니다.
프로시저
- 번들의 OSGI-INF/metatype 디렉토리에
xml 파일을 작성하고 OSGi Metatype 네임스페이스의 네임스페이스
선언을 추가하십시오.
<metatype:MetaData xmlns:metatype="http://www.osgi.org/xmlns/metatype/v1.1.0">
</metatype:MetaData>
- ID와 선택적으로 이름 및 설명이 포함된 속성 세트를
포함하도록 오브젝트 클래스 정의(OCD) 요소를
추가하십시오. server.xml 파일과
코드에서 사용한 PID에 OCD를 맵핑하도록 Designate 요소도 제공하십시오.
<OCD name="b2c" description="bundle two config" id="b2c-id">
</OCD>
<Designate pid="testBundleTwo">
<Object ocdref="b2c-id" />
</Designate>
- OCD에서 각 구성 특성의 속성 정의(AD) 요소를
추가하십시오. 각 속성에는 삽입된 구성을 받는 코드와
server.xml 파일에서도 사용하는 ID가
필요합니다. 선택에 따라 개발자 도구와 기타 그래픽 도구에서
사용할 수 있는 이름과 설명도 있습니다. 데이터 유형을 지정하면 런타임 환경이
해당 유형에 대한 입력의 유효성을 검사할 수 있으며 처리
코드가 간단해집니다. 유용한 기본값을 지정하면 사용자 제공
구성을 최소화할 수 있으며 알려진 위치에 구성 기본값이 모두
포함됩니다.
<AD name="boolProperty" description="a boolean property" id="boolProp"
type="Boolean" default="false" />
- 이제 다음과 같은 metatype.xml 파일이 작성됩니다.
<?xml version="1.0" encoding="UTF-8"?>
<metatype:MetaData xmlns:metatype="http://www.osgi.org/xmlns/metatype/v1.1.0">
<OCD name="b2c" description="bundle two config" id="testBundleTwo-2-id">
<AD name="textProperty" description="a text property"
id="textProp" type="String" default="default string" />
<AD name="boolProperty" description="a boolean property"
id="boolProp" type="Boolean" default="false" />
<AD name="intProperty" description="an integer property"
id="intProp" type="Integer" default="14" />
</OCD>
<Designate pid="testBundleTwo-2">
<Object ocdref="testBundleTwo-2-id" />
</Designate>
</metatype:MetaData>
- 구성 특성을 받도록 서비스를 코딩하십시오.
메타 유형 설명이 없으면 모든 특성이 String 값으로
제공되며 다음과 같이 처리됩니다.
String textProp = (String) properties.get("textProp");
Boolean boolProp = Boolean.parseBoolean((String) properties.get("boolProp"));
int intProp = Integer.parseInt((String) properties.get("intProp"));
String textProp = (String) properties.get("textProp");
Boolean boolProp = (Boolean) properties.get("boolProp");
int intProp = (Integer) properties.get("intProp");
런타임 환경은
입력 값의 유효성을 이미 검사하여 올바른 유형의 입력 값임을
확인합니다.