Masalahnya sering muncul ketika Apache Tomcat gagal untuk mengakhiri, dengan benar, meskipun instruksi shutdown telah dikirim. Dalam kasus saya, menggunakan Tomcat 8, ini terjadi dengan keteraturan yang mengganggu. Untungnya, Anda dapat menggunakan Windows PowerShell dan netstat
perintah untuk membuat skrip sederhana untuk menghentikan prosesnya.
Skrip PowerShell berikut akan mem-parsing keluaran dari netstat
untuk menemukan proses apa pun yang sedang didengarkan 127.0.0.1:8005
, ekstrak PID-nya dan kemudian matikan proses itu:
netstat -a -o -n `
| select -skip 4 `
| % {$a = $_ -split ' {3,}'; New-Object 'PSObject' -Property @{Original=$_;Fields=$a}} `
| ? {$_.Fields[1] -match '127\.0\.0\.1\:8005$'} `
| % {Write-Host "Killing PID" $_.Fields[4] "..."; taskkill /F /PID $_.Fields[4] }
Jika Anda server.xml
mengkonfigurasi Tomcat untuk menggunakan port atau IP yang berbeda, edit ekspresi reguler pada baris keempat skrip yang sesuai.
Akhirnya, saya harus menunjukkan bahwa situasinya lebih baik di Linux karena Anda dapat menginstruksikan Tomcat untuk menyimpan PID-nya ke file pada saat startup dan menggunakan saklar untuk memaksa shutdown, nanti - skrip shutdown untuk 'nix systems sudah dilengkapi dengan kemampuan untuk membunuh proses dan pekerjaan buruk dengan netstat
tidak diperlukan.