Я хочу запустить программу при запуске сервера моего веб-приложения, в которой мне нужно читать данные из базы данных, кэшировать данные и использовать их во всем приложении. Помимо приведенного ниже подхода, есть ли лучшее решение для достижения того же
<servlet>
<servlet-name>CacheData</servlet-name>
<servlet-class>com.my.webapp.CacheDataServletExample</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
Поскольку в методе инициализации мне нужно вызывать операции db и кешировать их. Кроме того, если есть лучшее решение, пожалуйста, дайте мне знать.
заранее спасибо




вы можете зарегистрировать прослушиватель контекста при запуске в 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
}
}
P.S. начиная с сервлета 3.0 вы также можете использовать аннотацию @WebListener вместо объявления слушателей в web.xml
Возможный дубликат Есть ли способ запустить метод / класс только при запуске Tomcat / Wildfly / Glassfish?