Beispiel für JSF 2 PostConstructApplicationEvent und PreDestroyApplicationEvent
Seit JSF 2.0 können Sie das Systemereignisjavax.faces.event.PostConstructApplicationEvent undjavax.faces.event.PreDestroyApplicationEventregistrieren, 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)