Как инициализировать ленивую 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
значение программно, есть ли способ инициализировать этот сервлет?