¿Cómo fuerzo un bean de ámbito de aplicación para crear una instancia al inicio de la aplicación?
Parece que no puedo encontrar una manera de forzar una instancia / inicialización de un bean administrado con ámbito de aplicación cuando se inicia la aplicación web. Parece que los beans de ámbito de aplicación se instancian de forma diferida la primera vez que se accede al bean, no cuando se inicia la aplicación web. Para mi aplicación web, esto sucede cuando el primer usuario abre una página en la aplicación web por primera vez.
La razón por la que quiero evitar esto es porque se producen varias operaciones de base de datos que requieren mucho tiempo durante la inicialización de mi bean de ámbito de aplicación. Tiene que recuperar un montón de datos del almacenamiento persistente y luego almacenar en caché algunos de ellos que se mostrarán con frecuencia al usuario en forma de elementos ListItem, etc. No quiero que todo eso suceda cuando el primer usuario se conecte y, por lo tanto, causar un largo retraso
Lo primero que pensé fue usar un método ServletContextListener contextInitialized () de estilo antiguo y desde allí usar un ELResolver para solicitar manualmente la instancia de mi bean administrado (forzando así la inicialización). Desafortunadamente, no puedo usar un ELResolver para activar la inicialización en esta etapa porque ELResolver necesita un FacesContext y el FacesContext solo existe durante la vida útil de una solicitud.
¿Alguien sabe de una forma alternativa de lograr esto?
Estoy usando MyFaces 1.2 como la implementación de JSF y no puedo actualizar a 2.x en este momento.