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 :

[Tomcat] FileLogger au démarrage d'un contexte


Sujet :

Tomcat et TomEE Java

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

    Informations forums :
    Inscription : Août 2004
    Messages : 11
    Points : 8
    Points
    8
    Par défaut [Tomcat] FileLogger au démarrage d'un contexte
    Bonjour,

    Je veux démarrer un thread au lancement de tomcat pour des calculs de statistiques sur les logs de l'appli.

    Pour ce faire, j'utilise la balise <load-on-startup> pour démarrer ma servlet au lancement de tomcat. Tous ce passe bien, puisque ma méthode init de ma servlet est appelée. Dans cette méthode je démarre mon thread et log cette info dans le FileLogger de catalina (tomcat).

    J'ai fait de mon thread un singleton pour m'assurer qu'une seule instance est lancée. Dans ce thread, je cherche le répertoire de log que catalina utilise pour y extraire les fichiers de log et faire donc mes stats dessus avec la méthode suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     private String getRepLog&#40;&#41; throws TecException&#123;
     
            try &#123;
                FileLogger  fl = new FileLogger&#40;&#41;;
                if&#40;fl == null&#41; throw new TecException&#40;"Impossible de lire les logs", e&#41;;
                return Params.serverBase + File.separator + fl.getDirectory&#40;&#41;;
            &#125; catch&#40;Error er&#41;&#123;
                er.printStackTrace&#40;&#41;;
                throw new TecException&#40;"Impossible de lire les logs", er&#41;;
            &#125;
     
        &#125;
    Pb, sur la console j'ai le message ci-dessous, qui vient de l'appel de la méthode getRepLog(), et pourtant mon thread travail bien et j'obtient mes résultats:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java.lang.NoClassDefFoundError&#58; org/apache/catalina/logger/FileLogger

    En debuggant, j'ai remarqué que la méthode init de la servlet est en fait appelée deux fois au cours du démarrage de tomcat. J'ai donc ajouté un compteur static dans mon thread pour voir dans quel appel le problème se pose (un static int que j'incrémente a chaque new de mon thread). Il s'agit du numéro ci-dessous.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    INFO&#58; Processing Context configuration file URL file&#58;./config.xml
    15 févr. 2006 16&#58;37&#58;44 org.apache.catalina.core.StandardHostDeployer install
    ** Methode inti de la servlet appelee, et lancement du thread numero 1 **
    INFO&#58; Installation d'une application pour le chemin de contexte /webapp depuis l'URL file&#58;./webapp
    15 févr. 2006 16&#58;37&#58;44 org.apache.coyote.http11.Http11Protocol start
    ** Methode inti de la servlet appelee, et lancement du thread numero 1 **
    Comme on peut le voir le numéro reste à 1 pourtant il est stocké dans une variable static donc logiquement commune à toutes les instances de ma classe. J'ai l'impression que le serveur démarre en deux temps dans deux zones de mémoires distincts.

    Est-ce que qq1 peut m'éclairer la dessus pour mieux comprendre les phases de démarrage du serveur et éviter alors ce genre de problème?

    PS: même si ça ne perturbe ni mon thread ni mon appli, je trouve ça génant car ça rempli le catalina.out.


    [Modéré par Didier] : ajout de tag dans le titre - Les règles du forum Java

  2. #2
    Membre expérimenté
    Avatar de zekey
    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 036
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 036
    Points : 1 403
    Points
    1 403
    Par défaut Re: Pb FileLogger au démarrage d'un contexte
    Citation Envoyé par eods
    Pb, sur la console j'ai le message ci-dessous, qui vient de l'appel de la méthode getRepLog(), et pourtant mon thread travail bien et j'obtient mes résultats:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java.lang.NoClassDefFoundError&#58; org/apache/catalina/logger/FileLogger
    tu as bien le common-logging.jar dans ton répertoire lib ?
    Steve Hostettler
    est ton ami(e) et le tag aussi.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2004
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 11
    Points : 8
    Points
    8
    Par défaut
    L'api "commons-logging-api.jar" est bien présente sous le répertoire bin de tomcat, même en le plaçant dans le répertoire common/lib de tomcat cela ne change rien.

    Ce que je ne comprend pas c'est tout de même deux choses:
    1- pourquoi deux passages dans la méthode init de ma servlet au démarrage
    2- pourquoi la variable static n'est pas incrémenté suite au premier passage pour voir numéro 2 s'afficher au cours du second passage.

    Il y a des choses que j'ignore sur le démarrage du serveur tomcat et j'ai beau consulter le site http://tomcat.apache.org je vois nul part un commentaire qui explique ce double passage dans init.

    Je peux toujours intercepter ca et cacher la misère, mais c'est du bidoullage qui ne me plait pas.

    Qu'est-ce qu'il peut réellement se passer?

Discussions similaires

  1. apache-tomcat-5.5.25 et path context
    Par hterrolle dans le forum Tomcat et TomEE
    Réponses: 2
    Dernier message: 05/12/2007, 17h39
  2. [Tomcat] NamingException au démarrage
    Par bumbo500 dans le forum Tomcat et TomEE
    Réponses: 1
    Dernier message: 24/10/2006, 18h15
  3. [JOnAS-Tomcat][JAAS]Probleme de securisation de contexte
    Par SEMPERE Benjamin dans le forum JOnAS
    Réponses: 3
    Dernier message: 24/06/2005, 14h49
  4. [ plugin ][ TomCat ] probleme au démarrage de tomcat
    Par winnet dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 20/06/2005, 17h12
  5. [ plugin ][ TomCat ] pb au démarrage de tomcat
    Par mille_furies dans le forum Eclipse Java
    Réponses: 6
    Dernier message: 12/05/2004, 18h42

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