Penempatan Paralel Tomcat, secara otomatis tidak menggunakan aplikasi lama

10

Saya telah menggunakan Penempatan Paralel Tomcat 8 sebagai bagian dari pemasangan penerapan terus-menerus tanpa henti untuk sementara waktu sekarang.

Ketika gauntlet pengujian telah dijalankan, server CI secara otomatis mengganti nama file .war ke aplikasi ## {version-number} .war dan menyalin perang ke folder / webapp. aplikasi ## 333 akan hidup berdampingan dengan baik dengan aplikasi ## 332.

Satu-satunya masalah yang saya temui adalah bahwa saya harus secara manual menganggur aplikasi lama setelah semua lalu lintas (sesi baru) secara otomatis dialihkan ke yang baru.

Apakah Tomcat memiliki mekanisme built-in untuk mengatakan "hei, ketika layanan ini turun ke nol sesi, itu harus dihapus"? Mungkin semacam "sesi terakhir baru saja kedaluwarsa" acara yang bisa saya manfaatkan.

Jika ada orang lain yang mengotomatiskan aplikasi semacam ini, saya akan senang mendengarnya. Terima kasih!

Martin Cron
sumber

Jawaban:

9

Anda dapat mengonfigurasi Tomcat untuk menghapus aplikasi lama. Anda perlu menambahkan undeployOldVersionsatribut ke Hostelemen dan mengaturnya true. Anda harus memodifikasi host di server.xml menjadi sesuatu seperti berikut ini:

<Host undeployOldVersions="true" ...>
   ...
</Host>

Lihat dokumentasi Host untuk detailnya. Secara khusus, ini hanya berfungsi ketika penyebaran otomatis diaktifkan.

Mark Thomas
sumber
Dalam versi Tomcat apa yang Anda jalankan? Saya memiliki Tomcat 8.5.6 dan ini tidak berfungsi. Saya telah mengaktifkan FarmWarDeployer, dan rilis baru secara otomatis digunakan. Namun, setelah undeployOldVersions diaktifkan pada tag Host, file perang yang lebih lama (dan penyebaran) tidak dihapus.
Piko
Adakah kemajuan dalam hal ini dengan Tomcat 8?
JimmyD
1
Fitur ini diterapkan untuk Tomcat 8. Jika Anda melihat masalah saat menggunakan FarmWarDeployer, maka buka bug, dengan langkah-langkah untuk mereproduksi, sehingga bisa dilihat.
Mark Thomas