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)