JSF 2 PostConstructApplicationEventおよびPreDestroyApplicationEventの例

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. システムイベントの登録

次のように、PostConstructApplicationEventPreDestroyApplicationEventの両方のシステムイベントを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アプリケーションの起動後に実行されます。次の図を参照してください。

jsf2-PostConstructApplicationEvent-example

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

ソースコードをダウンロード

ダウンロード–JSF-2-PostConstructApplicationEvent-Example.zip(9KB)