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 Java Discussion :

[Quartz] Le job ne se lance pas


Sujet :

Spring Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    68
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 68
    Par défaut [Quartz] Le job ne se lance pas
    Bonjour à tous,

    voici mon petit problème : je souhaiterais lancé un job une fois par jour. J'emploie donc Quartz et mon application server est un jboss 4.2 (donc livré avec quartz-ra.rar).

    En ce qui concerne la création du job, le cron et le scheduler, je fais confiance à Spring. Voici d'ailleurs mon contexte :

    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
     
    	<!-- this bean allows to manage a list of triggers -->
    	<bean id="quartzScheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
    		<property name="triggers">
    			<list>
    				<ref bean="cronDeleteOldOpportunitiesTrigger"/>
    			</list>
    		</property>
    	</bean>
     
     
    	<!-- the job will be started every day at 00:00:01 -->
    	<bean id="cronDeleteOldOpportunitiesTrigger"
    		class="org.springframework.scheduling.quartz.CronTriggerBean">
    		<property name="jobDetail" ref="deleteOldOpportunitiesJob"/>
    		<property name="cronExpression" value="0 * 17 * * ?" />
    	</bean>
     
     
    	<bean id="deleteOldOpportunitiesJob"
    		class="org.springframework.scheduling.quartz.JobDetailBean">
    		<property name="jobClass" value="com.coyote.backend.jobs.DeleteOldOpportunitiesJob"/>
    		<property name="jobDataAsMap">
    			<map>
    				<entry key="serviceLocator" value-ref="serviceLocator" />
    			</map>
    		</property>
    	</bean>


    Voici mon job :

    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
     
    package com.naxosit.backend.jobs;
     
    import java.util.Date;
    import java.util.List;
    import org.apache.log4j.Logger;
    import org.quartz.JobExecutionContext;
    import org.quartz.JobExecutionException;
    import org.springframework.scheduling.quartz.QuartzJobBean;
    import com.coyote.core.locator.ServiceLocator;
     
    public class DeleteOldOpportunitiesJob extends QuartzJobBean {
     
        private ServiceLocator serviceLocator;
        private Logger logger = Logger.getLogger(DeleteOldOpportunitiesJob.class);
     
        public void setServiceLocator(ServiceLocator serviceLocator) {
            this.serviceLocator = serviceLocator;
        }
     
        protected void executeInternal(JobExecutionContext jobExecutionContext) throws JobExecutionException {
        	logger.info("DeleteOldOpportunitiesJob is going to delete old job opportunities");
        	try {
        		Date now = new Date();
    	        List<String> oldOpportunities = serviceLocator.getJobOpportunityService().deleteAllJobsBefore(now);
    	        logger.info(oldOpportunities.size() +  " has/have been deleted");
        	}
        	catch (Exception ex) {
        		logger.error("An error occured : " + ex.getMessage());
        	}
        }
    }

    - Au démarrage de l'application server, Quartz se lance effectivement bien.
    - Les beans sont repertoriés au démarrage de JBoss

    Malgré tout cela, le job ne se lance pas. J'espèrais qu'il allait se lancer toutes les minutes de 17h à 17h59 inclus mais rien du tout :-( Quelqu'un a-t-il une idée ?

    Merci à tous ceux qui ont tenté ou réussi à m'aider.

    Coyote

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    143
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 143
    Par défaut
    Le 3ème champs de CRON, c'est le jour... En fait ton CRON va s'exécuter le 17ème jour du mois, pas à 17 heures...
    Ce que tu veux c'est : "* 17 * * *"

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    68
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 68
    Par défaut
    http://quartz.sourceforge.net/javado...onTrigger.html

    Merci pour ta réponse mais visiblement ce n'est pas ce que dit la javadoc...

    Champs 1 = secondes
    Champs 2 = minutes
    Champs 3 = heures
    Champs 4 = jours
    Champs 5 = mois
    Champs 6 = année

    donc normalement il aurait dû s'executer toutes les minutes de 17h à 17h59. Qu'en penses-tu ?

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    143
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 143
    Par défaut
    J'en dit que Quartz ne suit pas la spec :
    http://www.opengroup.org/onlinepubs/...s/crontab.html

    Mais ça ne t'avance pas :-)

    Si j'ai bien compris, ton bean est bien créé, c'est juste Quartz qui ne le lance pas? Dans ce cas tu peux essayer avec d'autres valeur pour voir si ça marche? Normalement avec du 1 * * * * ça doit se lancer toutes les minutes, dans tous les cas.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    68
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 68
    Par défaut
    Oui en fait Quartz au démarrage de l'application server mais il ne lance pas mon job au moment voulu.

    J'avais déjà essayé "1 * * * * *" mais çà non plus çà n'a pas marché. C'est à n'y rien comprendre.

    Si j'emploi tes valeurs, j'obtiens une stacktrace que voici :

    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
     
    org.springframework.beans.MethodInvocationException: Property 'cronExpression' threw exception; nested exception is java.text.ParseException: Unexpected end of expression.
    Caused by: 
    java.text.ParseException: Unexpected end of expression.
    	at org.quartz.CronExpression.buildExpression(CronExpression.java:373)
    	at org.quartz.CronExpression.<init>(CronExpression.java:248)
    	at org.quartz.CronTrigger.setCronExpression(CronTrigger.java:436)
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    	at java.lang.reflect.Method.invoke(Method.java:597)
    	at org.springframework.beans.BeanWrapperImpl.setPropertyValue(BeanWrapperImpl.java:821)
    	at org.springframework.beans.BeanWrapperImpl.setPropertyValue(BeanWrapperImpl.java:645)
    	at org.springframework.beans.AbstractPropertyAccessor.setPropertyValues(AbstractPropertyAccessor.java:78)
    	at org.springframework.beans.AbstractPropertyAccessor.setPropertyValues(AbstractPropertyAccessor.java:59)
    As-tu une autre idée ?

  6. #6
    Membre chevronné Avatar de JoloKossovar
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    532
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 532
    Par défaut
    La bonne valeur de la cron expression doit etre "0 0-59 17 * * ?".
    Test avec ça et ça devrait fonctionner.

  7. #7
    Membre éprouvé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    143
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 143
    Par défaut
    D'après la doc de Quartz ta première config devrait marcher... Tu es sur serveur distant? Vérifie peut-être la date et le fuseau horaire?

Discussions similaires

  1. [Quartz] Est-il possible d'avoir un job qui se lance après un autre ?
    Par teddyalbina dans le forum API standards et tierces
    Réponses: 0
    Dernier message: 26/07/2011, 08h11
  2. mmc.exe qui ne se lance pas
    Par r0d dans le forum Autres Logiciels
    Réponses: 2
    Dernier message: 27/04/2005, 17h11
  3. [Kylix] Ne se lance pas sous Fedora core 3
    Par John@EuroDevz dans le forum EDI
    Réponses: 3
    Dernier message: 14/02/2005, 16h27
  4. Mysql ne se lance pas problème de socket
    Par Riko dans le forum Installation
    Réponses: 5
    Dernier message: 05/02/2004, 09h28
  5. Envoi d'un mail en VBA: outlook ne se lance pas
    Par Hannibal dans le forum VBA Access
    Réponses: 4
    Dernier message: 01/06/2003, 15h24

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