Pregunta

¿Es posible (y si es así, seguro) modificar el MANIFIESTO de un paquete en cualquier momento durante su ciclo de vida (es decir, presumiblemente solo entre INSTALADO y RESUELTO)?

Supongo que otra forma de hacer la pregunta sería

Después de INSTALADO, pero antes de RESUELTO, ¿el MANIFIESTO ya está completamente evaluado (es decir, se ignorarían los cambios adicionales) por lo que es demasiado tarde para cambiar?

Si todo lo anterior parece absurdo ... entonces mi siguiente pregunta sería, ¿alguien cree que es posible (sin hacks de framework desagradables) envolver la resolución MANIFEST (es decir, el paso del cargador de clases para obtener META-INF / MANIFEST. MF de un paquete) con un impl personalizado.

Antecedentes: considere un marco de modularidad existente, no basado en OSGi, para el que me gustaría simplificar la migración, hacia OSGi, ofreciendo la capacidad de implementar el tono de los "complementos" existentes. sin modificaciones, y en tiempo de ejecución, realice un análisis (los "complementos" están bien definidos, por lo que el mapeo no debería ser difícil) que los convierta en paquetes OSGi verdaderos, utilizando operaciones de tiempo de ejecución BND para generar un MANIFESTADO que se usaría en lugar del MANIFIESTO potencialmente inexistente o sin osgi-bundle.

Con suerte, eso tiene sentido (@njbartlett!)

¿Fue útil?

Solución

¿Por qué no definir un esquema de URL que mute el manifiesto como parte del proceso de instalación / actualización?Cuando el marco accede al paquete a través de su URLConnection, puede devolver un paquete mutado con el manifiesto mutado.Esto es básicamente lo que hace el soporte web bundle y también debería funcionar para usted.

Otros consejos

No, no puedes hacer esto.El archivo JAR completo (y por lo tanto el MANIFEST.MF) se lee durante la operación de instalación.Para cambiar algo en ese JAR, tendría que actualizar el paquete o desinstalar e instalar nuevamente.

Con respecto a lo que realmente quiere hacer, ¿por qué no puede simplemente realizar el análisis y la transformación a través de bnd antes de instalar el JAR como un paquete?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top