Extensión del producto
Puede ampliar la capacidad de Liberty escribiendo extensiones del producto.
Puede escribir sus propias características de Liberty e instalarlas en un servidor de Liberty existente, o puede empaquetarlas para su entrega a los usuarios.
Liberty proporciona varias interfaces de programación del sistema (SPI) que puede utilizar para ampliar el entorno de ejecución; también puede utilizar características más avanzadas como, por ejemplo, el servidor de Liberty desde la aplicaciones Java™ mediante programación.
Extensión del producto
Una extensión de producto es un directorio del disco que está estructurada como el directorio de instalación de Liberty, ${wlp.install.dir}. Se define en la instalación de Liberty mediante un archivo en el directorio ${wlp.install.dir}/etc/extensions llamado extension-name.properties. El contenido del directorio de extensión de producto se utiliza para ampliar Liberty. Se pueden instalar varias extensiones del producto a la vez, pero deben tener nombres exclusivos; esto se aplica en la denominación de los archivos de propiedades. La ubicación de extensión del producto predeterminada, ${wlp.user.dir}/extension, no requiere un archivo de propiedades; el contenido en esta ubicación se detecta automáticamente y es conocido para el tiempo de ejecución como el producto de extensión "usr".
Las extensiones del producto normalmente contienen una o más características de Liberty, pero pueden tener cualquier contenido que amplíe el entorno de Liberty, por ejemplo, scripts o recursos.

