Я не могу найти способ заставить управляемый приложением bean создать/инициализировать при запуске веб-приложения. Кажется, что приложение beans с областью приложения получает lazy-instantiated при первом доступе bean, а не при запуске веб-приложения. Для моего веб-приложения это происходит, когда первый пользователь впервые открывает страницу в веб-приложении.
Причина, по которой я хочу избежать этого, заключается в том, что во время инициализации моего приложения bean происходит множество трудоемких операций с базой данных. Он должен извлекать кучу данных из постоянного хранилища, а затем кэшировать некоторые из них, которые будут часто отображаться пользователю в виде элементов ListItem и т.д. Я не хочу, чтобы все это происходило, когда первый пользователь подключается и, следовательно, вызывают длительную задержку.
Моя первая мысль заключалась в использовании старого метода ServletContextListener contextInitialized(), и оттуда используйте ELResolver, чтобы вручную запросить экземпляр моего управляемого bean (тем самым заставив инициализацию произойти). К сожалению, я не могу использовать ELResolver для запуска инициализации на этом этапе, потому что ELResolver нуждается в FacesContext, а FacesContext существует только в течение срока службы запроса.
Кто-нибудь знает о альтернативном способе выполнения этого?
Я использую MyFaces 1.2 в качестве реализации JSF и не могу обновить до 2.x в настоящее время.