Pergunta

Estamos usando fmt: setBundle para carregar um pacote de recursos a partir de um banco de dados (que estendeu a classe ResourceBundle para fazer isso). Quando modificar um valor no banco de dados, nós temos que recarregar o servidor web para exibir o novo valor no aplicativo web.

Existe alguma maneira simples de usar o novo valor sem reiniciar o servidor web?

(Fazemos não quer sempre olhar para cima o valor do banco de dados, mas gostaríamos de invalidar o cache, por exemplo, chamando um especial 'admin' URL)

EDIT: Estamos usando JDK 1.4, então eu preferiria uma solução sobre essa versão. :)

Foi útil?

Solução

Como outros têm apontado nos comentários, você pode querer olhar em Primavera - particularmente a ReloadableResourceBundleMessageSource .

Outras dicas

Se você estiver usando JDK 1.6 você pode usar os métodos de retorno de getTimeToLive() e needsReload() em ResourceBundle.Control para controle se as necessidades de cache do pacote a ser carregado com novos valores do banco de dados.

Primeiro, você pode criar uma classe que se estende desde ReloadableResourceBundleMessageSource para expor seu interior protegido classe método chamado getProperties. Este método retornar um mapa simultânea de objeto PropertiesHolder. Em segundo lugar você deve configurar um feijão dessa classe estendida em você classe de configuração web. Agora você pode usar MessageSource em sua camada de serviço ou negócio. Aqui está o link de referência Configurar recarregável mensagem de origem pacote de

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top