単一構成インスタンスの場合と複数構成インスタンスの場合の違い

OSGi Metatype Service を使用して、複数の構成インスタンスを構成することもできます。

OSGi Metatype サービスを使用した構成の記述』で説明されているように、 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>
Designate エレメントに factoryPid 属性を追加することによって、 メタデータで構成を定義する必要があります。
注: ManagedServiceFactory インターフェースを使用して構成を受け取る場合は、 pid 属性が依然として必要です。Declarative Service (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 実装は、 次のようにファクトリー PID とともに ManagedServiceFactory サービス・タイプとして登録されます。
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");
	}

teenager エレメントの 1 つが server.xml ファイルから削除されたなどの理由で、特定の構成インスタンスが削除された場合、 deleted() メソッドを通じて ManagedServiceFactory 実装に通知され、削除されたインスタンスの PID が提供されます。 これにより、ManagedServiceFactory 実装が、いつでも有効なインスタンスを追跡できるようになります。


トピックのタイプを示すアイコン 参照トピック



タイム・スタンプ・アイコン 最終更新: Monday, 5 December 2016
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-libcore-mp&topic=rwlp_extensions_instances
ファイル名: rwlp_extensions_instances.html