Tengo un problema al descubrir los servicios proporcionados por algunos paquetes OSGi que no se están activando. Permítaseme describir la situación:No se puede encontrar el servicio porque el paquete OSGi no está activado
- Bundle A define la interfaz X
- Lotes B, C y D proporcionan servicios que implementa la interfaz X
- servicios de estos paquetes están registrados a través de la primavera DM, por lo que solo se crean cuando el paquete está activado y Spring DM inicializó el contexto de la aplicación definido en el paquete
- El paquete A está activado y en algún momento le pide al servicio de registro de servicios para la interfaz X. Doe no encuentra ninguno, porque los paquetes B, C y D no se han movido al estado ACTIVO (solo se RESUELVEN).
Parece que no puedo obtener los paquetes B, C o D para comenzar y, por lo tanto, registrar sus servicios. Obligarlos a comenzar agregándolos al config.ini
no es una opción, porque puede haber cualquier cantidad de paquetes que estén instalados en la aplicación (a través de un mecanismo de actualización tipo P2 de Eclipse) que implementen la interfaz X.
La aplicación es una aplicación RCP basada en Eclipse 3.5, que utiliza Spring 2.5.6 y Spring DM 1.2.1.
¿Cómo fuerzo estos paquetes a activarse?
¿Podría proporcionarnos alguna información sobre los mensajes de error que recibe? Y: Bundle A exporta la interfaz X, y Bundle B, C, D lo importan, ¿verdad? – akr
Sí, la interfaz X se exporta mediante el paquete A, y se importa mediante B, C y D. No hay ningún mensaje de error. La consulta de servicios que implementan X en el registro de servicio simplemente devuelve una lista vacía. –
¿Cuál es la cardinalidad que está solicitando en 'A'? Si es '1..N' tienes una dependencia circular. –