JSF 2 PostConstructApplicationEventおよびPreDestroyApplicationEventの例
JSF 2.0以降、javax.faces.event.PostConstructApplicationEventおよびjavax.faces.event.PreDestroyApplicationEventシステムイベントを登録して、JSFアプリケーションのライフサイクルを操作できます。
1. PostConstructApplicationEvent –アプリケーションの開始後にカスタムの事後構成を実行します。
2。 PreDestroyApplicationEvent –アプリケーションがシャットダウンされる前にカスタムクリーンアップタスクを実行します。
Note
JSFでは、JSFアプリケーションが開始される前にServletContextListenersが実行される可能性があるため、上記のタスクを実行するために標準のServletContextListenersに依存することはできません。
次の例は、JSF 2.0でPostConstructApplicationEventおよびPreDestroyApplicationEventシステムイベントを作成する方法を示しています。
1. SystemEventListenerを実装します
javax.faces.event.SystemEventListenerを実装するクラスを作成し、カスタムの事後構成およびクリーンアップタスクのprocessEvent()およびisListenerForSource()メソッドをオーバーライドします。
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. システムイベントの登録
次のように、PostConstructApplicationEventとPreDestroyApplicationEventの両方のシステムイベントをfaces-config.xmlファイルに登録します。
faces-config.xml
com.example.FacesAppListener javax.faces.event.PostConstructApplicationEvent com.example.FacesAppListener javax.faces.event.PreDestroyApplicationEvent
3. Demo
JSFアプリケーションを実行します。 processEvent()メソッドは、JSFアプリケーションの起動後に実行されます。次の図を参照してください。

Note
ただし、PreDestroyApplicationEventは、異常にシャットダウンされた場合にJSFが実行しないため、実際には信頼できません。 たとえば、システム管理者によってJavaプロセスが強制終了された場合、常に発生します:)。 そのため、このシステムイベントを賢く使用してください。
ソースコードをダウンロード
ダウンロード–JSF-2-PostConstructApplicationEvent-Example.zip(9KB)