En Java, ¿cómo recargar dinámicamente los paquetes de recursos en una aplicación web?

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

  •  03-07-2019
  •  | 
  •  

Pregunta

Estamos usando fmt: setBundle para cargar un paquete de recursos desde una base de datos (extendimos la clase ResourceBundle para hacer eso). Cuando modificamos un valor en la base de datos, tenemos que volver a cargar el servidor web para mostrar el nuevo valor en la aplicación web.

¿Hay alguna forma sencilla de usar el nuevo valor sin reiniciar el servidor web?

(No queremos buscar siempre el valor de la base de datos, pero nos gustaría invalidar la memoria caché, por ejemplo, llamando a una URL de administrador especial)

EDITAR: Estamos utilizando JDK 1.4, así que preferiría una solución en esa versión. :)

¿Fue útil?

Solución

Como otros lo han señalado en los comentarios, es posible que desee consultar Spring, en particular el ReloadableResourceBundleMessageSource .

Otros consejos

Si está utilizando JDK 1.6, puede usar los métodos de devolución de llamada getTimeToLive () y needsReload () en ResourceBundle.Control para controlar si la memoria caché del paquete necesita cargarse con nuevos valores de la base de datos .

Primero, puede crear una clase que se extiende desde ReloadableResourceBundleMessageSource para exponer su método interno de protección de clases llamado getProperties . Este método devuelve un mapa concurrente del objeto PropertiesHolder . En segundo lugar, debe configurar un bean de esa clase extendida en su clase de configuración web. Ahora puede utilizar messageSource en su capa de servicio o negocio. Aquí está el enlace de referencia Configurar paquete de fuente de mensaje recargable

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top