Después de pedir ayuda para gestionar dependencias en diferentes versiones de las mismas bibliotecas en Java, se sugirió que debería echar un vistazo a las implementaciones OSGI. Al estar bajo una presión de fecha límite, realmente podría usar alguna ayuda que me salvaría de cavar a través de interminables documentos OSGI. Tengo una aplicación que funciona, que va a utilizar un nuevo marco. El marco utiliza diferentes versiones de jar que ya estoy usando, por lo que quiero empaquetar el nuevo marco como un paquete OSGI. ¿Puedo dejar mi aplicación tal como está y utilizar el paquete OSGI solo como un contenedor dentro de JVM? Esto significaría que usaría el paquete OSGI solo para aislar un conjunto de clases del resto de la JVM para evitar conflictos entre diferentes versiones de clases. en otras palabras, quiero usar OSGI sin llevar todo mi código a una configuración basada en OSGI.Cómo empaquetar y consumir una biblioteca Java existente con OSGI
Saludos cordiales Seref
Gracias Thilo (y deterb), esta es la situación: mi software está utilizando una biblioteca particular, que tiene dependencias con x.v1.jar. Ahora tengo que agregar otra biblioteca a mi proyecto, que tiene dependencias con x.v1.1.jar En este caso, incluso si administro cosas en tiempo de compilación, en tiempo de ejecución, tendrá que haber dos jarras, que contengan clases con los mismos nombres, y ya sea la primera biblioteca que estoy usando o la segunda puede terminar accediendo a la versión incorrecta de una clase, o no puede llegar a una clase, etc. El desorden no es difícil de imaginar. – mahonya
Ahora, si pudiera crear una especie de recinto de seguridad dentro de JVM, por ejemplo, al poner toda la nueva biblioteca en un paquete, me estaría deshaciendo de mi problema. En este caso, estaría usando algún tipo de mecanismo para cargar tipos de la biblioteca empaquetada (mecánica OSGI). Por ejemplo, si puedo usar los nombres de reflejo y tipo para recuperar instancias de tipos contenidos en OSGI, ¿usarían esos tipos el cargador de clases del contenedor OSGI? De ser así, cargarían tipos de x.v1.1.jar y esta podría ser una solución en mi caso. Consideraría cambiar todo a OSGI gradualmente, si puedo manejar este pequeño pero crítico caso de uso. – mahonya
@serefakin: Sí, podría poner x.v1.1.jar en OSGi, pero también debe colocar la biblioteca que depende de él (porque debe evitar que vea x.v1.jar). Y eso hace que sea difícil usar la biblioteca desde un código fuera de OSGi (a menos que tenga una interfaz que también pueda vivir fuera). – Thilo