JSF 2.0以降、

javax.faces.event.PostConstructApplicationEvent`と

javax.faces.event.PreDestroyApplicationEvent`システムイベントを登録して、JSFアプリケーションのライフサイクルを操作できます。

{空} 1。

PostConstructApplicationEvent

– アプリケーションの起動後にカスタムの構成後の設定を実行します。

PreDestroyApplicationEvent

– アプリケーションがシャットダウンされる前にカスタムクリーンアップタスクを実行します。

次の例は、JSF 2.0で

PostConstructApplicationEvent`と

PreDestroyApplicationEvent`システムイベントを作成する方法を示しています。

1. SystemEventListenerを実装します.


javax.faces.event.SystemEventListener`を実装するクラスを作成し、カスタムの設定後およびクリーンアップタスクの

processEvent()

および

isListenerForSource() `メソッドをオーバーライドします。

package com.mkyong;

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

<?xml version="1.0" encoding="UTF-8"?>
<faces-config
    xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
    http://java.sun.com/xml/ns/javaee/web-facesconfig__2__0.xsd"
    version="2.0">
    <application>

        <!-- Application is started -->
        <system-event-listener>
        <system-event-listener-class>
            com.mkyong.FacesAppListener
        </system-event-listener-class>
        <system-event-class>
            javax.faces.event.PostConstructApplicationEvent
        </system-event-class>
        </system-event-listener>

        <!-- Before Application is shut down -->
        <system-event-listener>
        <system-event-listener-class>
            com.mkyong.FacesAppListener
        </system-event-listener-class>
        <system-event-class>
            javax.faces.event.PreDestroyApplicationEvent
        </system-event-class>
        </system-event-listener>

    </application>
</faces-config>

デモ

JSFアプリケーションを実行します。 `processEvent()`メソッドは、JSFアプリケーションの起動後に実行されます。下の図を参照してください。


jsf2-PostConstructApplicationEvent-example、title = "jsf2-PostConstructApplicationEvent-example"、width = 640、height = 240

  • 注意** ただし、PreDestroyApplicationEventは実際には信頼できません。なぜなら、JSFは異常終了した場合にJSFを実行しないからです。例えば、Javaプロセスはシステム管理者によって殺されました。それはいつも起こっています:)。

だから、このシステムイベントを賢明に使ってください。

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

ダウンロード – リンク://wp-content/uploads/2010/11/JSF-2-PostConstructApplicationEvent-Example.zip[JSF-2-PostConstructApplicationEvent-Example.zip](9KB)