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

Spring Web Java Discussion :

Spring - Quartz job exécuté 2 fois


Sujet :

Spring Web Java

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 54
    Points : 39
    Points
    39
    Par défaut Spring - Quartz job exécuté 2 fois
    Bonjour a tous,

    j'utilise :
    - spring mvc, ioc 2.5.6
    - spring security 2.0.5
    - quartz 1.8.0

    j'ai 2 job configuré avec quartz, un qui tourne tous les jours a 5h et l'autre a 6h
    tout s'exécute correctement, sauf que les 2 job sont exécutés 2fois chacun.

    j'ai trouvé la raison de ce problème, mais aucune solution

    mon problème est que je charge 2 fois mes config spring dans le context

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <listener>
    		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    	</listener>
     
    <context-param>
    		<param-name>contextConfigLocation</param-name>
    		<param-value>/WEB-INF/myapp-servlet.xml</param-value>
    	</context-param>
    d'après ce que j'ai vu cette config est requise pour spring security

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <servlet>
    		<servlet-name>myapp</servlet-name>
    		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>		
    		<load-on-startup>2</load-on-startup>
    	</servlet>
    je split ma config spring dans plusieurs fichiers xml,

    myapp-servlet.xml => servlet
    spring-frontend.xml => bean pour la présentation
    spring-core.xml => bean pour la couche business
    spring-backend.xml => bean d'accès au données
    spring-hibernate.xml => config d'hibernate
    spring-datasource.xml => les paramètres de connexion au db
    spring-security.xml => config de spring security

    myapp-servlet.xml : import (spring-frontend et spring-security)
    spring-frontend : import (spring-core)
    spring-core : import (spring-backend)
    spring-backend : import (spring-hibernate)
    spring-hibernate : import (spring-datasource)

    y a t-il une solution a mon problème ?

    merci d'avance

  2. #2
    Rédacteur
    Avatar de Hikage
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    1 177
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 177
    Points : 6 301
    Points
    6 301
    Par défaut
    Hello,

    En fait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
    <listener>
    		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    	</listener>
     
    <context-param>
    		<param-name>contextConfigLocation</param-name>
    		<param-value>/WEB-INF/myapp-servlet.xml</param-value>
    	</context-param>
    n'est pas adapté.

    Le fichier myapp-servlet.xml contient certainement la configuration de Spring MVC ( Controller, vue, ... ). Et donc ne doit pas être chargé dans le contexte 'general', c'est à dire celui chargé par le ContextLoaderListener.

    Dans le fichier frontend, tu parle de configuration des beans pour la présentation. Qu'entends tu pars la ?

    En gros, que met tu dans le fichier myapp-servlet.xml et spring-frontend.xml ?
    Hikage
    SCJP / SCWCD & SCWSJD Certified / Spring Framework Certified
    [Personal Web] [CV]

    F.A.Q Spring Framework - Participez !

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 54
    Points : 39
    Points
    39
    Par défaut
    Bonjour,

    dans myapp-servlet.xml, je met

    comme dis plus haut
    - import de spring-frontend.xml
    - import de spring-security.xml
    +
    - configuration (spring bean) pour urlMapping, view resolver, exception resolver, message source

    dans spring-frontend.xml
    - les bean pour mes controller, form controller, les validator

    donc, oui dans myapp-servlet.xml et spring-frontend.xml c'est bien le mvc


    j'ai oublié de dire que j'utilise DWR, il faut aussi mètre les spring-bean, qu'utilise dwr,
    dans le context

  4. #4
    Membre à l'essai
    Inscrit en
    Janvier 2009
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 28
    Points : 19
    Points
    19
    Par défaut Quartz JOB ALERT
    je crois que votre problème vient seulement du déclaration d'un listener essayez
    d'appeler votre servlet qui contient alerte job

    <listener>
    <listener-class>
    com.mabya.marotrans.systrans.alertjobs.SchedulerServlet
    </listener-class>
    </listener>




    Exemple SchedulerServlet


    package com.mabya.marotrans.systrans.alertjobs;

    import java.text.ParseException;
    import java.util.Map;

    import javax.servlet.ServletContextEvent;
    import javax.servlet.ServletContextListener;

    import org.quartz.CronTrigger;
    import org.quartz.JobDetail;
    import org.quartz.Scheduler;
    import org.quartz.SchedulerException;
    import org.quartz.impl.StdSchedulerFactory;

    @SuppressWarnings("serial")
    public class SchedulerServlet implements ServletContextListener {
    public void contextDestroyed(ServletContextEvent arg0) {
    //
    }

    @SuppressWarnings("unchecked")
    public void contextInitialized(ServletContextEvent arg0) {

    SchedulerTask task = new SchedulerTask();

    // specify your sceduler task details
    JobDetail job = new JobDetail();
    job.setName("jobName");
    job.setJobClass(SchedulerJob.class);
    job.setDurability(true);
    //job.setVolatility(true);
    Map dataMap = job.getJobDataMap();
    dataMap.put("schedulerTask", task);

    try {
    // configure the scheduler time, run it every 5 seconds
    CronTrigger trigger = new CronTrigger();
    trigger.setName("runMeJobTesting");

    trigger.setCronExpression("0 46 12 ? * SUN");

    // schedule it
    Scheduler scheduler = new StdSchedulerFactory().getScheduler();
    scheduler.start();

    scheduler.scheduleJob(job, trigger);

    } catch (ParseException e) {
    e.printStackTrace();
    } catch (SchedulerException e) {
    e.printStackTrace();
    }
    }
    }

Discussions similaires

  1. Réponses: 0
    Dernier message: 11/06/2013, 11h10
  2. Réponses: 31
    Dernier message: 27/12/2010, 12h26
  3. [Quartz]Mon traitement planifié s'exécute 2 fois
    Par El_touristo dans le forum Général Java
    Réponses: 1
    Dernier message: 16/05/2008, 17h30
  4. La fonction à la fermeture d'un fichier est exécutée 2 fois...
    Par Pierre Fauconnier dans le forum Access
    Réponses: 4
    Dernier message: 27/04/2006, 14h14
  5. Script qui s'exécute 2 fois!
    Par franculo_caoulene dans le forum Général JavaScript
    Réponses: 13
    Dernier message: 07/12/2005, 09h48

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