Как добавить класс в область приложения для веб-приложения - PullRequest
0 голосов
/ 22 февраля 2012

Необходимо добавить класс Java (в моем проекте с именем HistoryBean) в ServletContext. Я не хочу создавать новый экземпляр класса HistoryBean в разных сервлетах, которые есть в моем проекте. Я хочу получить его из ServletContext. Пожалуйста, помогите мне с предложениями.

Ответы [ 2 ]

3 голосов
/ 22 февраля 2012

Поскольку вы используете JSF, просто зарегистрируйте его как компонент приложения.

@ManagedBean(eager=true)
@ApplicationScoped
public class HistoryBean {
    // ...
}

(обратите внимание на eager=true, это автоматически создает bean-компонент при запуске веб-приложения без необходимости ссылаться на него в некотором представлении или bean-компоненте, вам не нужно ServletContextListener для этого)

Таким образом, он не только доступен в контексте JSF обычным способом, как #{historyBean}, но и в сервлетах, также доступен как атрибут контекста сервлета с именем управляемого компонента в качестве ключа следующим образом:

HistoryBean historyBean = (HistoryBean) getServletContext().getAttribute("historyBean");
3 голосов
/ 22 февраля 2012

Вы можете сделать это в ServletContextListener:

public void contextInitialized(ServletContextEvent e) {
     e.getServletContext().setAttribute("historyBean", new HistoryBean());
}

Зарегистрируйте слушателя с помощью @WebListener или <listener>..</listener> в web.xml.

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