Aplicaciones OSGi

Una aplicación OSGi agrupa un conjunto de paquetes para proporcionar una lógica empresarial coherente. La aplicación puede estar compuesta por diferentes tipos de paquete como, por ejemplo, paquetes habilitados para la web y persistencia.

Los paquetes de una aplicación OSGi están aislados de los paquetes, servicios o paquetes definidos en otra aplicación OSGi, a menos que los paquetes, servicios o paquetes lo compartan explícitamente ambas aplicaciones. Una aplicación OSGi puede contener directamente paquetes OSGi o paquetes de referencia que se alojan en un repositorio de paquetes OSGi.

Los paquetes OSGi de la aplicación pueden proporcionar servicios con otras aplicaciones OSGi. Si una aplicación OSGi produce algún servicio y referencia externos, se exponen explícitamente declarándolos en un manifiesto de aplicación. Del mismo modo, todos los servicios y referencias externos que consume la aplicación OSGi se declaran en el manifiesto de aplicación. Una aplicación OSGi también puede utilizar metadatos para permitir la compartición de algunos de sus paquetes constituyentes en el sistema. La compartición de esta forma puede reducir los requisitos de memoria y recursos de un sistema.

Una aplicación OSGi contiene:
Contenido del archivador
Manifiesto de aplicación
Manifiesto de despliegue

Contenido del archivador

El contenido del archivo se utiliza de dos formas distintas, dependiendo de si hay definida una cabecera Application-Content en el manifiesto de aplicación.
  • Si no se define ninguna cabecera Application-Content, el contenido del archivador define el contenido de la aplicación OSGi.
  • Si se define una cabecera Application-Content, el contenido del archivador define un repositorio de paquete inicial a partir del cual se pueden suministrar los paquetes. Si un paquete con una versión específica se ha instalado en un repositorio gobernado y el paquete también está incluido en un archivador de aplicación, se utilizará el paquete del archivador.

Manifiesto de aplicación

El manifiesto de aplicación, META-INF/APPLICATION.MF, describe la modularidad a nivel de aplicación. De forma predeterminada, cuando no se declara el manifiesto de aplicación, el contenido de la aplicación es el conjunto de paquetes OSGi incluidos en la aplicación OSGi y no se producen ni consumen otras referencias o servicios externos.

Un manifiesto de aplicación puede contener las cabeceras siguientes:
Application-SymbolicName

El único nombre simbólico de la aplicación OSGi, que utiliza anotación de paquete en Java.

Application-Version

La versión de la aplicación que utiliza la sintaxis OSGi para una versión del paquete.

Application-Name

El nombre de la aplicación.

Application-ImportService

Declare las dependencias externas del paquete que utiliza el marco de trabajo OSGi para la resolución de paquetes. Se pueden declarar versiones específicas o rangos de versiones para cada servicio.

Un conjunto de filtros para los servicios externos que consume la aplicación. El manifiesto de aplicación debe contener las clases que necesitan los servicios. Si no se especifica esta cabecera, no se importa ninguno de los servicios necesarios.

Especifique los servicios necesarios en una lista separada por comas, con el nombre de la interfaz de servicio en primer lugar, seguido de los atributos o las directrices.
<identificar de servicio>;<directrices>;<atributos>
Por ejemplo:
test.it;filter="some_filter"
La cabecera Application-ImportService tiene el atributo siguiente:
filter
Un filtro de servicio OSGi.
Application-ExportService

Declara los servicios que están visibles fuera del paquete. Cualquier servicio que no esté declarado aquí sólo tiene visibilidad dentro del paquete.

Un conjunto de filtros para los servicios externos que genera la aplicación. Si no se especifica esta cabecera, no se exporta ninguno de los servicios necesarios.

Especifique los servicios exportados en una lista separada por comas, con el nombre de la interfaz de servicio en primer lugar seguido de atributos o directivas.
<identificar de servicio>;<directrices>;<atributos>
Por ejemplo:
test.it;filter="some_filter"
La cabecera Application-ExportService tiene el atributo siguiente:
filter
Un filtro de servicio OSGi.
Use-Bundle

Un paquete compartido que proporciona al menos un paquete a un paquete de aplicación.

Una lista de paquetes o paquetes compuestos que se deben utilizar para satisfacer las dependencias de paquetes de la lista Application-Content. Cada paquete o paquete compuesto de la lista Use-Bundle debe proporcionar como mínimo un paquete a al menos un paquete de la lista Application-Content. Estos paquetes se aprovisionan en el espacio de paquetes compartidos en tiempo de ejecución.

