JSF 2 Beispiel für PostConstructApplicationEvent und PreDestroyApplicationEvent

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):

jsf2-PostConstructApplicationEvent-example

Note
PreDestroyApplicationEvent 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