我有一个托管在 Tomcat servlet 容器中的 Java 应用程序,它查询数据库并使用结果创建一个内存模型(非常大)。创建内存图的代码大约需要 3 分钟才能运行,因此我希望能够在应用程序启动时以及在用户访问应用程序之前执行此操作。
有没有典型的模式化方法来做到这一点?
一种推荐的方法是实现 ajavax.servlet.ServletContextListener
并在contextInitialized(ServletContextEvent)
.
然后将此添加到您的 web.xml
<listener>
<listener-class>com.company.LoadEverythingINeedListener</listener-class>
</listener>
这将确保您的用户在您准备好之前不会访问您的应用程序。
您可以使用<load-on-startup>1</load-on-startup>
来自 servlet 的参数,或者使用上下文侦听器来执行此操作。