Extensiones para el servicio metatype de OSGi
El entorno de ejecución de Liberty y las herramientas del desarrollador reconocen algunas extensiones para la especificación metatype de OSGi para configuraciones más complejas y ofrecen una mejor presentación en una interfaz de usuario.
Extensiones metatype de tiempo de ejecución
xmlns:ibm="http://www.ibm.com/xmlns/appservers/osgi/metatype/v1.0.0"
- ibm:alias
La extensión de alias se utiliza para definir un nombre fácil para la configuración mientras se reduce el riesgo de conflictos en los nombres de los elementos de configuración en el archivo server.xml.
El ejemplo siguiente muestra la extensión ibm:alias:
<OCD id="com.ibm.ws.jdbc.dataSource.properties" name="%properties" description="%properties.desc" ibm:alias="properties"> <AD id="username".../> </OCD>
En este ejemplo properties es el nombre sencillo de la configuración. El alias debe ser diferente del ID.
Cuando se utiliza la entrada ibm:alias en el archivo server.xml, se debe añadir el nombre de extensión de producto como prefijo. El nombre de la extensión de producto de las extensiones instalada en la ubicación de usuario predeterminada es usr. En extensiones de producto definidas en la instalación de perfil Liberty mediante un archivo nombre_extensión.properties en el directorio wlp/etc/extension, el nombre de extensión de producto es el nombre elegido en nombre_extensión.
Para metatype que se muestra en el ejemplo anterior, si la característica se instala en la ubicación usr predeterminada, a continuación verá ejemplos de entradas válidas de server.xml:<usr_properties username="JANE"/>
<com.ibm.ws.jdbc.dataSource.properties username="JANE"/>
- ibm:type
Los tipos de atributo estándar están definidos en la especificación metatype. Están disponibles diversos tipos extendidos de IBM®. Para obtener más información, consulte Tipos extendidos.
- ibm:reference
El atributo reference especifica el tipo OCD al que un PID hace referencia. Sólo se utiliza con el tipo ibm:pid y da soporte a la anidación de elementos en el archivo server.xml; consulte el tema Anidamiento de elementos de configuración.
El ejemplo siguiente muestra la extensión ibm:reference:
<AD id="fooRef" type="String" ibm:type="pid" ibm:reference="com.ibm.ws.foo".../>- ibm:final
El atributo final indica que el valor no se puede especificar en la configuración. En su lugar, se utiliza siempre el valor predeterminado de metatype. Utilice name="internal" para indicar que las herramientas no muestran esta propiedad.
El ejemplo siguiente muestra la extensión ibm:final:
<AD id="foo" name="internal" ibm:final="true" type="String" default=${someVariable}"/>- ibm:variable
El atributo variable se utiliza para especificar el uso de una variable como valor predeterminado si no se especifica ninguna. Se elige, por orden:
- El valor especificado en server.xml
- El valor especificado como una propiedad del sistema, por ejemplo en bootstrap.properties
- El valor predeterminado de metatype
El ejemplo siguiente muestra ibm:variable:
<AD id="traceString" ibm:variable="trace.string" default=*.all=enabled".../>- ibm:unique
- El atributo unique indica que un valor de configuración debe ser exclusivo entre todas las definiciones de atributos que utilizan el mismo grupo de atributos exclusivo. Se admiten los siguientes grupos de atributos exclusivos:
-
jndiName: utilice este grupo en atributos que registran un servicio utilizando la propiedad osgi.jndi.service.name con el nombre JNDI. Para obtener más información, consulte Desarrollo con el espacio de nombres JNDI predeterminado en una característica de Liberty
-
- Sintaxis del valor predeterminado default
Puede utilizar la sintaxis ${prop-name} en expresiones predeterminadas para crear series a partir de otras propiedades de configuración.
El ejemplo siguiente muestra una sintaxis del valor default:
<AD id="httpEndpoint.target" name="internal" description="internal use only" ibm:final="true" required="false" type="String" default="(&(virtualHost=${id}) (enabled=true))"/>
Tipos extendidos
- Duration
El tipo duration se utiliza para expresar una hora. Se describe en varias unidades de tiempo. Por ejemplo, "1h30m" sería una hora y media. "1d5h10s" sería 1 día, 5 horas y 10 segundos. Las unidades están globalizados, para que los usuarios puedan especificar los valores utilizando las abreviaturas de su idioma local.
Para el inglés, en la lista siguiente se muestran las unidades disponibles:
- d - Días
- h - Horas
- m - Minutos
- s - Segundos
- ms - Milisegundos
De forma predeterminada, cuando se utiliza la duración tipo, el valor que especifica el usuario se evalúa en milisegundos. Por ejemplo "10s" sería un valor largo de 10000 en el diccionario. Además, si un usuario especifica un valor sin ninguna unidad, este valor se evaluará en milisegundos. Por ejemplo, un valor de "10" se evaluaría como 10 milisegundos. Sin embargo, también puede especificar el tipo de duración de modo que se evalúe en una unidad diferente. Por ejemplo, si se especifica un valor de "10" con ibm:type="duration(s)" se evaluará como 10 segundos y se almacenará como 10 en el diccionario.
La lista siguiente muestra los tipos posibles:
- duration(h)
- duration(m)
- duration(s)
- duration(ms)
- duration
No hay ninguna diferencia entre especificar duration y duration(ms).
Nota:Procedimiento recomendado: incluya siempre una unidad en el valor y exprese el valor en la unidad resulte más fácil de leer. Por ejemplo, en lugar de especificar un valor de "7200" con ibm:type="duration(s)", especifique el valor como "2h".
Los ejemplos siguientes muestran el tipo de duration:
- <AD id="timeout" type="String" ibm:type="duration(s)".../>
- <AD id="timeout" type="String" ibm:type="duration".../>
- Ubicación
El tipo location permite que las herramientas de interfaz de usuario ofrezcan una presentación más útil de los atributos que representan diversas ubicaciones de archivos y directorios. No afecta al proceso del entorno de ejecución. El objeto del diccionario es siempre String.
Los ejemplos siguientes muestran los tipos posibles:
- location
- Hace referencia a un archivo. Esta referencia puede ser un archivo absoluto, relativo o puede ser un URL a un archivo.
- location(file)
- Hace referencia a un archivo utilizando una vía de acceso de archivo absoluta o relativa.
- location(dir)
- Hace referencia a un directorio utilizando una vía de acceso de archivo absoluta o relativa.
- location(url)
- Hace referencia a un archivo al final de un url.
El ejemplo siguiente muestra el tipo de location:
<AD id="location" name="%appmgr.location.name" description="%appmgr.location.desc" type="String" required="true" ibm:type="location"/>- Password
Tipo de contraseña que se utiliza en los campos de contraseña. Cuando se utiliza, el objeto de diccionario es una instancia de com.ibm.wsspi.kernel.service.utils.SerializableProtectedString. El valor del campo de contraseña no se registra en el archivo de rastreo. Las herramientas del desarrollador muestran las opciones de codificación que se pueden utilizar para un campo de contraseña. Las opciones de codificación válidas son xor y aes.
El ejemplo siguiente muestra el tipo de contraseña:
<AD id="password" type="String" ibm:type="password".../>- Contraseña hash
El tipo passwordHash es similar al tipo password de contraseña y se utiliza para los campos de contraseña hash. Cuando se utiliza, el objeto de diccionario es una instancia de com.ibm.wsspi.kernel.service.utils.SerializableProtectedString. El valor del campo de contraseña hash no se registra en el archivo de rastreo. Las herramientas del desarrollador muestran las opciones de codificación que se pueden utilizar para un campo de contraseña con hash. Las opciones de codificación válidas son xor, aes y hash.
Valide una contraseña nueva contra una contraseña hash utilizando el método PasswordUtil.encode(String, String, Map), con los parámetros siguientes:- Nueva contraseña.
- Algoritmo hash, que se obtiene llamando al método PasswordUtil.getCryptoAlgorithm. El algoritmo hash debe coincidir con el algoritmo de la contraseña hash.
- Objeto de propiedades, donde una de las propiedades utiliza PasswordUtil.PROPERTY_HASH_ENCODED para la clave y la contraseña hash del valor.
El ejemplo siguiente muestra el tipo passwordHash:
<AD id="hashedPassword" type="String" ibm:type="passwordHash".../>- Pid
El tipo pid se utiliza para hacer referencia a otro objeto en la configuración. Se utiliza con el atributo ibm:reference y da soporte a la anidación de elementos en server.xml; consulte el tema Anidamiento de elementos de configuración.
El ejemplo siguiente muestra el tipo de pid:
<AD id="fooRef" type="String" ibm:type="pid" ibm:reference="com.ibm.ws.foo".../>- OnError
El tipo onError da como resultado una instancia de enumeración onError en el diccionario. Los valores posibles son WARN, FAIL e IGNORE.
El ejemplo siguiente muestra el tipo onError:
<AD id="errorBehavior" type="String" ibm:type="onError".../>
Extensiones metatype de interfaz de usuario
xmlns:ibmui="http://www.ibm.com/xmlns/appservers/osgi/metatype/ui/v1.0.0"
- ibmui:localization
La extensión localization se utiliza para especificar el archivo de localización metatype. El archivo de localización metatype se utiliza para consultar las traducciones de las etiquetas y descripciones de otras extensiones de la interfaz de usuario. En la mayoría de los casos, el valor de la extensión ibmui:localization coincide con el atributo localization del elemento <Metadata>.
El ejemplo siguiente muestra la extensión ibmui:localization:
<OCD id="com.ibm.ws.jdbc.dataSource.properties" name="%properties" description="%properties.desc" ibmui:localization="OSGI-INF/l10n/metatype"> <AD id="username".../> </OCD>
- ibmui:extraProperties
La extensión extraProperties se utiliza para indicar que se puede establecer en esta configuración un conjunto arbitrario de atributos de configuración.
El ejemplo siguiente muestra la extensión ibmui:extraproperties:
<OCD id="com.ibm.ws.jdbc.dataSource.properties" name="%properties" description="%properties.desc" ibmui:extraProperties="true"> <AD id="username".../> </OCD>
La etiqueta y la descripción que está asociadas con la extensión se buscan en el archivo de localización metatype (si se ha especificado uno mediante la extensión ibmui:localization). Para la etiqueta de extensión se comprueba primero la clave extraProperties.<ocd id>.name y después la clave extraProperties.name. Para la descripción de extensión primero se comprueba la clave extraProperties.<ocd id>.description y después la clave extraProperties.description.
- ibmui:group
La extensión group se utiliza para especificar que el atributo pertenece a un grupo. En la interfaz de usuario, los atributos que se anotan con el mismo grupo están agrupados.
Los ejemplos siguientes muestran la extensión ibmui:group:
- <AD id="username" ibmui:group="userInfo".../>
- <AD id="password" ibmui:group="userInfo".../>
- <AD id="port" ibmui:group="hostInfo".../>
La etiqueta de grupo y la información de descripción se buscan en el archivo de localización metatype (si se ha especificado uno mediante la extensión ibmui:localization). Para la etiqueta de grupo se comprueba primero la clave <group>.<ocd id>.name y después la clave <group>.name. Para la descripción de grupo primero se comprueba la clave <group>.<ocd id>.description y después la clave <group>.description.