A menudo, no necesita una cabecera Use-Bundle, pero hay algunos casos en los que es útil. Puede utilizarla para restringir el nivel en el que es posible la compartición. Por ejemplo, puede asegurarse de que una aplicación utiliza el mismo paquete para importaciones de paquetes con las que se ha probado. Como alternativa, puede asegurarse de que dos aplicaciones utilizan el mismo paquete para importaciones de paquetes. Estableciendo la restricción de nivel de aplicación, el paquete puede seguir siendo flexible.

Application-WebModules

Lista de no proyectos web dinámicos no OSGi que se incluyen en la aplicación.

Esta cabecera no forma parte del estándar de OSGi.

Application-Content
Una lista de paquetes compuestos, fragmentos de paquete y paquetes con el rango de especificaciones de versión OSGi aceptable que se incluyen en la aplicación.
Consejo: Cuando se incluye un fragmento de paquete en la lista Application-Content, asegúrese de incluir el paquete del sistema principal para el fragmento.
El formato es una lista separada por comas de declaraciones de módulo, donde cada declaración de módulo utiliza el formato siguiente:
<identificar de módulo>;<directrices>;<atributos>

Normalmente, el identificador de módulo es el nombre simbólico de un paquete. Para hacer referencia a un recurso que no es un paquete, el identificador de módulo es la vía de acceso relativa a la raíz de la aplicación OSGi.

La cabecera Application-Content tiene el atributo siguiente:
version
La versión del módulo se especifica utilizando la sintaxis OSGi para un rango de versión. Especifique la versión mínima de la aplicación seguida de la versión máxima a la que se puede actualizar la aplicación. Por ejemplo, "[1.0.0,2.0.0)" significa la versión 1.0.0 y todas las demás versiones hasta la versión 2.0.0 sin incluirla.

La cabecera Application-Content define las aplicaciones importantes que forman los servicios empresariales, pero no define la lista completa de los paquetes de la aplicación. Si un paquete que se lista en el contenido utiliza un paquete que no se incluye en la aplicación, se llevará a cabo un análisis de dependencias y se incluirán los paquetes que falten. Estos paquetes no pueden proporcionar servicios externos a la aplicación y no se les puede aplicar seguridad. Se comparten los paquetes que se incluyen utilizando este mecanismo.

Manifiesto de despliegue

Cuando se instala una aplicación OSGi, el manifiesto de aplicación especifica los paquetes que componen una aplicación. Se puede especificar más de una versión para algunos paquetes.

El manifiesto de despliegue, META-INF/DEPLOYMENT.MF, especifica todos los paquetes que forman la aplicación, incluidos los paquetes que son necesarios después del análisis de dependencias. El manifiesto de despliegue especifica la versión real de cada paquete que se utiliza en la aplicación. Se crea automáticamente cuando se instala un activo EBA (Enterprise Bundle Archive) y asegura que cada vez que se inicie un servidor de aplicaciones, los paquetes que forman la aplicación sean los mismos.

Un EBA define un conjunto de paquetes OSGi que se despliegan como una aplicación OSGi única y que se aíslan de otras aplicaciones OSGi. Un archivo EBA es un archivo de archivado único con una extensión de archivo .eba. Contiene un conjunto de módulos de aplicación o un manifiesto de aplicación o ambas cosas.

Después de instalarse una aplicación, la versión de un paquete puede actualizarse configurando el activo EBA.

Un manifiesto de despliegue contiene las cabeceras siguientes:
Application-SymbolicName
El único nombre simbólico de la aplicación, que utiliza anotación de paquete en Java.Este coincide con el valor Application-SymbolicName en el manifiesto de la aplicación.
Application-Version
La versión de la aplicación que utiliza la sintaxis OSGi para una versión del paquete. Este coincide con el valor Application-Version en el manifiesto de la aplicación.
Deployed-Content

Una lista separada por comas de los nombres simbólicos de los paquetes y las versiones exactas a utilizar.

La lista incluye todos los paquetes que se listan en la cabecera Application-Content en el manifiesto de la aplicación, así como los paquetes importados por el análisis de dependencias. Se incluyen los tipos de módulo no de OSGi que utilicen el nombre simbólico del paquete convertido.

La cabecera Deployed-Content tiene la siguiente directiva:
deployed-version
La versión exacta del paquete, especificada utilizando la sintaxis OSGi para una versión.
Icono que indica el tipo de tema Tema de conceptos
Términos y condiciones para centros de información | Comentarios

Icono de indicación de fecha y hora Última actualización: 22 de abril de 2014

Nombre de archivo: ceba.html