Paquetes de aplicaciones, paquetes de uso y paquetes de suministro

Los paquetes de aplicación son específicos de una instancia y cada instancia de una aplicación incluye su propia instancia del paquete. Los paquetes compartidos no son específicos de una instancia y una única instancia de un paquete o servicio de un paquete compartido puede ser utilizada por muchas aplicaciones. Los paquetes compartidos se subdividen adicionalmente en paquetes de uso y paquetes de suministro.

Paquetes de aplicación

Los paquetes de aplicación son paquetes que se crean específicamente para la aplicación. Son específicos de cada instancia o aislados; es decir, no están pensados para ser compartidos. El manifiesto de aplicación hace referencia a ellos en la cabecera Application-Content.

Paquetes compartidos

Los paquetes compartidos no son específicos de una aplicación. Varias aplicaciones pueden utilizar una única instancia de un paquete de un paquete compartido. Los paquetes compartidos no pueden importar paquetes o servicios de paquetes de aplicación. Los paquetes compartidos deben proporcionarse mediante referencia en lugar de contenidos directamente en una aplicación.

Los paquetes compartidos se subdividen adicionalmente en paquetes de uso y paquetes de suministro:
Paquetes de uso
Un paquete de uso proporciona al menos un paquete al paquete de aplicación. Los paquetes de uso son paquetes compartidos a los que se hace referencia en el manifiesto de aplicación en la cabecera Use-Bundle.
Si especifica un paquete compartido en concreto como un paquete de uso, puede controlar qué paquete se suministra para proporcionar un paquete compartido. Por ejemplo, si hay dos proveedores posibles de un paquete, el paquete A y el paquete B, y hay una declaración de paquete de uso para el paquete A, el paquete A siempre se suministra y utiliza.
Paquetes de suministro
Un paquete de suministro proporciona al menos un paquete o servicio a un paquete de aplicación, un paquete de uso u otro paquete de suministro. No se hace referencia a los paquetes de suministro en el manifiesto de aplicación, y la aplicación no sabe cómo se cumple el requisito de cada paquete de suministro.

Si tiene dos aplicaciones OSGi separadas y desea que compartan las mismas clases de API, puede empaquetar dichas clases como un paquete de uso y luego hacer referencia de dicho paquete en la cabecera Use-Bundle de ambos manifiestos de aplicación. Para los administradores, otra ventaja de los paquetes de uso es que se pueden supervisar y actualizar utilizando la consola de administración o mandatos wsadmin.

Terminología de suministro de paquete y uso de paquete

Los paquetes OSGi se pueden almacenar en cualquiera de las ubicaciones siguientes:
  • El archivo de paquetes empresariales (EBA) de la aplicación.
  • El repositorio de paquetes interno.
  • Los repositorios de paquetes OSGi externos.

Lospaquetes de aplicación se pueden almacenar en el archivo EBA o en un repositorio. Los paquetes compartidos se almacenan en un repositorio (de lo contrario, no se pueden compartir).

El proceso de obtención de paquetes de los repositorios se conoce como suministro. A efectos de suministro, se utiliza la terminología siguiente para los paquetes:
Paquetes de referencia
Un paquete de referencia es un paquete al que se hace referencia en el manifiesto de aplicación y que se almacena en un repositorio.
Paquetes de dependencia
Un paquete de dependencia es un paquete al que no se hace referencia en el manifiesto de aplicación, pero que lo utilizan los paquetes a los que se hace referencia en el manifiesto de aplicación, u otros paquetes de dependencia.
Así es como la terminología para uso de paquete (es decir, paquetes de aplicación, de uso y de suministro) se correlaciona para el suministro de paquete (es decir, paquetes de referencia y de dependencia):
  • Los paquetes de aplicación que no se incluyen directamente en el archivo EBA son paquetes de referencia específicos de una instancia.
  • Los paquetes de uso son paquetes de referencia compartidos.
  • Los paquetes de provisión son paquetes de dependencia compartidos.