Domanda

Stiamo usando fmt: setBundle per caricare un pacchetto di risorse da un database (abbiamo esteso la classe ResourceBundle per farlo). Quando modifichiamo un valore nel database, dobbiamo ricaricare il server Web per visualizzare il nuovo valore nell'app Web.

Esiste un modo semplice per utilizzare il nuovo valore senza riavviare il server Web?

( non desideriamo sempre cercare il valore dal database ma vorremmo invalidare la cache, ad esempio chiamando un URL "admin" speciale)

EDIT: stiamo usando JDK 1.4, quindi preferirei una soluzione su quella versione. :)

È stato utile?

Soluzione

Come altri hanno sottolineato nei commenti, potresti voler esaminare Spring - in particolare ReloadableResourceBundleMessageSource .

Altri suggerimenti

Se stai usando JDK 1.6 puoi usare i metodi di callback getTimeToLive () e needsReload () in ResourceBundle.Control per controllare se la cache del bundle deve essere caricata con nuovi valori dal database .

Per prima cosa puoi creare una classe che si estende da ReloadableResourceBundleMessageSource per esporre il suo metodo protetto di classe interna chiamato getProperties . Questo metodo restituisce una mappa simultanea dall'oggetto PropertiesHolder . Secondo, dovresti configurare un bean di quella classe estesa nella tua classe di configurazione web. Ora puoi utilizzare messageSource nel tuo livello di servizio o aziendale. Ecco il link di riferimento Configura pacchetto sorgente messaggi ricaricabile

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top