IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Tomcat et TomEE Java Discussion :

Faut-il tjs redémarrer tomcat pour prise en compte des modifications des .class dans WEB-INF/classes ?


Sujet :

Tomcat et TomEE Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Août 2009
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 155
    Points : 45
    Points
    45
    Par défaut Faut-il tjs redémarrer tomcat pour prise en compte des modifications des .class dans WEB-INF/classes ?
    Bonjour à tous,

    j'ai remarqué que lorsqu'on modifie un fichier .class dans le répertoire WEB-INF/classes d'une appli, il fallait redémarrer tomcat pour qu'ils prennent en compte les modifs.
    Dans un environnement de production, je pense que ceci peut être un problème, non ? D'où ma question, existe-t'il un moyen pour que les modifs soient prises en compte sans avoir à redémarrer le serveur ?

    Merci à vous pour vos réponses

  2. #2
    Membre habitué
    Inscrit en
    Septembre 2002
    Messages
    233
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 233
    Points : 131
    Points
    131
    Par défaut
    Ca ne doit pas toujours le cas, il faut voir les paramètres autodeploy de la configuration du server.xml

  3. #3
    Membre éprouvé Avatar de Jidefix
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    742
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Septembre 2006
    Messages : 742
    Points : 1 154
    Points
    1 154
    Par défaut
    Bonjour,
    sur mon serveur, les fichiers .jsp et class. sont rafraichis automatiquement si je les modifie, ça doit dépendre effectivement des paramètres du server.xml
    En revanche il arrive que le rafraichissement des .class bloque le serveur (plus aucune servlet ne réagit).
    En général je m'en sors en faisant ctrl+C dans la console tomcat, mais des fois en plus de débloquer Tomcat ça le coupe carrément.

    Bref je trouve pas ça hyper fiable et si ça peut bien dépanner, c'est quand même pas une pratique que je recommande en production (je crois que sous JBoss par exemple c'était une cause de OutOfMemory: PermGenSpace, ça m'étonnerai pas que ça fasse la même chose sous Tomcat)
    Veuillez agréer nos sentiments les plus distingués. Soyez assurés de notre entière collaboration, bien à vous pour toujours et à jamais dans l'unique but de servir l'espérance de votre satisfaction, dis bonjour à ton père et à ta mère, bonne pétanque, mets ton écharpe fais froid dehors.

  4. #4
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    si les webapp sont pas propre, il arrive que catalina (le moteur derrière tomcat) ne sache pas nettoyer le classloader de la webapp, résultat les classloader s'accumulent au fur et à mesure jusqu'à atteindre le remplissage du permgen. Sinon, théoriquement, pas besoin de redémarrer tomcat, mais il faut redémarrer la webapplication concernée (en autodeploy, elle redémarre d'elle même). En pratique, si tu utilise du hibernate ou autre librairie basée sur cglib, tu va manger du permgen si tu fais ça

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Août 2009
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 155
    Points : 45
    Points
    45
    Par défaut
    il me semble avoir trouvé une solution :

    dans l'appli qui doit être rechargée au cas où un .class a été modifié (axis dans mon cas, je fais des web services), dans un répertoire META-INF, je crée un fichier context.xml qui contient :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <Context path="/axis" docBase="axis" reloadable="true" />
    et ça recharge le contexte dès qu'un class a été modifié. Mais je crois que c'est un process qui tourne en boucle et ce n'est pas terrible (enfin en dév ça va).

    Sinon quand ce sera en prod je pensais recharger le context de mon appli via le gestionnaire des application Tomcat, à la main donc, sachant que ce sera fait que lors d'une nouvelle mise en production, donc assez rarement.

    qu'en pensez-vous ?

  6. #6
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    qu'en prod il vaut mieux planifier une mise a jou incluant un arret de quelques minutes du tomcat

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Août 2009
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 155
    Points : 45
    Points
    45
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    qu'en prod il vaut mieux planifier une mise a jou incluant un arret de quelques minutes du tomcat
    oui mais ça impliquerait de prévenir tous les clients, ce qui n'est pas chose aisée pour nous...

    je ne peux pas recharger le contexte manuellement sans arrêter tomcat ?? quel serait le problème ?

    De plus, peut être que je me trompe, mais j'ai l'impression que tomcat recharge le contexte uniquement lorsqu'il a terminé les traitements qu'il était eventuellement en train de faire. Et dans ce cas tout va bien, non ? Me trompe-je ?

  8. #8
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    que tu redémarre tomcat ou uniquement le contexte, les utilisateur de ce contexte vont avoir une interruption de service. Si service continu il doit y avoir, je suggère plutot dans ce cas de dédoubler les tomcat avec un serveur web en front end. Ainsi t'arrete et met à jour le premier, puis le deuxième

    Comme déjà expliqué, tu peux te contenter de ne redémarrer que le contexte, mais tu finira au bout de quelques cycle avec le problème de la mémoire (permgen) si il y a la moindre libraire dans ta webapp pas concue pour aller dans une webapp.

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Août 2009
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 155
    Points : 45
    Points
    45
    Par défaut
    Merci à tous pour vos réponses.

    J'ai une question stupide :
    pour faire tourner un web service (côté serveur) écrit en Java (avec Axis) sous windows, faudra-t'il aussi tomcat ?
    Actuellement j'ai mon web service qui tourne sous linux, avec Tomcat et Axis.
    Et je me demandais comment faire sous windows. A mon avis ce sera la même chose mais j'aimerais être sûre.

    Merci à vous

  10. #10
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    tomcat ou n'importe quel autre conteneur webapp (jboss, jonas, websphere, etc)

  11. #11
    Membre éprouvé
    Avatar de hasalex
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2009
    Messages
    879
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Janvier 2009
    Messages : 879
    Points : 1 269
    Points
    1 269
    Par défaut
    tchize_ : Pour les problèmes de memory leak dans le permgen, regarde dans Tomcat 6.0.24, il y a un listener qui fait le ménage.

    Dans tous les cas, l'option reloadable n'assure aucune continuité de service, il y a toujours le problème des sessions.

  12. #12
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    merci pour l'info. Reste à voir si le fix est porté sous jboss . 5 ans qu'on l'attendais nous

    Concernant les sessions, si t'as bien fait gaffe à ne mettre que des données sérializables dans la session, ca ne devrais pas poser de soucis, tomcat sérialize puis désérialize les sessions

  13. #13
    Membre éprouvé
    Avatar de hasalex
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2009
    Messages
    879
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Janvier 2009
    Messages : 879
    Points : 1 269
    Points
    1 269
    Par défaut
    Pour JBoss, ça m'étonnerait qu'on l'ait avant la v6.

    Pour la sérialisation, encore faut-il que les modifs n'impactent pas les objets sérialisés...

  14. #14
    Membre éprouvé
    Avatar de hasalex
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2009
    Messages
    879
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Janvier 2009
    Messages : 879
    Points : 1 269
    Points
    1 269
    Par défaut
    A suivre, sur le même sujet : ZeroTurnaround LiveRebel.

Discussions similaires

  1. Macro : Remplacer "." par "/" pour prise en compte format date
    Par neronne dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 01/01/2018, 17h37
  2. Réponses: 1
    Dernier message: 24/05/2008, 17h04
  3. Réponses: 4
    Dernier message: 07/02/2008, 11h57
  4. regex pour comparer des dates, des chiffres, des nombres
    Par lex13 dans le forum Collection et Stream
    Réponses: 14
    Dernier message: 06/07/2007, 11h51
  5. Réponses: 2
    Dernier message: 28/06/2007, 18h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo