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 :

pb d'un Thread dans la méthode init() d'une Servle


Sujet :

Servlets/JSP Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 67
    Par défaut pb d'un Thread dans la méthode init() d'une Servle
    Bonjour tout le monde,

    dans une application web, j'ai besoin de lancer un process sous forme d'un Thread java. pour le faire : j'ai créé une servlet avec sa méthode init() dont j'ai placé la méthode du lancement du Thread.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    public class BatchServlet extends HttpServlet {
     
    	private static final long serialVersionUID = 1L;
     
    	private TrackerConnection trackerConnexion = null; 
    	public void init() throws ServletException {
    		trackerConnexion = new TrackerConnection();
    		Batch batch = new Batch(false, trackerConnexion);
    		batch.start();
    }
    }
    et pour lancer cette méthode automatiquement après le déploiement de ma web-app, j'ai rajouté dans mon fichier web.xml

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <servlet>
    <servlet-name>BatchServletName</servlet-name>
    <servlet-class>com.capgemini.dts.mco.batch.BatchServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
    </servlet>
    jusqu'ici tout va très bien.
    le pb mnt, c'est quand je lance mon application, mon Thread est lancé deux fois parallélement !!
    je ne sais pas si vous avez bien compris mon problème. merci d'avance

  2. #2
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    A mon avis, ton problème ne vient pas de là...
    Peux-tu montrer le code de TrackerConnection et Batch ?
    Batch étend bien Thread ?

    A+
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 67
    Par défaut
    salut,

    le traitement de mon Batch est un peu comliqué donc j'essayé de le simplifier pour voir d'où ça vient vraiment le problème.
    et j'ai toujours le meme résultat. le Thread se lance deux fois
    voici mon nouv code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    public class BatchServlet extends HttpServlet {
     
    	private static final long serialVersionUID = 1L;
     
    	private TrackerConnection trackerConnexion = null; 
    	public void init() throws ServletException {
     
    		Batch batch = new Batch();
    		batch.start();
    }
    }
    où Batch est :

    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
    35
    36
    37
    38
    39
     
    public class Batch extends Thread {
     
     private static final String CLASSE_NAME = Batch.class.getName();
     
    	private static boolean isWorking = false;
     
    	public void run() {
    		if (!isWorking)
    			executer();
    		else
    			IndigoLogger.logInfo(CLASSE_NAME,"run: impossible de      lancer le thread car il tourne à ce moment");
    	}
     
    	public void  executer() {
    		isWorking = true;
    		IndigoLogger.logInfo(CLASSE_NAME,"execute: Batch lancé...");
    		try {
    			int i = 0;
    			while(i<999999999) {
    				i++;
    			}
     
    		IndigoLogger.logInfo(CLASSE_NAME,"execute: LE traitement du Batch est terminé avec succès");		
    		} catch (Exception e) {
    			IndigoLogger.logFatal(CLASSE_NAME,"execute: "+e.getMessage());
    			e.printStackTrace();
    		}
    		isWorking = false;
    	}
     
    	public static boolean isWorking() {
    		return isWorking;
    	}
     
    	public static void setWorking(boolean isWorking) {
    		Batch_.isWorking = isWorking;
    	}
    }
    à titre d'information je travaille sur un serveur Tomcat. voilà !

  4. #4
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Je ne comprends pas pourquoi il passe 2 fois.
    D'après ton code, il ne fait qu'un passage, il n'y a pas de boucle donc run n'est appelé qu'une fois (ou il manque quelque chose).

    Je fais le même genre de batch avec un serveur Tomcat et ça fonctionne très bien.
    Tu utilises quelle version java ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 67
    Par défaut
    j'utilise la version 5.

    pour préciser, j'utilise eclipse avec l'environnement WTP. j'utilise ainsi le plugin tomcat proposé par cet outil.

    lors du démarrage du serveur de tomcat j'ai ces log sur la console :

    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
     
    9 janv. 2007 17:40:20 org.apache.catalina.core.AprLifecycleListener lifecycleEvent
    INFO: The Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:\Program Files\Java\jdk1.5.0_09\bin;.;C:\WINDOWS\system32;C:\WINDOWS;C:\Program Files\Java\jdk1.5.0_09\bin;D:\oracle\ora92\bin;C:\Program Files\Oracle\jre\1.3.1\bin;C:\Program Files\Oracle\jre\1.1.8\bin;C:\PROGRA~1\PVCS\vm\win32\bin;C:\PROGRA~1\PVCS\vm\common\bin\win32;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\Program Files\SecureCRT;D:\Dev\ant\bin;C:\PROGRA~1\SecureFX;D:\Dev\jikes\bin;C:\Program Files\Microsoft SQL Server\90\Tools\binn\;C:\Program Files\Fichiers communs\Adobe\AGL;d:\dev\jad
    9 janv. 2007 17:40:20 org.apache.coyote.http11.Http11BaseProtocol init
    INFO: Initialisation de Coyote HTTP/1.1 sur http-8080
    9 janv. 2007 17:40:20 org.apache.catalina.startup.Catalina load
    INFO: Initialization processed in 1063 ms
    9 janv. 2007 17:40:21 org.apache.catalina.core.StandardService start
    INFO: Démarrage du service Catalina
    9 janv. 2007 17:40:21 org.apache.catalina.core.StandardEngine start
    INFO: Starting Servlet Engine: Apache Tomcat/5.5.20
    9 janv. 2007 17:40:21 org.apache.catalina.core.StandardHost start
    INFO: XML validation disabled
    9 janv. 2007 17:40:21 org.apache.catalina.loader.WebappClassLoader validateJarFile
    INFO: validateJarFile(D:\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\webapps\indiGO 2\WEB-INF\lib\j2ee.jar) - jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: javax/servlet/Servlet.class
    log4j:WARN No appenders could be found for logger (org.apache.catalina.startup.TldConfig).
    log4j:WARN Please initialize the log4j system properly.
    executer
    9 janv. 2007 17:40:22 org.apache.catalina.loader.WebappClassLoader validateJarFile
    INFO: validateJarFile(D:\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\webapps\indiGO 2\WEB-INF\lib\j2ee.jar) - jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: javax/servlet/Servlet.class
    log4j:WARN No appenders could be found for logger (org.apache.commons.digester.Digester.sax).
    log4j:WARN Please initialize the log4j system properly.
    executer
    9 janv. 2007 17:40:24 org.apache.coyote.http11.Http11BaseProtocol start
    INFO: Démarrage de Coyote HTTP/1.1 sur http-8080
    9 janv. 2007 17:40:24 org.apache.jk.common.ChannelSocket init
    INFO: JK: ajp13 listening on /0.0.0.0:8009
    9 janv. 2007 17:40:25 org.apache.jk.server.JkMain start
    INFO: Jk running ID=0 time=0/359  config=null
    9 janv. 2007 17:40:25 org.apache.catalina.storeconfig.StoreLoader load
    INFO: Find registry server-registry.xml at classpath resource
    9 janv. 2007 17:40:26 org.apache.catalina.startup.Catalina start
    INFO: Server startup in 5266 ms
    j'ai ajouté le mot executer dans la trace, pour la vérification.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public void  executer() {
    		isWorking = true;
    		System.out.println("executer");
    ...
    je crois qu'il y a qq warn qui cause le redémarrage de la servlet.

Discussions similaires

  1. Tests des méthodes init, start, stop dans une applet
    Par JCD21 dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 30/01/2012, 16h05
  2. [Thread] appel de méthodes non-synchronized dans une méthode synchronized
    Par dr23fr dans le forum Concurrence et multi-thread
    Réponses: 1
    Dernier message: 24/06/2008, 22h47
  3. Exécution d'un Thread dans une méthode statique
    Par barbiche dans le forum Débuter avec Java
    Réponses: 3
    Dernier message: 03/05/2007, 14h25
  4. [SWING][THREAD]Méthodes pour afficher une Frame
    Par pompidouwa dans le forum Agents de placement/Fenêtres
    Réponses: 3
    Dernier message: 05/05/2004, 10h35
  5. Thread dans une classe ?
    Par Sephi dans le forum Threads & Processus
    Réponses: 7
    Dernier message: 07/03/2004, 18h16

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