![[8.5.5.4 o posterior]](../ng_v8554.gif)
Manejadores de espacio de nombres de blueprint personalizados
La especificación Blueprint Container, introducida en el Release 5 de la especificación Enterprise OSGi, 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 el Release de la especificación Enterprise OSGi, 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 Especificación OSGi Blueprint Container.
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0">
<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ística de Liberty y Paquetes de aplicaciones OSGi, puede suministrar un servicio NamespaceHandler personalizado.