Instancia de configuración única y varias instancias de configuración

También puede configurar diversas instancias de configuración múltiples mediante los servicios metatype de OSGi.

Como se describe en el tema Descripción de la configuración mediante OSGi Metatype Service, puede utilizar el servicio metatype OSGi para admitir un único conjunto de propiedades de configuración para un servicio dado (identificado por un PID de configuración). También es común admitir varias instancias del mismo tipo de configuración, de la manera en que, por ejemplo, el perfil Liberty admite varias entradas para aplicaciones y orígenes de datos. Esto se puede realizar proporcionando una definición de metatype que indique al analizador de configuración de Liberty y al servicio de administración de configuración que está tratando con una configuración de fábrica. Además, la clase que recibe la configuración necesita para implementar la interfaz org.osgi.service.cm.ManagedServiceFactory.

Para dar soporte a varias instancias de elementos de configuración de nivel superior en el archivo server.xml, vea el ejemplo siguiente:
<server>
    <teenager name="joy" age="15" />
    <teenager name="angela" age="18" />
</server>
Para definir la configuración en los metadatos, añada un atributo factoryPid en el elemento Designate.
Nota: Necesitará un atributo pid si utiliza una interfaz ManagedServiceFactory para recibir la configuración; si utiliza un componente DS (declarative service o servicio declarativo), no es necesario.
<?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>
La implementación ManagedServiceFactory se registra como tipo de servicio ManagedServiceFactory, con el pid de fábrica siguiente:
bundleContext.registerService(ManagedServiceFactory.class, new MgdSvcFactoryImpl(), new Hashtable();
defaults.put(org.osgi.framework.Constants.SERVICE_PID, "teenager"));
La implementación ManagedServiceFactory recibe un conjunto de propiedades de cada instancia de la configuración teenager, cada una identificada de forma exclusiva por su propio PID (generado internamente) que se proporciona al método updated() de la siguiente manera:
public void updated(String pid, Dictionary<String, ?> properties)
						throws ConfigurationException {
	  	  String name = (String) properties.get("name");
    Integer age = (Integer) properties.get("age");
	}

Si se suprime una instancia de configuración determinada, por ejemplo, porque se suprime uno de los elementos teenager del archivo server.xml, se notifica de la implementación ManagedServiceFactory a través del método deleted(), y se proporciona el pid de la instancia suprimida. De esta manera, la implementación ManagedServiceFactory realiza un seguimiento de las instancias que son válidas en cualquier momento.


Icono que indica el tipo de tema Tema de referencia



Icono de indicación de fecha y hora Última actualización: Tuesday, 6 December 2016
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=rwlp_extensions_instances
Nombre de archivo:rwlp_extensions_instances.html