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

Servlets/JSP Java Discussion :

[Servlet]Double initialisation au démarrage


Sujet :

Servlets/JSP Java

  1. #1
    Candidat au Club
    Inscrit en
    Septembre 2004
    Messages
    5
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5
    Points : 2
    Points
    2
    Par défaut [Servlet]Double initialisation au démarrage
    Bonjour,

    Pour développer une appli web, j'utilise Eclipse/Web Tools et tomcat 5.5

    J'ai un problème au démarrage de mon appli. Ma servlet chargée au démarrage passe deux fois dans la méthode init() ! Pas très pratique pour effectuer des traitements important.

    Quelqu'un a déjà rencontré le problème ?

    Merci d'avance pour votre aide !

  2. #2
    Membre habitué Avatar de adil_vpb
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2006
    Messages
    326
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2006
    Messages : 326
    Points : 132
    Points
    132
    Par défaut
    Bonjour,
    tu peux nous montrer le script de ta servlet ?

  3. #3
    Candidat au Club
    Inscrit en
    Septembre 2004
    Messages
    5
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Oui bien sûr :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    public class CompareServlet extends HttpServlet{
     
    	private static final long serialVersionUID = 1;
     
    	protected static boolean cbIsInitialized = false;
     
    	protected static Object coMutex = new Object();
     
    	/**
    	 * Initialise la servlet COMPARE :
    	 * <li>Initialisation de la configuration COMPARE</li>
    	 * @throws ServletException
    	 */
    	public void init() 
    		throws ServletException {
     
    		try {
    			super.init();			
    			// Initialisation servlet
    			 System.out.println("_________________________________________________________\n");
    			System.out.println("Initialisation servlet Compare");
    			// TODO Chargement de la configuration
    			// TODO Chargement des dictionnaires de langues
    			// TODO Mise à jour des taux de changes
    			System.out.println("_________________________________________________________\n");
     
    		} catch (Exception loEx) {		
    			loEx.printStackTrace();
    		}
    	}
     
     
     
    }
    Je ne pense pas que le problème vient du code. Il me semble qu'il s'agit plutot d'un problème de configuration. Mais là je pêche

    AU cas où, voici mon web.xml :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    <web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
    	<display-name>compare</display-name>
    	<servlet>
    		<description>
    		</description>
    		<display-name>CompareServlet</display-name>
    		<servlet-name>CompareServlet</servlet-name>
    		<load-on-startup>1</load-on-startup>
    		<servlet-class>com.xxx.compare.servlet.CompareServlet</servlet-class>
    	</servlet>
    	<servlet-mapping>
    		<servlet-name>CompareServlet</servlet-name>
    		<url-pattern>/CompareServlet/*</url-pattern>
    	</servlet-mapping>
     
    </web-app>
    et la déclaration du context de mon server.xml:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <Context docBase="Compare" path="/compare/" reloadable="false" source="org.eclipse.jst.j2ee.server:Compare" useNaming="true" crossContext="true"/>

    Merci d'avance pour toutes vos suggestions.

  4. #4
    Membre confirmé Avatar de toomsounet
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    481
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 481
    Points : 576
    Points
    576
    Par défaut
    Juste par curiosité, c'est forcé d'appeller super.init() dans ton init() ?

  5. #5
    Candidat au Club
    Inscrit en
    Septembre 2004
    Messages
    5
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    En fait, ça aurait surtout d'interêt si je lui passait une référence de la config de la servlet.

    En tout cas, ce n'est pas la cause du problème.

  6. #6
    Inactif  
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    2 189
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 189
    Points : 2 336
    Points
    2 336
    Par défaut
    au démarrage du server ta servlet est appellé une fois

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <load-on-startup>1</load-on-startup>
    après si tu accèdes à ta servlet c'est clar que le traitement sera executé une deuxième fois

  7. #7
    Inactif  
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    2 189
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 189
    Points : 2 336
    Points
    2 336
    Par défaut
    Je comprend pas vraiment pourquoi tu définis compare dans ton server.xml.

    A mon avis il faut soit que tu le vires du server.xml soit que tu vires le load-on-startup.

    Si tu veux effectivement que ca soit démarré lors du démarrage de tomcat (pour toutes tes applications) tu le définis dans server.xml, si tu veux que ca soit démarrer pour ton context d'application il faut que tu vires de server.xml et que tu laisses dans web.xml.

  8. #8
    Candidat au Club
    Inscrit en
    Septembre 2004
    Messages
    5
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    En fait, le projet s'appelle Compare et est définit dans le server.xml

    Le principe, c'est que je charge au lancement de l'application un certains nombre de traitement (chargement de configuration, des dictionnaires de langue, mise à jour de devise)

    Ensuite la servlet (CompareServlet) servira de point d'entrée de l'application pour dispatcher les requêtes. Cela permettra d'accomplir certains traitements lors de cas particulier. Il seront traités par la méthode service() qui ressemblera à ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    public void service(ServletRequest poRequest, ServletResponse poResponse) throws javax.servlet.ServletException, java.io.IOException {  
    		// Récupération de la session.
    		HttpServletRequest loRequest = (HttpServletRequest) poRequest;
    		HttpServletResponse loResponse = (HttpServletResponse) poResponse;
     
    		String lSRequestedURL = loRequest.getPathInfo();
     
    		try {
                            // On traite l'url demandé, par defaut une simple redirection :
    			loResponse.sendRedirect(lSRequestedURL);
    		} catch (java.lang.StringIndexOutOfBoundsException e) {
    			e.printStackTrace();
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    	}

  9. #9
    Inactif  
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    2 189
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 189
    Points : 2 336
    Points
    2 336
    Par défaut
    A première vue lorsque tu définis dans server.xml le context ta servlet est une première fois initialisé. Donc vire soit le context soit le load-on-startup

  10. #10
    Candidat au Club
    Inscrit en
    Septembre 2004
    Messages
    5
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Merci pour ton aide, elle m'a bien mise sur la voie !

    En fait, j'ai supprimé le context dans le server.xml et définit un context.xml dans mon META-INF

    celui-ci contient :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <?xml version="1.0" encoding="UTF-8"?>
    <Context  path="/compare/" reloadable="false"  source="org.eclipse.jst.j2ee.server:Compare" useNaming="true" crossContext="true">
    </Context>
    Pour être plus précis, c'est l'attribut docBase="Compare" qui provoquait le premier appel.

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

Discussions similaires

  1. Supprimer double boot au démarrage de Xp
    Par Glauben dans le forum Windows XP
    Réponses: 8
    Dernier message: 14/05/2011, 16h56
  2. double possibilité de démarrage indésirable
    Par Blue_Strike dans le forum Windows XP
    Réponses: 1
    Dernier message: 16/02/2007, 23h09
  3. [Servlet] double appel de la méthode init()
    Par nin2 dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 07/06/2006, 09h09
  4. [VB]Combobox initialisation au démarrage.
    Par ept35 dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 15/02/2006, 09h18
  5. [servlet] initialisation d'objets
    Par tiPouick dans le forum Servlets/JSP
    Réponses: 11
    Dernier message: 05/08/2003, 13h12

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