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 :

Instanciation de Servlet au démarrage de Tomcat


Sujet :

Tomcat et TomEE Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Inscrit en
    Avril 2009
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 7
    Par défaut Instanciation de Servlet au démarrage de Tomcat
    Bonjour,

    Je souhaiterais configurer mon serveur Tomcat (V5.5) afin de lancer automatiquement une Servlet à son démarrage.

    Pour cela, j'ai modifié le fichier de déploiement web.xml de la façon suivante :

    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <!DOCTYPE web-app
    PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
    "http://java.sun.com/dtd/web-app_2_3.dtd">
    <web-app>
    <servlet>
    <servlet-name>MaServlet</servlet-name>
    <servlet-class>monpackage.MaServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
    </servlet>
    </web-app>
    De plus, j'ai placé le code à exécuter au démarrage du serveur dans la méthode public void init(ServletConfig config) de ma Servlet.


    Le problème est que ma Servlet semble être instanciée 2 fois par Tomcat à son démarrage !
    En effet, en observant les traces dans les logs, je m'aperçois que le constructeur et la méthode init() sont appelées deux fois .....

    Le souci vient du fait que le code en question ne doit être exécuté qu'une seule fois au démarrage.


    Que dois-je donc préciser dans mes fichiers de configuration (server.xml, web.xml, ...) afin de n'instancier ma Servlet qu'une seule fois ?

    Merci d'avance pour vos précieuses réponses.

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

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Janvier 2009
    Messages : 879
    Par défaut
    Es-tu certain que ce n'est pas la trace qui sort 2 fois, mais qu'il y a bien 2 objets différents (avec des hashcode différents) qui sont créés ?

    Lances-tu Tomcat en autonome ou depuis un environnement de développement ?

  3. #3
    Nouveau membre du Club
    Inscrit en
    Avril 2009
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 7
    Par défaut
    J'avais déjà vérifié ce point en traçant la valeur du hashcode de la servlet dans le construsteur ainsi que dans la méthode destroy(), et j'observe bien dans les traces deux hashcodes différents.

    Il semblerait donc que deux objets différents soit réellement crées


    Par ailleurs, je lance et j'arrête mon serveur Tomcat "à la main" via des scripts (sans passer par une IDE).

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

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Janvier 2009
    Messages : 879
    Par défaut
    Ca me semble étrange...

    Je suppose que tu n'as déclaré qu'une seule servlet pour cette classe. A tout hasard, fais afficher congif.getServletName() dans ta trace.

    Tu peux aussi essayer de passer sur une version de webapp plus récente (ie. 2.4).

  5. #5
    Nouveau membre du Club
    Inscrit en
    Avril 2009
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 7
    Par défaut
    En effet, je n'ai déclaré qu'une seule servlet pour cette classe.
    Il s'agit de la déclaration faite dans le fichier web.xml (détaillé précédemment).

    Comme tu l'as suggéré, je viens d'ajouter un appel à config.getServletName() dans ma trace, et j'obtiens bien deux fois le même nom, qui est celui déclaré pour ma servlet dans le web.xml (avec toujours deux hashcode différents...) !

    Aurais-tu d'autres pistes stp ?

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

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Janvier 2009
    Messages : 879
    Par défaut
    Tu devrais tester si c'est la servlet qui est initialisée 2 fois, ou si c'est l'application qui est déployée 2 fois. Avec une autre servlet, un servletcontextlistener, ou en navigant dans le manager.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [LOG4J] Erreur au démarrage de tomcat WARN No appenders...
    Par PamelaGeek dans le forum Eclipse Java
    Réponses: 14
    Dernier message: 04/01/2006, 15h48
  2. [ plugin ][ TomCat ] probleme au démarrage de tomcat
    Par winnet dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 20/06/2005, 16h12
  3. [Tomcat]comment compiler les servlets sous eclipse et tomcat
    Par boussaad dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 31/03/2005, 15h29
  4. [WSAD] Démarrage de Tomcat 5.5
    Par colargol70 dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 24/01/2005, 12h21
  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, 17h42

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