Je travaille dans un environnement Java EE dans lequel chaque application est dans son propre fichier de guerre. Dans le fichier WEB-INF/lib de chaque fichier WAR d'application, un fichier JAR commun est partagé par toutes les applications. Ce pot commun contient plusieurs singletons auxquels on accède à partir de nombreux points du code. En raison des limites du fichier de guerre, chaque application a ses propres instances des singletons. C'est ainsi que nous fonctionnons aujourd'hui, puisque nous voulons configurer certains singletons différemment dans chaque application. Maintenant nous nous dirigeons vers un environnement OSGi, où cette solution ne fonctionnera plus puisque chaque paquet a son propre chargeur de classe, donc si j'essaie d'accéder à MySingleton qui réside dans le paquet "common.jar" du paquet "appA. jar "ou du paquet" appB.jar "je vais avoir la même instance. Rappelez-vous que je "veux" une instance différente d'un singleton par bundle. (aussi ironique que cela puisse paraître)Solution de migration pour les singletons dans un environnement OSGI
Maintenant, je réalise que la solution idéale serait de corriger le code pour ne pas compter sur ces singletons, mais en raison d'un calendrier serré, je me demandais si vous pouviez suggérer une sorte de solution de migration cela me permettrait d'utiliser des singletons à l'échelle du paquet afin que chacun d'entre eux puisse être configuré par paquet.
En ce qui concerne l'option 2, OSGi fonctionne-t-il avec les fichiers war? Je pensais que les bundles OSGi sont simplement des fichiers jar. –
Il n'y a rien dans la spécification OSGi qui limite un ensemble à une instance d'un fichier JAR. Voir Spring DM et OPS4J pour des exemples de support WAR. – SteveD