Я создал веб-приложение Maven, используя зависимости JSF 2.2, Primefaces, Tomcat 7.
Моя реализация JSF - Mojarra 2.2.4, я добавил эти зависимости в свой POM:
<dependency>
<groupId>com.sun.faces</groupId>
<artifactId>jsf-api</artifactId>
<version>2.2.4</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.sun.faces</groupId>
<artifactId>jsf-impl</artifactId>
<version>2.2.4</version>
<scope>compile</scope>
</dependency>
Но, к сожалению, у меня проблема с tomcat7-maven-plugin
и его встроенным котом. Если я использую команду tomcat7:run
, мое веб-приложение запускается без проблем, но когда оно пытается загрузить управляемый компонент, я получаю эту ошибку:
Цель недоступна, идентификатор testBean разрешен до нуля
Это признак того, что веб-приложение использует JSF 1.x
вместо JSF 2.x
. Конфигуратор JSF 1.x
не распознает аннотации @ManagedBean
, из-за чего они не загружаются/инициализируются автоматически без необходимости использования Faces-config.xml.
Я использую встроенный tomcat 7.0.50, настроенный с его помощью: http://tomcat.apache.org/maven-plugin-trunk/tomcat7-maven-plugin/adjust-embedded-tomcat-version.html
Но, несмотря на то, что я не распознаю аннотации @ManagedBean
, он работает только с использованием тега managebean на faces-config.xml
.
Есть ли способ включить поддержку JSF 2.x
в Tomcat Embedded для maven7-tomcat-plugin
?
PS: tomcat7:run-war
работает, но мне не нравится, потому что, очевидно, это статический запуск без какой-либо возможности изменить код xhtml (например) на лету.