Bonjour,

j'ai une application web qui fonctionne avec la version de Spring 2.5.

Une partie de la configuration de l'application est basée sur des fichiers XML. La configuration de l'application peut changer en cours d'exécution et je recharge à ce moment là un bean pour rafraîchir ses propriétés.
Mon bean fait appel à une méthode "unmarshall" qui converti le XML vers les propriétés de mon bean.

Voici de quelle manière mon bean est rafraichi :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
XmlWebApplicationContext xmlWebApplicationContext =
			(XmlWebApplicationContext) ContextLoader.getCurrentWebApplicationContext();
 
		DefaultListableBeanFactory defaultListableBeanFactory =
		(DefaultListableBeanFactory) xmlWebApplicationContext.getBeanFactory();
		BeanDefinition beanDefinition = defaultListableBeanFactory.getBeanDefinition(beanName);
		beanDefinition.setBeanClassName(beanClassPath);
		defaultListableBeanFactory.destroyBean(beanName, beanInstance);
		defaultListableBeanFactory.registerBeanDefinition(beanName, beanDefinition);
Ceci marche dans mon application web.
Le problème survient quand je package mon application sous forme de jar et que je l'intègre dans une autre application web.

J'ai débuggé pour voir ce qu'il se passait exactement, et je vais bien lire les fichiers XML modifiés et recharger mon bean. Au moment où j'accède aux valeurs de mon beans celles-ci ne sont pas mises à jour.

Ce que j'ai essayé de faire en plus :
- mettre les mm librairies mm versions
- sortir les fichiers de context spring du jar
- forcer le refresh du context : publishEvent(ContextRefreshedEvent)
- destroy le bean concerné : defaultListableBeanFactory.destroyBean(beanName, beanInstance);

Tout ceci n'a pas fonctionné

Je n'ai pas encore testé : mettre à jour les beans qui appellent le bean mis à jour.

Merci pour votre aide,

Pierrick