Пример JSF 2 PostConstructApplicationEvent и PreDestroyApplicationEvent
Начиная с JSF 2.0, вы можете зарегистрировать системное событиеjavax.faces.event.PostConstructApplicationEvent
иjavax.faces.event.PreDestroyApplicationEvent
для управления жизненным циклом приложения JSF.
1. PostConstructApplicationEvent - выполнить пользовательскую постконфигурацию после запуска приложения.
2. PreDestroyApplicationEvent - выполнить специальную задачу очистки перед завершением работы приложения.
Note
В JSF вы не можете зависеть от стандартногоServletContextListeners
для выполнения вышеуказанной задачи, потому чтоServletContextListeners
может быть запущен до запуска приложения JSF.
В следующем примере показано, как создать системное событиеPostConstructApplicationEvent
иPreDestroyApplicationEvent
в JSF 2.0.
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 (9 КБ)