如何在Java EE中初始化一个惰性ServletRegistration

时间:2017-12-10 21:08:19

标签: java tomcat servlets java-ee java-ee-8

我有一个ServletContextListener我正在JSF 2.3容器上运行Tomcat 9个应用程序。一切都很好但是我需要在创建上下文时访问FacesContext

由于我没有使用部署描述符,所以我没有注册FacesServlet配置,它似乎由容器自动注册,原因如下:

以下调用将返回NULL,并且如Java Doc中所述,当已经创建了同名的Servlet时,它将返回NULL

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

以下调用确实返回一个值:

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

但是,由于我没有进行任何配置,因此我没有设置loadOnStatup参数,因此它自动设置为-1

现在是一个负数,这意味着这个Servlet很懒,所以通过调用FacesContext.getCurrentInstance()我收到NULL,因为似乎Servlet还没有初始化。

现在,当然,我可以通过部署描述符手动注册Servlet,但我想避免这种情况(仅仅因为我希望尽可能多地受益于自动配置)。

我没有找到以编程方式更改loadOnStatup值的方法,有没有办法初始化此Servlet?

0 个答案:

没有答案