Bonjour,
Je suis confronté à un problème dont je n'arrive pas à me dépatouiller sous Websphere.
Je vous explique le contexte en le simplifiant au maximum:
Soit une application au sein de laquelle j'ai plusieurs JAR dans WEB-INF/lib dont 2 JARS que nous nommerons :
- ma-librairie-1.jar
- ma-librairie-2.jar
"ma-librairie-2.jar" est dépendante de "ma-librairie-1.jar".
Mais (et c'est là que ça se complique pour moi), dans "ma-librairie-2.jar" on me demande d'écraser des classes de "ma-librairie-1.jar".
C'est à dire que j'ai 2 classes de noms identiques dans ces 2 JAR et il faut que ce soit celle de "ma-librairie-2.jar" qui soit utilisée lors de l'exécution de l'application.
Sauf que, comme "ma-librairie-1.jar" est placé avant "ma-librairie-2.jar" lors du classement par ordre alphabétique, c'est "ma-librairie-1.jar" qui se retrouve placé en premier dans le classpath. C'est donc la mauvaise classe qui est utilisée lors de l'exécution de l'application.
Je cherche donc une solution. (Bien sûr je n'ai pas le droit de renommer les 2 JAR comme je veux).
Avec la console d'administration, j'ai essayé la chose suivante sans succès :
- dans "Environnement/Bibliothèques partagées" j'ai définis "ma-librairie-2.jar" comme librairie partagée
- dans "Applications/Types d'application/Applications d'entreprise Websphere/monAppli/Références de bibliothèques partagées" j'ai ajouté la librairie partagée créée précédemment à l'application de "monAppli".
- le chargeur de classes de "Applications/Types d'application/Applications d'entreprise Websphere/monAppli/Chargement de classes et détection de mise à jour " est défini sur "Classes chargées en premier avec un chargeur de classes parent"
Je sais que la notion de bibliothèques partagées n'a pas été mise en place pour répondre à ce type de contrainte mais j'avais espoir de pouvoir l'utiliser à mes fins.
Si vous avez une idée pour résoudre ce problème je suis preneur de vos conseils.
PS : Sous Tomcat il est possible de définir son propre Classloader, mais je n'ai pas retrouvé cette fonctionnalité sous Websphere.
Partager