En Java, comment recharger de manière dynamique des ensembles de ressources dans une application Web?

StackOverflow https://stackoverflow.com/questions/156586

  •  03-07-2019
  •  | 
  •  

Question

Nous utilisons fmt: setBundle pour charger un ensemble de ressources à partir d'une base de données (nous avons étendu la classe ResourceBundle à cette fin). Lorsque nous modifions une valeur dans la base de données, nous devons recharger le serveur Web pour afficher la nouvelle valeur sur l'application Web.

Existe-t-il un moyen simple d'utiliser la nouvelle valeur sans redémarrer le serveur Web?

(Nous ne souhaitons pas toujours consulter la valeur de la base de données, mais nous souhaitons invalider le cache, par exemple en appelant une URL "administrateur" spéciale.

EDIT: Nous utilisons JDK 1.4, je préférerais donc une solution sur cette version. :)

Était-ce utile?

La solution

Comme d'autres l'ont souligné dans les commentaires, vous voudrez peut-être vous pencher sur Spring, en particulier ReloadableResourceBundleMessageSource .

Autres conseils

Si vous utilisez JDK 1.6, vous pouvez utiliser les méthodes de rappel getTimeToLive () et needsReload () dans ResourceBundle.Control pour contrôler si le cache de l'ensemble doit être chargé avec les nouvelles valeurs de la base de données .

Vous pouvez d’abord créer une classe qui s'étend de ReloadableResourceBundleMessageSource pour exposer sa méthode protégée par une classe interne appelée getProperties . Cette méthode renvoie une mappe simultanée à partir de l'objet PropertiesHolder . Deuxièmement, vous devez configurer un bean de cette classe étendue dans votre classe de configuration Web. Vous pouvez maintenant utiliser messageSource dans votre couche de service ou votre couche d’entreprise. Voici le lien de référence Configurer un ensemble de sources de messages rechargeables

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top