Manejadores de espacio de nombres de blueprint personalizados

La especificación Blueprint Container, introducida en OSGi Enterprise Specification Release 5, proporciona un modelo de programación simple y sencillo para crear aplicaciones dinámicas en el entorno OSGi sin añadir complejidad al código Java™.

Para obtener más información sobre OSGi Enterprise Release Specification, consulte Descarga de la especificación OSGi.

La especificación Blueprint Container define una infraestructura de inyección de dependencias para OSGi. Está diseñada para manejar la naturaleza dinámica de OSGi, donde los servicios pueden convertirse en disponibles y no disponibles en cualquier momento. La especificación también está diseñada para funcionar con objetos Java antiguos sin formato (POJO), de modo que los mismos objetos pueden utilizarse dentro y fuera de la infraestructura OSGi. Los archivos XML de Blueprint que definen y describen los diversos componentes de una aplicación son claves para el modelo de programación Blueprint. La especificación describe cómo se crean instancias de los componentes y se conectan entre sí para formar una aplicación en ejecución. Para obtener más información, consulte la información sobre la especificación OSGi Blueprint Container en la documentación de WebSphere Developer Tools.

Cada paquete de Blueprint debe contener un archivo XML de Blueprint para que el tiempo de ejecución de Blueprint pueda procesar el componente Blueprint del paquete. El elemento blueprint estándar se define en la especificación blueprint de OSGi y es necesario en todos los documentos xml de blueprint. Establece el espacio de nombres de documento predeterminado en http://www.osgi.org/xmlns/blueprint/v1.0.0, por ejemplo:
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0">
Pueden añadirse otros espacios de nombres al blueprint mediante reglas estándar XML, ya sea como entradas con prefijo o directamente dentro de los elementos XML personalizados. Estos espacios de nombres se pueden añadir en el nivel superior o pueden estar incorporados a los elementos XML personalizados. Si es XML válido, se analiza correctamente. Por ejemplo, definido en el elemento blueprint de nivel superior:
<blueprint 
  xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
  xmlns:tx="http://aries.apache.org/xmlns/transactions/v1.0.0">
Por ejemplo, incorporado en un elemento personalizado:
<transaction method="*" value="Required"
  xmlns:tx="http://aries.apache.org/xmlns/transactions/v1.0.0"/>

La implementación de tiempo de ejecución de blueprint que proporciona el proyecto Apache Aries se utiliza para dar soporte a paquetes Blueprint que están contenidos en aplicaciones OSGi para Liberty. Para obtener más información, consulte Apache Aries. El tiempo de ejecución de Blueprint Aries proporciona un mecanismo de extensión denominado manejadores de espacio de nombres. Un manejador de espacio de nombres suministra un procesador para extensiones o espacios de nombres de blueprint personalizados. Un manejador de espacio de nombres implementa la interfaz org.apache.aries.blueprint.NamespaceHandler y debe registrarse en el registro de servicios de OSGi con una propiedad de servicio osgi.service.blueprint.namespace asociada. Esta propiedad indica los URI de espacio de nombres que este manejador puede procesar. Por ejemplo: http://aries.apache.org/xmlns/transactions/v1.0.0. El valor de la propiedad de servicio puede ser una única Serie o URI, una Colección o una matriz de Serie o URI.

El tiempo de ejecución de blueprint analiza dos veces los descriptores de blueprint. El primer paso es rápido y sólo encuentra cada uno de los espacios de nombres utilizados en el paquete de blueprint. Si el paquete de blueprint utiliza un espacio de nombres no estándar, el contenedor de blueprint intenta localizar servicios NamespaceHandler en el registro de servicios OSGi para cada espacio de nombres personalizado. Un servicio NamespaceHandler advierte todos los espacios de nombres XML que puede procesar utilizando las propiedades de servicio OSGi. El tiempo de ejecución de blueprint no analiza el XML de blueprint hasta que pueden encontrarse servicios NamespaceHandler para cada espacio de nombres personalizado que se utiliza en el paquete. A menos que puedan encontrarse servicios NamespaceHandler para cada espacio de nombres personalizado, el contenedor de blueprint no podrá procesar el paquete. Este resultado puede implicar que el contenedor de blueprint espere indefinidamente si no existe ningún NamespaceHandler. Si se produce esta situación, el contenedor de blueprint emite un aviso en el registro. Cuando el analizador de blueprint empieza a analizar los archivos XML de blueprint, analiza los elementos blueprint estándar. Cuando el analizador llega a un elemento personalizado, llama al NamespaceHandler que ha detectado el soporte para el espacio de nombres del elemento personalizado. Aquí, NamespaceHandler tiene la oportunidad de procesar la información del elemento personalizado, modificar el modelo de blueprint de tiempo de ejecución o realizar cualquier otra operación. Si hay un error de escritura en cualquiera de las definiciones de espacio de nombres, es casi seguro que el blueprint no podrá iniciarse.

Cualquier paquete que se ejecute en Liberty, incluidos paquetes de características de Liberty y paquetes de aplicaciones OSGI, puede proporcionar un servicio NamespaceHandler personalizado.


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_blueprint_namespace_handler
Nombre de archivo:rwlp_blueprint_namespace_handler.html