2012-07-13 12 views
5

Tengo un paquete de fragmentos que he creado para acceder a algunas funciones de agregar a un jar de terceros. Mi fragmento debería registrar un servicio para exponer esta nueva funcionalidad. No parece funcionar. Antes de profundizar en la resolución de problemas, me gustaría saber si esto está permitido. Es decir, ¿el observador de paquetes de Felix SCR observa o ignora los fragmentos?¿Puede un paquete de fragmentos OSGi publicar un servicio declarativo?

Respuesta

8

Aha, encontré la respuesta yo mismo en la especificación, sección 112.4.2: "SCR ignora un encabezado de manifiesto de componente de servicio especificado en un fragmento". Esto es coherente con 3.14.3: "La siguiente lista contiene los encabezados que no se deben usar en un paquete de fragmentos: Activador de paquete"

+1

Véase también http://stackoverflow.com/questions/8592860/component-inside-a-fragment-never-activated, lo que confirma lo que acaba de decir, pero con el añadido de que la información blueprint funciona para fragmentos. –

2

Sí. Pero el paquete anfitrión debe estar abierto a esto. Al abrir, quiero decir que el paquete de host debe tener el encabezado Service-Components configurado de modo que se encuentren los descriptores en el fragmento. Por ejemplo:

Service-Components: OSGI-INF/*.xml 

encontrará todos .xml archivos de la carpeta OSGi-INF/ del paquete de acogida todos los fragmentos unidos.

Vi que el proyecto SmartHome de Eclipse usa esta solución para hacer su interfaz de usuario más personalizable.

Más información: http://apache-felix.18485.x6.nabble.com/DS-amp-fragments-td5004610.html

Cuestiones relacionadas