Comment puis-je mettre à jour une application Web Tomcat sans avoir à redémarrer tout le service?

Je suis nouveau sur Tomcat . Nous avons une machine de développement avec environ 5 applications en cours d’exécution. Même si c’est le dev, il est très utilisé par nos clients pendant les tests.

Alors, disons que nous devons apporter un petit changement sur un fichier de classe. Pour le moment, nous devons arrêter Tomcat (affectant les quatre autres applications), supprimer le fichier WAR (et le répertoire de l’application Web), redéployer le nouveau fichier WAR et redémarrer Tomcat .

Bien sûr, cela perturbe quelques personnes car il détruit toutes les sessions connectées pour toutes les applications.

Y a-t-il une meilleure manière de faire cela? Je veux dire, y a-t-il un moyen de ne recharger que la CLASS qui a changé au lieu de tout sur la machine de développement?

Merci.

Avez-vous essayé d’utiliser l’application Manager de Tomcat ? Il vous permet de déployer / déployer des fichiers de guerre sans fermer Tomcat.

Si vous ne souhaitez pas utiliser l’application Manager, vous pouvez également supprimer le fichier war du répertoire webapps, Tomcat annulera le déploiement de l’application après une courte période. Vous pouvez ensuite copier un fichier war dans le répertoire et Tomcat déploiera le fichier war.

Si vous exécutez Tomcat sous Windows, vous devrez peut-être configurer votre contexte pour ne pas verrouiller divers fichiers.

Si vous ne pouvez absolument pas avoir de temps d’arrêt, vous pouvez consulter les déploiements parallèles de Tomcat 7 Vous pouvez déployer simultanément plusieurs versions d’une application Web avec le même chemin de contexte. Les règles utilisées pour faire correspondre les demandes à une version contextuelle sont les suivantes:

  • Si aucune information de session n’est présente dans la demande, utilisez la dernière version.
  • Si des informations de session sont présentes dans la demande, vérifiez le gestionnaire de session de chaque version pour une session correspondante et, le cas échéant, utilisez cette version.
  • Si des informations de session sont présentes dans la demande mais qu’aucune session correspondante ne peut être trouvée, utilisez la dernière version.

Il y a plusieurs manières simples.

  1. Touchez simplement web.xml de toute application Web.

     touch /usr/share/tomcat/webapps//WEB-INF/web.xml 

Vous pouvez également mettre à jour un fichier jar particulier dans WEB-INF / lib, puis toucher web.xml, plutôt que de créer un fichier de guerre complète et de le déployer à nouveau.

  1. Supprimer le répertoire webapps / YOUR_WEB_APP, Tomcat va commencer à déployer la guerre dans les 5 secondes (en supposant que votre fichier de guerre existe toujours dans le dossier webapps).

  2. Généralement, le remplacement du fichier de guerre par une nouvelle version est automatiquement redéployé par tomcat. Sinon, vous pouvez toucher web.xml comme expliqué ci-dessus.

  3. Copiez un “répertoire” déjà explosé dans votre dossier webapps

Dans le répertoire conf de apache tomcat, vous pouvez trouver le fichier context.xml. Dans cette balise d’édition, < Context reloadable = “true” >. cela devrait résoudre le problème et vous n’avez pas besoin de redémarrer le serveur