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 :
Ceci marche dans mon application web.
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);
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
Partager