Как инициализировать ленивую ServletRegistration в Java EE

У меня есть ServletContextListener и я бегу JSF 2.3 приложение на Tomcat 9 контейнер. Все хорошо, но мне нужно иметь доступ к FacesContext когда контекст создан.

Поскольку я не использую дескриптор развертывания, поэтому я не регистрирую FacesServlet В конфигурации, похоже, она автоматически регистрируется контейнером по следующим причинам:

Следующий звонок вернется NULL и, как указано в документе Java, он возвращает NULL когда уже существует созданный сервлет с таким же именем.

sce.getServletContext().addServlet("FacesServlet", FacesServlet.class)

Следующий вызов возвращает значение:

ServletRegistration facesServlet = sce.getServletContext().getServletRegistration("FacesServlet");

Однако, поскольку я не выполнил никаких настроек, я не установил loadOnStatup параметр, и поэтому он автоматически устанавливается как -1,

Теперь, будучи отрицательным числом, это означает, что этот сервлет ленив, и поэтому, вызывая FacesContext.getCurrentInstance() Я получаю NULL потому что кажется, что сервлет еще не инициализирован.

Теперь, конечно, я могу вручную зарегистрировать сервлет с помощью дескриптора развертывания, но я бы хотел этого избежать (просто потому, что я хочу получить максимальную выгоду от автоматической настройки).

Я не нашел способ изменить loadOnStatup значение программно, есть ли способ инициализировать этот сервлет?

0 ответов

Другие вопросы по тегам