Beispiel für JSF 2 PostConstructApplicationEvent und PreDestroyApplicationEvent
Seit JSF 2.0 können Sie das Systemereignisjavax.faces.event.PostConstructApplicationEvent
undjavax.faces.event.PreDestroyApplicationEvent
registrieren, um den Lebenszyklus der JSF-Anwendung zu bearbeiten.
1. PostConstructApplicationEvent - Führen Sie nach dem Start der Anwendung eine benutzerdefinierte Nachkonfiguration durch.
2. PreDestroyApplicationEvent - Führen Sie eine benutzerdefinierte Bereinigungsaufgabe aus, bevor die Anwendung heruntergefahren wird.
Note
In JSF können Sie sich nicht auf den StandardServletContextListeners
verlassen, der über der obigen Aufgabe ausgeführt werden soll, daServletContextListeners
möglicherweise ausgeführt wird, bevor die JSF-Anwendung gestartet wird.
Das folgende Beispiel zeigt, wie Sie ein SystemereignisPostConstructApplicationEvent
undPreDestroyApplicationEvent
in JSF 2.0 erstellen.
1. Implementiert SystemEventListener
Erstellen Sie eine Klasse, diejavax.faces.event.SystemEventListener
implementiert, und überschreiben Sie die MethodenprocessEvent()
undisListenerForSource()
für Ihre benutzerdefinierte Nachkonfigurations- und Bereinigungsaufgabe.
package com.example; import javax.faces.application.Application; import javax.faces.event.AbortProcessingException; import javax.faces.event.PostConstructApplicationEvent; import javax.faces.event.PreDestroyApplicationEvent; import javax.faces.event.SystemEvent; import javax.faces.event.SystemEventListener; public class FacesAppListener implements SystemEventListener{ @Override public void processEvent(SystemEvent event) throws AbortProcessingException { if(event instanceof PostConstructApplicationEvent){ System.out.println("PostConstructApplicationEvent is Called"); } if(event instanceof PreDestroyApplicationEvent){ System.out.println("PreDestroyApplicationEvent is Called"); } } @Override public boolean isListenerForSource(Object source) { //only for Application return (source instanceof Application); } }
2. Systemereignisse registrieren
Registrieren Sie das SystemereignisPostConstructApplicationEvent
undPreDestroyApplicationEvent
in der Dateifaces-config.xmlwie folgt:
faces-config.xml
com.example.FacesAppListener javax.faces.event.PostConstructApplicationEvent com.example.FacesAppListener javax.faces.event.PreDestroyApplicationEvent
3. Demo
Führen Sie Ihre JSF-Anwendung aus. Die MethodeprocessEvent()
wird nach dem Start Ihrer JSF-Anwendung ausgeführt (siehe Abbildung unten):
NotePreDestroyApplicationEvent
ist jedoch nicht wirklich zuverlässig, da JSF es nicht ausführt, wenn es abnormal heruntergefahren wird. Beispiel: Java-Prozess wurde vom Systemadministrator abgebrochen. Das ist immer passiert :). Verwenden Sie dieses Systemereignis also mit Bedacht.
Quellcode herunterladen
Laden Sie es herunter -JSF-2-PostConstructApplicationEvent-Example.zip (9KB)