Если вы настраиваете соединение с БД PostgreSQL на виртуальной машине Azure, вы должны знать, что существуют тайм-ауты для Unbound и Outbound соединений. Согласно https://docs.microsoft.com/en-us/azure/load-balancer/load-balancer-outbound-connections#idletimeout , исходящие соединения имеют 4-минутное время простоя. Этот тайм-аут не регулируется. Для входящего времени у вас есть возможность измениться на портале Azure.
Мы столкнулись с подобной проблемой и смогли решить ее на стороне клиента. Мы изменили конфигурацию Hikari по умолчанию при загрузке Spring следующим образом:
hikari:
время ожидания соединения: 20000
проверка - время ожидания: 20000
время простоя: 30000
максимальное время жизни: 40000
Если вы хотите запустить поток при развертывании WAR, вы можете определить прослушиватель контекста в сети. .xml:
<web-app>
<listener>
<listener-class>com.mypackage.MyServletContextListener</listener-class>
</listener>
</web-app>
Затем реализуйте этот класс примерно так:
public class MyServletContextListener implements ServletContextListener {
private MyThreadClass myThread = null;
public void contextInitialized(ServletContextEvent sce) {
if ((myThread == null) || (!myThread.isAlive())) {
myThread = new MyThreadClass();
myThread.start();
}
}
public void contextDestroyed(ServletContextEvent sce){
try {
myThread.doShutdown();
myThread.interrupt();
} catch (Exception ex) {
}
}
}
Я ищу способ запуска фонового потока при запуске сервера Tomcat
Я думаю, что вы ищете способ запуска фонового потока, когда ваше веб-приложение запускается Tomcat.
Это можно сделать с помощью ServletContextListener . Он зарегистрирован в web.xml и будет вызываться при запуске или остановке вашего приложения. Затем вы можете создать (а затем и остановить) свой поток, используя обычные способы Java для создания потока (или ExecutionService).
Я бы просто немного изменил очень подробный ответ, который дал Крис; Я бы установил myThread
как поток демона с помощью myThread.setDaemon (true);
, который в основном будет поддерживать поток активным, пока у вас работают другие потоки, не являющиеся демонами, которые нуждаются в вашем фоновая нить вокруг.
But that's just my 2 cents.