Seam+JSF+Tomcat
Недавно я писал о проблемах, возникших при добавлении Seam в приложение, использующее jsf и работающее на Tomcat. Наконец-то эти проблемы решены. Сиптомы:
- Одно или несколько сообщений при старте приложения: “There should only be one Seam phase listener per application”
- Многократное срабатывание сеттеров, описанных в pages.xml
- На некоторых серверах появление исключения:
SEVERE: Exception sending context initialized event to listener instance of class com.sun.faces.config.ConfigureListener com.sun.faces.config.ConfigurationException: CONFIGURATION FAILED! null at com.sun.faces.config.ConfigManager.initialize(ConfigManager.java:212) at com.sun.faces.config.ConfigureListener.contextInitialized(ConfigureListener.java:174) at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3934) at org.apache.catalina.core.StandardContext.start(StandardContext.java:4429) at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045) at org.apache.catalina.core.StandardHost.start(StandardHost.java:722) at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045) at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443) at org.apache.catalina.core.StandardService.start(StandardService.java:516) at org.apache.catalina.core.StandardServer.start(StandardServer.java:710) at org.apache.catalina.startup.Catalina.start(Catalina.java:583) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413) Caused by: java.lang.NullPointerException at com.sun.faces.config.processor.ApplicationConfigProcessor.addResouceBundle(ApplicationConfigProcessor.java:578) at com.sun.faces.config.processor.ApplicationConfigProcessor.process(ApplicationConfigProcessor.java:245) at com.sun.faces.config.processor.AbstractConfigProcessor.invokeNext(AbstractConfigProcessor.java:94) at com.sun.faces.config.processor.LifecycleConfigProcessor.process(LifecycleConfigProcessor.java:119) at com.sun.faces.config.processor.AbstractConfigProcessor.invokeNext(AbstractConfigProcessor.java:94) at com.sun.faces.config.processor.FactoryConfigProcessor.process(FactoryConfigProcessor.java:132) at com.sun.faces.config.ConfigManager.initialize(ConfigManager.java:202) ... 16 more
Проблема заключалась в том, что приложение использует одновременно RichFaces и MyFaces, от чего нельзя было отказаться, а папке WEB-INF/lib приложения содержалась библиотека jsf-impl-1.2_08.jar . После ее удаления - исключение больше не появлялось. Но осталось сообщение об уже запущенном экземпляре SeamPhaseListener. От этого сообщения я избавился исключив из faces-config.xml описание SeamPhaseListener. Скорее всего, экземпляр этого класса уже создавался при чтении faces-config.xml, лежащего в одной из библиотек Seam.

Ваш отзыв