Après avoir demandé de l'aide pour gérer les dépendances sur différentes versions des mêmes bibliothèques dans Java, il a été suggéré que je devrais jeter un oeil aux implémentations OSGI. Étant sous la pression d'un délai, je pourrais vraiment utiliser de l'aide qui me sauverait de creuser à travers d'interminables documents OSGI. J'ai une application qui fonctionne, qui va utiliser un nouveau cadre. Le framework utilise différentes versions de jars que j'utilise déjà, donc je veux empaqueter le nouveau framework en bundle OSGI. Puis-je laisser mon application telle quelle et utiliser l'ensemble OSGI uniquement comme conteneur dans la machine virtuelle Java? Cela signifierait que j'utiliserais le bundle OSGI uniquement pour isoler un ensemble de classes du reste de la JVM afin d'éviter les conflits entre différentes versions de classes. en d'autres termes, je veux utiliser OSGI sans transporter tout mon code vers une configuration basée sur OSGI.Comment empaqueter et consommer une bibliothèque Java existante avec OSGI
Amitiés Seref
Grâce à Thilo (et à son intérêt), voici la situation: mon logiciel utilise une bibliothèque particulière, qui dépend de x.v1.jar. Je dois maintenant ajouter une autre bibliothèque à mon projet, qui a des dépendances à x.v1.1.jar Dans ce cas, même si je gère les choses au moment de la construction, en cours d'exécution, il doit y avoir deux fichiers contenant des classes avec les mêmes noms, et soit la première bibliothèque que j'utilise, soit la seconde peut finir par accéder à la mauvaise version d'une classe, ou ne pas pouvoir atteindre une classe, etc. etc. Le gâchis n'est pas difficile à imaginer. – mahonya
Maintenant, si je pouvais créer une sorte de bac à sable dans JVM, disons, en mettant toute la nouvelle bibliothèque dans un paquet, je me débarrasserais de mon problème. Dans ce cas, j'utiliserais une sorte de mécanisme pour charger les types de la bibliothèque enveloppée (mécanique OSGI). Par exemple, si je peux utiliser la réflexion et le type de noms pour récupérer des instances de types OSGI, ces types utiliseraient-ils le classloader de leur conteneur OSGI? Si c'est le cas, ils chargeraient des types à partir de x.v1.1.jar et cela pourrait être une solution dans mon cas. J'envisagerais de passer progressivement à OSGI, si je peux gérer ce petit cas d'utilisation critique. – mahonya
@serefakin: Oui, vous pouvez mettre le fichier x.v1.1.jar dans OSGi, mais vous devez également mettre la bibliothèque qui en dépend (car vous devez l'empêcher de voir x.v1.jar). Et cela rend difficile l'utilisation de la bibliothèque à partir du code en dehors d'OSGi (à moins que vous ayez une interface qui peut également vivre à l'extérieur). – Thilo