2010-12-03 6 views
1

J'ai une application java qui nécessite la dernière version de commons-dbcp (1.3) et son pool de connexions db est configuré par Spring. Cette application n'est qu'une liste d'applications dans le même tomcat (une suite si vous préférez) et beaucoup d'entre elles utilisent une ancienne version de commons-dbcp (1.2.1), toutes configurées par Spring. Donc, bien que je puisse compiler (avec Maven) mon application avec DBCP 1.3, je ne peux pas l'exécuter car Spring essaie de configurer mon pool de connexion db avec l'ancienne version, qui est dans/shared/lib dans Tomcat . Le problème que j'ai est que je n'ai pas le temps, ni l'approbation, pour mettre à jour tout à 1.3, juste l'application que je corrige. Est-il possible de forcer Spring, dans le fichier components.xml de mon application (ou par d'autres moyens) à la nouvelle version de DBCP afin que seulement elle exécute la nouvelle version et n'affecte aucune autre application?Configurer Spring pour utiliser une version spécifique d'une classe

Répondre

3

Tant que vous avez la version 1.2.1 dans/shared/lib, il n'y a pas de moyen facile de réaliser ce dont vous avez besoin, pour autant que je sache. Ce que vous faites généralement dans ce cas est que vous associez la version 1.2.1 avec les applications qui ont besoin de cette version (par exemple dans WEB-INF/lib s'il s'agit d'applications web) et regroupez la version 1.3 avec votre application .

+2

Je seconde cela. Ne mettez jamais rien dans les classloaders partagés dans tomcat - cela finit toujours en larmes. –

+0

Nous avons fini par devoir faire un effort car nous ne pouvons pas remplacer la version 1.2.1 déjà existante. – Cyntech

0

Vous pouvez éventuellement utiliser Jar Jar pour déplacer des classes de version dbcp 1.3 sous un package différent et demander à Spring de les utiliser.

Oui, c'est un hack.

Questions connexes