Exemple JSF 2 PostConstructApplicationEvent et PreDestroyApplicationEvent
Depuis JSF 2.0, vous pouvez enregistrer l'événement systèmejavax.faces.event.PostConstructApplicationEvent etjavax.faces.event.PreDestroyApplicationEvent pour manipuler le cycle de vie de l'application JSF.
1. PostConstructApplicationEvent - Effectuez une post-configuration personnalisée après le démarrage de l'application.
2. PreDestroyApplicationEvent - Effectuez une tâche de nettoyage personnalisée avant que l'application ne soit sur le point d'être fermée.
Note
Dans JSF, vous ne pouvez pas dépendre duServletContextListeners standard pour effectuer la tâche ci-dessus, car lesServletContextListeners peuvent être exécutés avant le démarrage de l'application JSF.
L'exemple suivant vous montre comment créer un événement systèmePostConstructApplicationEvent etPreDestroyApplicationEvent dans JSF 2.0.
1. Implémente SystemEventListener
Créez une classe qui implémentejavax.faces.event.SystemEventListener et remplacez les méthodesprocessEvent() etisListenerForSource() pour votre tâche de post-configuration et de nettoyage personnalisée.
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. Enregistrer les événements système
Enregistrez les événements systèmePostConstructApplicationEvent etPreDestroyApplicationEvent dans le fichierfaces-config.xml comme ceci:
faces-config.xml
com.example.FacesAppListener javax.faces.event.PostConstructApplicationEvent com.example.FacesAppListener javax.faces.event.PreDestroyApplicationEvent
3. Demo
Exécutez votre application JSF. La méthodeprocessEvent() est exécutée après le démarrage de votre application JSF, voir la figure ci-dessous:

Note
Cependant, lePreDestroyApplicationEvent n'est pas vraiment fiable, car JSF ne l'exécutera pas s'il est arrêté anormalement. Par exemple, un processus Java tué par l'administrateur système, c'est toujours arrivé :). Veuillez donc utiliser cet événement système à bon escient.
Télécharger le code source
Téléchargez-le -JSF-2-PostConstructApplicationEvent-Example.zip (9 Ko)