Wie erzwinge ich die Instanziierung einer Bean mit Anwendungsbereich beim Start der Anwendung?
Ich kann anscheinend keine Möglichkeit finden, die Instanziierung / Initialisierung einer von einer Anwendung verwalteten Bean zu erzwingen, wenn die Webanwendung gestartet wird. Es scheint, dass anwendungsspezifische Beans beim ersten Zugriff auf die Bean nicht beim Starten der Web-App verzögert instanziiert werden. Bei meiner Web-App geschieht dies, wenn der erste Benutzer zum ersten Mal eine Seite in der Web-App öffnet.
Der Grund, warum ich dies vermeiden möchte, ist, dass während der Initialisierung meiner Bean mit Anwendungsbereich eine Reihe von zeitaufwendigen Datenbankoperationen ausgeführt werden. Es muss eine Reihe von Daten aus dem permanenten Speicher abrufen und dann einen Teil davon zwischenspeichern, der dem Benutzer häufig in Form von ListItem-Elementen usw. angezeigt wird. Ich möchte nicht, dass all dies passiert, wenn der erste Benutzer eine Verbindung herstellt und damit verursachen eine lange Verzögerung.
Mein erster Gedanke war, eine ServletContextListener contextInitialized () -Methode alten Stils zu verwenden und von dort einen ELResolver zu verwenden, um die Instanz meiner verwalteten Bean manuell anzufordern (wodurch die Initialisierung erzwungen wurde). Leider kann ich derzeit keinen ELResolver verwenden, um die Initialisierung auszulösen, da der ELResolver einen FacesContext benötigt und der FacesContext nur während der Lebensdauer einer Anforderung vorhanden ist.
Kennt jemand einen alternativen Weg, um dies zu erreichen?
Ich verwende MyFaces 1.2 als JSF-Implementierung und kann derzeit kein Upgrade auf 2.x durchführen.