Olá Kalpa,
Sua aplicação web está sendo executada dentro de um contêiner de servlet que fornece o tempo de execução escolhido (ou seja: Java Web Tomcat 8).
Como o contêiner é responsável pelo ciclo de vida de sua aplicação, nunca deve chamar System.exit(0). Isso não é algo do SCP. Chamar System.exit(0) irá encerrar toda a VM responsável pelo Tomcat.
Aqui está minha opinião sobre a reinicialização: o SCP é responsável pela saúde da aplicação. O término de uma VM pode ser considerado pelo SCP um problema crítico, pois ninguém ordenou a parada da aplicação. Portanto, você pode tentar reiniciar todo o contêiner na tentativa de retornar o estado da aplicação ao normal. Estas são minhas suposições.
Se você realmente precisa parar sua aplicação de forma segura, deve se conectar à porta de desligamento e escrever a palavra SHUTDOWN.
try {
Socket socket = new Socket("localhost", 8005); //este é o padrão em server.xml no SDK
if (socket.isConnected()) {
PrintWriter pw = new PrintWriter(socket.getOutputStream(), true);
pw.println("SHUTDOWN");//enviar comando de desligamento - também é padrão
pw.close();
socket.close();
}
} catch (Exception e) {
e.printStackTrace();
}
Saudações,
Ivan