Tengo un problema para actualizar o volver a cargar un bean administrado con ámbito de aplicación. Se comporta como un bean de datos en caché. Entonces, una vez que se cambian los datos en el lado db, quiero volver a cargar la lista en el bean. ¿Hay alguna forma de actualizar/volver a cargar la lista, por ejemplo, una vez al día en función del tiempo determinado? GraciasRefrescar/Recargar Alcance administrado de aplicación
8
A
Respuesta
14
Simplemente agregue un método al bean con ámbito de aplicación que hace exactamente eso.
public void reload() {
list = dao.list();
}
Luego agarra/inyecte este frijol en otro bean y llamar al método.
data.reload();
actualización lo siento, me daba la "una vez al día" bits. ¿Te refieres a recarga automática en el fondo? Lo mejor es lograrlo con un hilo de fondo administrado por ScheduledExecutorService
. Crear una ServletContextListener
LIKE:
@WebListener
public class Config implements ServletContextListener {
private ScheduledExecutorService scheduler;
@Override
public void contextInitialized(ServletContextEvent event) {
Reloader reloader = new Reloader(event.getServletContext());
scheduler = Executors.newSingleThreadScheduledExecutor();
scheduler.scheduleAtFixedRate(reloader, 1, 1, TimeUnit.DAYS);
}
@Override
public void contextDestroyed(ServletContextEvent event) {
scheduler.shutdownNow();
}
}
Cuando la mirada de clase Reloader
como esto (suponiendo que el nombre del bean administrado es data
)
public class Reloader implements Runnable {
private ServletContext context;
public Reloader(ServletContext context) {
this.context = context;
}
@Override
public void run() {
Data data = (Data) context.getAttribute("data");
if (data != null) {
data.reload();
}
}
}
Cuestiones relacionadas
- 1. Diferencia entre el producto de la aplicación Android administrado y no administrado?
- 2. Controlador (Bean administrado por Spring Bean) Pregunta de Alcance: Singleton, Solicitud o Sesión?
- 3. Rendimiento de invocar código no administrado desde el código administrado
- 4. Inyección de DLL administrado en la aplicación .net 4.0
- 5. Uso del código no administrado del código administrado
- 6. Recuperar la ruta raíz aplicación web en JSF Bean administrado
- 7. ¿Cómo usar el código administrado del código no administrado?
- 8. que vuelven punteros de no administrado a código administrado
- 9. llamada C# administrado funciones de C++ no administrado
- 10. Alcance y alcance en rieles
- 11. Alcance variable de miembro estático de C++
- 12. Incrustar dll no administrado en un C# dll administrado
- 13. llamando al código administrado desde el código no administrado
- 14. C++/cli pass (administrado) delegado al código no administrado
- 15. Enrutamiento de solicitud de aplicación IIS7 (proxy inverso arr) combinado con módulo administrado - tiempo de espera
- 16. Alcance de System.setProperty
- 17. Manejo de errores al usar código no administrado en uno administrado (C++, C, C++/CLI, C#)
- 18. Código administrado en
- 19. Obtener fecha de instalación del código administrado
- 20. ¿Cómo acceder a un alcance de aplicación desde una aplicación separada en ColdFusion 9?
- 21. Valgrind no administrado bytes de instrucción error
- 22. Alcance de System.setProperty en Tomcat
- 23. Gestor de excepciones administrado final en un ejecutable nativo/administrado mixto?
- 24. La mejor manera de llamar al código administrado .NET desde el código no administrado
- 25. ¿Debe el código administrado devolver un error o lanzar excepciones al código no administrado?
- 26. La mejor manera de llamar al código no administrado de 32 bits del código administrado de 64 bits utilizando un contenedor de código administrado
- 27. Usando DLR desde el código no administrado
- 28. Python alcance
- 29. C++/CLI: prevención de la recolección de basura en el contenedor administrado del recurso no administrado
- 30. depurando el código de C# administrado y el código de C++ no administrado en una solución
Gracias un montón @BalusC – leo
de qué. Sin embargo, debe ser extremadamente cuidadoso con la administración de los hilos en un servletcontainer. El bit 'scheduler.shutdownNow();' en 'contextDestroyed()' es muy importante. Puede considerar delegar el trabajo de gestión de subprocesos al servletcontainer, si es compatible. JBoss tiene, por ejemplo, Quartz para esto, Glassfish tiene por ejemplo 'WorkManager' para esto. En Tomcat, el ejemplo anterior es tu mejor apuesta. – BalusC
@BalusC Tengo la misma necesidad. Implementé esto en mi aplicación. El único problema es que en el método 'Reloader' 'run()' my bean siempre es nulo. ¿Puedes darme una pista por favor? – leostiw