2008-10-01 2 views
8

Nous utilisons fmt: setBundle pour charger un ensemble de ressources à partir d'une base de données (nous avons étendu la classe ResourceBundle pour le faire). 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.En Java, comment recharger dynamiquement des bundles de ressources dans une application Web?

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

(Nous ne pas veulent toujours rechercher la valeur de base de données, mais nous voudrions invalider le cache, par exemple en appelant une URL spéciale « admin »)

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

+0

Si vous n'êtes pas trop attaché à la classe ResourceBundle elle-même, l'abstraction MessageSource de Spring offre une approche plus flexible, y compris la mise en cache et le rechargement des messages. Il peut envelopper votre ResourceBundle personnalisé. Vous pouvez simplement utiliser ce bit de l'API Spring, si nécessaire. – skaffman

+0

La réponse est probablement spécifique à la servlet (serveur d'applications) que vous utilisez, par ex. Tomcat ou JBoss. Laquelle? –

+0

Nous utilisons Tomcat pour développer Websphere Application Server pour la production (5.X). – paulgreg

Répondre

7

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 paquet doit être chargé avec de nouvelles valeurs de la base de données.

Questions connexes