Una parte fundamental dentro de la especificación OSGi es el conjunto de metadatos que deben ser situados en el fichero MANIFEST.MF y que permitirán a la implementanción OSGi instalar el bundle dentro del entorno de ejecución, resolver sus dependencias y publicar todo aquello que queramos sea visto por otros bundles.
Me voy a basar en el documento que define la especificación OSGi 4.1 para listar todas las cabeceras disponibles actualmente, su finalidad y sus características.
La lista de cabeceras, por orden alfabético, es la siguiente:
Descripción de cabeceras
Bundle-ActivationPolicy
Especifica como el framework debe activar el bundle. Si debe hacerlo de forma normal cuando arranca el framework o de forma perezosa, no se activará hasta que no sea cargada una clase.
Valores permitidos : lazy
Valor por defecto : ninguno. Si no se incluye esta cabecera se activará el bundle al arranque del framework.
Ejemplo
Bundle-ActivationPolicy : lazy
Bundle-Activator
Nombre de la clase usada para arrancar y parar el bundle. La clase debe implementar la interfaz BundleActivator.
Ejemplo
Bundle-Activator : es.jmac.osgi.infrastructure.Activator
Bundle-Category
Lista de nombres de categoría, separadas por comas.
Valores permitidos : libre, valores separados por comas. OSGi recomienda utilizar los valores de una lista predefinida.
Valor por defecto : ninguno. Si no se incluye esta cabecera se activará el bundleal arranque del framework.
Ejemplo
Bundle-Category : example, device, testing
Bundle-Classpath
Define un lista, separada por comas, de rutas de ficheros JAR y directorios (dentro del bundle) con las clases y recursos del bundle. El “.” especifica el directorio raiz del JAR del bundle.
Valor por defecto : .
Ejemplo
Bundle-Classpath : lib/commons-logging-1.1.1.jar, . , resources/html
Bundle-ContactAddress
Dirección de contacto del proveedor.
Bundle-Copyright
Especificación de copyright y licencia para el bundle.
Bundle-Description
Descripción corta del bundle.
Bundle-DocURL
URL con la documentación del bundle.
Bundle-Localization
Esta cabecera debe contener el fichero base dentro del bundleque defines las información multi-idioma.
Valor por defecto : OSGI-INF/l10n/bundle
Esta ruta la resuelve el framework como OSGI-INF/l10n/bundle.properties, por tanto cada fichero de idioma debe tener el siguiente nombre : bundle_es.properties, bundle_de.propertie
Ejemplo
Bundle-Localization : resources/labels
Bundle-ManifestVersion
Define que versión de la especificación OSGi debe seguir el bundle.
La versión 1 del Manifest es para la release 3.
La versión 2 es para la release 4, la actual.
Valor por defecto : 1
Ejemplo
Bundle-ManifestVersion : 2
Bundle-Name
Nombre corto para el bundle. Puede contener espacios.
Ejemplo
Bundle-Name : Pruebas OSGi
Bundle-NativeCode
Esta cabecera contiene una especificación de las librerías de código nativo contenidas en el bundle.
Ejemplo
Bundle-NativeCode : /lib/http.DLL; osname = QNX; osversion = 3.1
Bundle-RequiredExecutionEnvironment
Contiene una lista, separada por comas, de los entornos de ejecución que deben estar presentes en la Plataforma de Servicio.
Ejemplo
Bundle-RequiredExecutionEnvironment : CDC-1.0/Foundation-1.0
Bundle-SymbolicName
Especifica un nombre único, dentro de la VM, para el bundle. El nombre debería seguir la convención de dominio inverso. Esta cabecera es obligatoria.
Ejemplo
Bundle-SymbolicName : es.jmac.osgi.infrastructure
Bundle-UpdateLocation
Especifica la URL a partir de la cual se recuperarán las actualizaciones para el bundle. Si el bundle es actualizado, esta ruta debería ser usada si está presente, para recuperar el fichero JAR actualizado.
Ejemplo
Bundle-UpdateLocation : https://justoaguilar.com/repo/osgi
Bundle-Vendor
Descripción del proveedor del bundle.
Ejemplo
Bundle-Vendor : Justo Aguilar
Bundle-Version
Especifica la versión del bundle. La versión debe seguir obligatoriamente el formato :
version ::=
major( '.' minor ( '.' micro ( '.' qualifier )? )? )?
major ::= number // See 1.3.2
minor ::= number
micro ::= number
qualifier ::= ( alphanum | ’_’ | '-' )+
Valor por defecto : 0.0.0
Ejemplo
Bundle-Version : 1.0.1.Built20090801-143221
DynamicImport-Package
Esta cabecera contiene una lista, separada por comas, de nombres de paquetes que deberían ser dinámicamente importados cuando se necesiten.
Ejemplo
DynamicImport-Package : es.jmac.osgi.*
Export-Package
Contiene la declaración de los paquetes a exportar.
Ejemplo
Export-Package : !es.jmac.osgi.infrastructure, es.jmac.osgi
Export-Service
Obsoleto. (Deprecated)
Fragment-Host
Define el bundle maestro para este fragmento.
Ejemplo
Fragment-Host : es.jmac.osgi.infrastructure;version="[1.0.0,2.0.0)"
Import-Package
Especifica los paquetes a importar por este bundle.
Ejemplo
Export-Package : !es.jmac.osgi.infrastructure, es.jmac.osgi
Import-Service
Obsoleto. (Deprecated)
Require-Bundle
Especifica la lista de bundles (paquetes) obligatorios a utilizar en este bundle.
Ejemplo
Require-Bundle : org.apache.commons.logging;version="1.1.1",org.springframework.context;version="(2.0.0,3.0.0)"