com.ibm.websphere.productId=su_ID_producto
com.ibm.websphere.productInstall=vía_acceso_archivo_absoluta_o_relativa
com.ibm.websphere.productId=org.acme.supergui
com.ibm.websphere.productInstall=supergui/wlp-ext
Característica
Una característica de Liberty consta de un archivo de definición (manifiesto de característica), y una colección de paquetes OSGi que proporcionan clases y servicios correspondientes a una prestación concreta en el entorno de ejecución de Liberty.
Escenarios para utilizar una característica Liberty, en lugar de una aplicación regular
- Las características se controlan mediante la configuración del gestor de características, por lo que son independientes de la gestión de aplicaciones de usuario.
- El código de característica tiene acceso a la SPI Liberty, que permite una integración más profunda con el entorno de ejecución.
- Las características pueden recibir una configuración especificada por el usuario del archivo server.xml y exponer sus valores de configuración en las herramientas de desarrollo, sin necesidad de modificar las herramientas.
- Las características pueden exponer fácilmente las clases y los servicios entre ellas y para las aplicaciones de usuario.
- Las características pueden ser extremadamente ligeras, sin dependencias del contenedor de aplicaciones.
- Se pueden utilizar las funciones para aumentar un modelo de programación en particular. Por ejemplo, una característica de usuario puede añadir soporte para los manejadores de espacio de nombres de Blueprint personalizados o para las anotaciones de Blueprint al modelo de programación de aplicaciones OSGi.
Desarrollo de una característica simple
Consulte Desarrollo manual de una característica de Liberty, Creación de una característica de Liberty utilizando las herramientas del desarrollador, y Archivo de manifiesto de característica de Liberty.
Utilización de características del servidor
Para utilizar una característica escrita por usuario en el servidor Liberty, debe instalarla en un directorio de extensión del producto. Esto podría ser la ubicación "user product extension" predefinida o una extensión que se encuentra fuera del directorio de instalación de Liberty. A continuación, puede añadir el nombre de característica a la configuración del servidor.
La extensión del producto de usuario es un directorio predefinido donde el servidor busca características adicionales. El archivo .mf de la definición de característica debe copiarse en el directorio ${wlp.user.dir}/extension/lib/features y los archivos .jar del paquete deben copiarse en el directorio ${wlp.user.dir}/extension/lib.
Las características escritas por el usuario se añaden a la configuración del servidor de la misma manera que las características del producto. Para evitar conflictos de nombres con características de distintos proveedores, las características que forman parte de una extensión del producto deben tener el nombre de extensión como prefijo. Para las características en el directorio usr/extension/lib, el prefijo predeterminado es usr:.
<featureManager>
<feature>usr:simple-1.0</feature>
</featureManager>
<featureManager>
<feature>myExt:myFeature</feature>
</featureManager>
Cuando inicia el servidor, el gestor de características detecta la característica, y los paquetes se instalan en la infraestructura OSGi y se inician.
Consulte también Añadir y eliminar características de Liberty y Gestión de características.
Utilización mediante programación de una característica desde las aplicaciones
Las características pueden exponer las clases y los servicios para las aplicaciones.
Para exponer las clases Java para el uso de la aplicación, debe listar los paquetes de clases en la cabecera IBM-API-Package en el manifiesto de característica. El listado de los paquetes de clases en la cabecera IBM-API-Package hace que las clases estén visibles para los cargadores de clases de aplicación. La visibilidad de los paquetes de API puede controlarse mediante el tipo de visibilidad de la API. Consulte la sección Especificación de paquetes de API y SPI para un proyecto de característica Liberty.
Para que las aplicaciones OSGi puedan utilizar los servicios, debe listarlas en la cabecera IBM-API-Service en el manifiesto de característica. Una característica proporciona servicios OSGi, para que pueda hacer referencia a esos servicios mediante programación desde las aplicaciones.
Los servicios se deben registrar en el registro de servicios (SR) OSGi para que las aplicaciones (u otras características) los puedan localizar. Las aplicaciones OSGi y otras características pueden realizar una búsqueda directa desde el SR, o pueden utilizar prestaciones como Blueprint o los servicios declarativos de OSGi para inyectar sus dependencias de servicio. Es más probable que las aplicaciones Java EE localicen servicios a través de JNDI; en Liberty existe una federación de SR y JNDI que permite a las aplicaciones Java EE utilizar JNDI para localizar servicios en SR. Para obtener más información, consulte Cómo trabajar con el registro de servicio OSGi.
Exposición de características como aplicaciones web
Para exponer una característica Liberty como una aplicación web, puede publicar los paquetes OSGi en la característica como paquetes de aplicaciones web (WAB). Además de las cabeceras OSGi que requiere un paquete, puede especificar la vía de acceso de contexto de la aplicación web utilizando la cabecera Web-ContextPath.
Por ejemplo:
Web-ContextPath: myWABapp
Bundle-ClassPath: WEB-INF/classes
Inyección y proceso de configuración
Una ventaja importante de utilizar las características es que el usuario puede configurarlas fácilmente en el archivo server.xml (y los archivos incluidos). Los archivos de configuración se supervisan y analizan mediante el kernel Liberty y los conjuntos resultantes de propiedades se pueden inyectar en el componente relevante, cada vez que cambian.
La configuración de Liberty se gestiona mediante el servicio CA (administración de configuración) de OSGi en el kernel y se puede acceder a esta de acuerdo con dicha especificación. Los conjuntos de propiedades de configuración se identifican mediante una identidad persistente (PID) que se utiliza para asociar el elemento en el archivo server.xml, con el componente que registra para recibir las propiedades.
<com.acme.console color="blue" size="17"/>
La característica recibirá las propiedades siguientes:- color="blue"
- size="17"
De manera opcional, puede proporcionar metadatos que describen las propiedades de configuración utilizando descriptores de OSGi Metatype. El uso de descriptores hace que los metadatos de configuración se incluyan en el esquema de configuración generado por Liberty y es utilizado por las Herramientas de desarrollador, así que las propiedades de configuración se presentan automáticamente a los desarrolladores de aplicaciones, cuando configuran su servidor.
Para obtener más detalles sobre la recepción y la descripción de las propiedades de configuración, consulte Habilitación de un servicio para recibir datos de configuración.
Servicios declarativos en Liberty
Las características más complejas o de mayor tamaño suelen beneficiarse de la utilización de servicios declarativos (DS) de OSGi para permitir que la característica esté compuesta de varios servicios, y para gestionar la inyección de dependencias y propiedades de configuración. El uso de DS permite la activación lenta de servicios, el retardo de la carga de clases Java hasta que se utilice el servicio y la ordenación de la activación de servicios según las dependencias. La mayoría de las características en el producto Liberty son gestionadas por DS.
Consulte también Composición de características avanzadas utilizando servicios declarativos de OSGi.