Tomcat 7, JSF 2.0 и @PostConstruct - PullRequest
       3

Tomcat 7, JSF 2.0 и @PostConstruct

3 голосов
/ 12 марта 2011

Понятия не имею, что я делаю не так, пожалуйста, помогите:

  1. Свежий Tomcat 7 без лишних банок в папке / lib
  2. Простое веб-приложение с библиотеками mojarra 2.0.3 в WEB-INF / lib (jsf-api.jar, jsf-impl.jar)
  3. Работает нормально, кроме @PostConstruct в моих бинах - они вообще не вызываются

Журналы:

Mar 12, 2011 11:19:54 PM org.apache.catalina.startup.HostConfig deployWAR
INFO: Deploying web application archive test_web_app.war
Mar 12, 2011 11:19:54 PM com.sun.faces.config.ConfigureListener contextInitialized
INFO: Initializing Mojarra 2.0.3 (FCS b03) for context '/test_web_app'
Mar 12, 2011 11:19:54 PM com.sun.faces.spi.InjectionProviderFactory createInstance
INFO: JSF1048: PostConstruct/PreDestroy annotations present.  ManagedBeans methods marked with these annotations will have said annotations processed.

web.xml

<web-app xmlns="http://java.sun.com/xml/ns/javaee"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
           version="3.0">

  <servlet>
    <servlet-name>Faces Servlet</servlet-name>
    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>

  <servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>/faces/*</url-pattern>
  </servlet-mapping>

</web-app>

лица-config.xml

<faces-config xmlns="http://java.sun.com/xml/ns/javaee"
              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
              version="2.0">
</faces-config>

Боб с недоступным методом:

@ManagedBean
@ApplicationScoped
public class AppBean {

  @PostConstruct
  public void test() {
    throw new RuntimeException("test");
  }
}

Вот и все. Есть идеи?

Ответы [ 2 ]

5 голосов
/ 13 марта 2011

Если управляемый компонент вашего приложения не используется ни на одной странице, вы должны пометить его

@ManagedBean(eager=true)

для инициализации при запуске.

0 голосов
/ 02 апреля 2013

@ PostConstruct должен работать, если загружены bean-компоненты, вы можете загрузить его при прямом вызове или с помощью eager = true, или выполнить init в конструкторе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...