Я пытаюсь запустить веб-приложение JSF 2.0, используя Apache MyFaces 2.1.7 на веб-сервере Tomcat 6. Приложение использует Tomahawk 1.1.11 и язык выражений 2.2 (el-impl-2.2.jar). Для этого я поместил myfaces-api и myfaces-impl в папку Tomcats lib и заменил Tomcats el-api.jar на вариант 2.2.
Когда я вызываю первую страницу приложения, я всегда получаю сообщение об ошибке:
java.lang.IllegalStateException: No Factories configured for this Application. This
happens if the faces-initialization does not work at all - make sure that you properly
include all configuration settings necessary for a basic faces application and that all
the necessary libs are included. Also check the logging output of your web application
and your container for any exceptions!
If you did that and find nothing, the mistake might be due to the fact that you use
some special web-containers which do not support registering context-listeners via TLD
files and a context listener is not setup in your web.xml.
A typical config looks like this;
<listener>
<listener-class>org.apache.myfaces.webapp.StartupServletContextListener</listener-class>
</listener>
javax.faces.FactoryFinder._getFactory(FactoryFinder.java:286)
javax.faces.FactoryFinder.getFactory(FactoryFinder.java:206)
javax.faces.webapp.FacesServlet.init(FacesServlet.java:116)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:602)
org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
java.lang.Thread.run(Thread.java:679)
У меня определенно есть фрагмент xml, упомянутый в моем файле web.xml
. Я попытался выполнить отладку кода и обнаружил, что registeredFactoryNames
в строке 267 из javax.faces.FactoryFinder
пусто, что вызывает ошибку. Однако я не понимаю, почему это так. Что там должно быть и как туда попасть?
Самое смешное, что веб-приложение отлично работает с использованием встроенного причала 8. Так что это должна быть какая-то проблема с зависимостями.
Надеюсь, что кто-то с большим пониманием всего этого может помочь мне здесь.