Хотя JVM преобразует SIGTERM и подобные сигналы в перехватчики выключения многие сценарии выключения службы используют TCP-порт для инициации выключения. (например, порт выключения Tomcat, Java Service Wrapper, интерфейсы управления JBoss и т. д.)
Поэтому я думал, что использование сигналов и перехватчиков завершения работы для корректного отключения служб Java не рекомендуется, пока не обнаружил, что Играть! framework управляет жизненным циклом службы с помощью перехватчиков завершения работы, а сценарии запуска, сгенерированные play dist
, предполагают, что сигнал будет отправлен на PID JVM.
Я знаю, что сигналы зависят от платформы, а использование TCP-порта — это простой и расширяемый способ управления сервисами в кросс-платформенной манере, но я хотел бы знать, насколько это безопасно и какие риски мне нужно учитывать, когда я полагаюсь на на SIGTERM и перехватчиках выключения в качестве основного метода отключения службы.