【问题标题】:Java Web Application (Jsp/Servlets) Startup ScriptJava Web 应用程序 (Jsp/Servlets) 启动脚本
【发布时间】:2019-01-21 09:12:49
【问题描述】:
我想在我的 Web 应用程序的服务器启动时运行一个程序,其中我需要从数据库中读取数据并缓存数据并在整个应用程序中使用它。
除了下面的方法,还有没有更好的解决方案来实现同样的目标
<servlet>
<servlet-name>CacheData</servlet-name>
<servlet-class>com.my.webapp.CacheDataServletExample</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
由于在 init 方法中我需要调用数据库操作并缓存它。除此之外,如果有更好的解决方案,请告诉我。
提前致谢
【问题讨论】:
标签:
java
jsp
servlets
server
startup
【解决方案1】:
您可以在启动时在 web.xml 中注册一个上下文侦听器,如下所示:
<listener>
<listener-class>it.example.WebAppServletContextListener</listener-class>
</listener>
您可以在侦听器实现中处理所有内容:
package it.example;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
public class WebAppServletContextListener implements ServletContextListener {
@Override
public void contextDestroyed(ServletContextEvent sce) {
// stuff to do on context destroy
}
@Override
public void contextInitialized(ServletContextEvent sce) {
// stuff todo at context startup
}
}
附:从 servlet 3.0 开始,您还可以使用 @WebListener 注释而不是在 web.xml 中声明侦听器