如何在Java Webapp中执行一次操作后,所有servlet已初始化?



我有一个标准的Java 11 Web应用程序,其中有多个servlet。有些servlet是由库导入的,有些是在应用程序本身中编写的。

我需要执行一个任务后,所有的web servlet已经初始化,最好在任何请求进来之前。该任务需要访问ServletContext。

我已经尝试通过创建ServletContextListener和相应的contextInitialized方法来执行此操作,但这会在servlet初始化之前执行任务。

我不能将任务添加到最后一个要加载的servlet中,因为最后一个加载的servlet是从外部库导入的。

如果解决方案不涉及创建没有映射的servlet,则更可取。

如果您可以访问部署描述符(web.xml)),并且servlet是动态加载的,那么你可以将servlet添加到servlet列表中,并在load-on-startup中设置一个高的数值。

元素。
<servlet>  
<servlet-name>myServlet</servlet-name>  
<servlet-class>com.project.LastServlet</servlet-class>  
<load-on-startup>99</load-on-startup>  
</servlet>

我试图在文档中找到一个解决方案,但我找不到它,ServletContextListener是一个不去:在web应用程序中的任何过滤器或servlet初始化之前,所有ServletContextListeners都会收到context初始化的通知。

相关内容

  • 没有找到相关文章

最新更新