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 :

Configuration de Quartz/Spring


Sujet :

Spring Java

  1. #1
    Nouveau membre du Club
    Inscrit en
    Juillet 2003
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 55
    Points : 30
    Points
    30
    Par défaut Configuration de Quartz/Spring
    Bonjour ! tout le monde
    je suis entrain de configurer mon fichier ApplicationContext.xml pour utiliser le technologie de quartz avec spring, mais je ne comprend pas pourquoi la propriété cronExpression n'existe pas dans la classe org.springframework.scheduling.quartz.CronTriggerBean et pourtant j'utilise Spring 2.5.6

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
    
        <property name="jobDetail">
    
          <ref local="exampleJob" />
    
        </property>
    
        <!-- run every day at 6AM -->
    
        <property name="cronExpression" value="0 0 6 * * ?" />
    
    </bean>

  2. #2
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Bonjour,

    CronTriggerBean est une classe fille de CronTrigger et la méthode setCronExpression se trouve dans la classe mère CronTrigger. La classe CronTrigger n'est pas dans le jar de spring-2.5.6 mais dans le jar de quartz. Tu es sûr d'avoir ajouté le fichier jar de quartz? Quelle version?

    A+.

  3. #3
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    Citation Envoyé par didi Voir le message
    je ne comprend pas pourquoi la propriété cronExpression n'existe pas dans la classe org.springframework.scheduling.quartz.CronTriggerBean et pourtant j'utilise Spring 2.5.6
    Si, elle existe. Quel message d'erreur obtiens-tu qui te ferais penser que cette méthode n'existe pas?

  4. #4
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    Si, elle existe. Quel message d'erreur obtiens-tu qui te ferais penser que cette méthode n'existe pas?
    cronExpression n'est pas une propriété dans CronTriggerBean. Mais dans la classe mère CronTrigger (dans le jar de quartz mais pas dans spring), il y a une méthode setCronExpression pour instancier la propriété cronEx de type CronExpression. Je pense qu'il a oublié d'ajouter la librairie de quartz.
    Mais c'est vraie, sans le message d'erreur, difficile d'imaginer.

    A+.

  5. #5
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    avec l'héritage, si elle existe dans la classe mère, elle existe dans la classe fille, ça me semble évident

    Et si il a oublié le package de quartz, je crois qu'il a d'autres erreurs à gérer

  6. #6
    Nouveau membre du Club
    Inscrit en
    Juillet 2003
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 55
    Points : 30
    Points
    30
    Par défaut
    Citation Envoyé par andry.aime Voir le message
    Bonjour,

    CronTriggerBean est une classe fille de CronTrigger et la méthode setCronExpression se trouve dans la classe mère CronTrigger. La classe CronTrigger n'est pas dans le jar de spring-2.5.6 mais dans le jar de quartz. Tu es sûr d'avoir ajouté le fichier jar de quartz? Quelle version?

    A+.
    En fait je n'ai fait que suivre un tuto sur le net ; et d'après les tutos car j'en ai vu plusieurs ils utilisent tous la même config que j'ai posté. En regardant l'attribut class de l'élément bean qui a pour id "cronTrigger" la classe CronTriggerBean est bien issue du jar Spring compte tenu du package org.springframework.scheduling.quartz

  7. #7
    Nouveau membre du Club
    Inscrit en
    Juillet 2003
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 55
    Points : 30
    Points
    30
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    Si, elle existe. Quel message d'erreur obtiens-tu qui te ferais penser que cette méthode n'existe pas?
    Apparemeent ça n'existe pas car quand je tape
    <bean id="cronTrigger" class= "org...CronTriggerBean">
    <property name="cronExpression" value="qqch">
    </bean>

    l'éditeur le souligne en rouge ce qui signifie que ce n'est pas un attribut de la classe citée en haut

  8. #8
    Nouveau membre du Club
    Inscrit en
    Juillet 2003
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 55
    Points : 30
    Points
    30
    Par défaut
    Citation Envoyé par didi Voir le message
    Apparemeent ça n'existe pas car quand je tape
    <bean id="cronTrigger" class= "org...CronTriggerBean">
    <property name="cronExpression" value="qqch">
    </bean>

    l'éditeur le souligne en rouge ce qui signifie que ce n'est pas un attribut de la classe citée en haut
    l'erreur en fait c'est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    - No setter found for property 'cronExpression' in class 
    	 'org.springframework.scheduling.quartz.CronTriggerBean'

  9. #9
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    ne tiens pas compte de l'editeur, lance ton programme et donne nous l'erreur. Il peux y avoir des tas de raisons our laquelle l'éditeur souligne :/

    Le no setter found est le message que tu obtiens à l'exécution de ton application?

  10. #10
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    Aussi, es-tu sur d'utiliser la version de quartz qui correspond à ta version de spring? Parce que l'api de quartz a beacoup bougé avec le temps. Avec spring 2.5.6, tu devrais avoir quartz en version 1.6.0

  11. #11
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    avec l'héritage, si elle existe dans la classe mère, elle existe dans la classe fille, ça me semble évident
    Oui ça existe, mais c'est que la classe mère est peut-être absente, ainsi ça n'existe pas .
    Je suis sûr qu'il n'as pas ajouté la librairie de quartz dans son projet, ou il utilise la mauvaise version. Avec spring 2.5.6, la version de quartz 1.7 fonctionne aussi.
    Mais il nous raconte que ce message d'erreur mais ne nous a jamais dit s'il a ajouté quartz dans son projet et quelle version s'il y a.

    A+.

  12. #12
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    pour ça que je veux le message d'erreur à l'exécution. C'est plus parlant qu'un liseret rouge. Si il a oublié quartz, il aura droit à un NoClassDefFoundError. Si il a mis la mauvaise version de Quartz (2.1 par exemple), où CronTrigger est devenu une interface, il aura droit à un inconsistent class hierarchy

  13. #13
    Nouveau membre du Club
    Inscrit en
    Juillet 2003
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 55
    Points : 30
    Points
    30
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    pour ça que je veux le message d'erreur à l'exécution. C'est plus parlant qu'un liseret rouge. Si il a oublié quartz, il aura droit à un NoClassDefFoundError. Si il a mis la mauvaise version de Quartz (2.1 par exemple), où CronTrigger est devenu une interface, il aura droit à un inconsistent class hierarchy
    Bien sur j'ai intégré le jar Quartz version 2.2 mais je ne pense pas que Spring l'utilise pour gérer les tâches planifiées du coup sa présence dans le repertoir lib n'est pas trop indispensable.
    Mon probleme quand tu configures un fichier de context pour Spring toute balise
    <bean id="monBean" class="nomPackage.nomClasse">
    <property name="nompropriete" value="qqch"/>
    </bean>
    nomClasse doit normalement contenir la propriete "nompropriete" et c'est pas mon cas ! la classe "CronTriggerBean" ne contient pas la propriete "cronExpression" et d'apres les tutos que j'ai suivis ce probleme ne se pose pas ou bien c'est moi qui melange les pedales!

  14. #14
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    Si tu avais exécuté ton code, tu aurais vu que la version dequartz que tu utilise (2.2) n'est pas compatible avec la version de spring que tu utilise. Il te faut quartz en version 1.6

    CronTriggerBean est une "classe" spring qui hérite de la classe quartz "CronTrigger" qui, elle a la propriété. Sauf que depuis quartz 2.0, je pense, CronTrigger est devenu une interface. Et une classe ne peux pas hériter d'une interface => ca merde.

  15. #15
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Merci pour cet info tchize_ mais je ne savais pas que CronTrigger est devenue un interface dans les versions récentes de quartz.

  16. #16
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    quartz a changé à une époque les 3/4 de son api

  17. #17
    Nouveau membre du Club
    Inscrit en
    Juillet 2003
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 55
    Points : 30
    Points
    30
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    Si tu avais exécuté ton code, tu aurais vu que la version dequartz que tu utilise (2.2) n'est pas compatible avec la version de spring que tu utilise. Il te faut quartz en version 1.6

    CronTriggerBean est une "classe" spring qui hérite de la classe quartz "CronTrigger" qui, elle a la propriété. Sauf que depuis quartz 2.0, je pense, CronTrigger est devenu une interface. Et une classe ne peux pas hériter d'une interface => ca merde.
    Merci pour vos réponses à tous les 2. Je vais intégrer une version 1.6 de Quartz pour voir qu'est que ça va donner

  18. #18
    Nouveau membre du Club
    Inscrit en
    Juillet 2003
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 55
    Points : 30
    Points
    30
    Par défaut
    Merci les gars !
    j'ai enfin ma propriété cronExpression. Mais j'ai un autre soucis au niveau de ma tâche planifiée, si dans ma méthode à exécuter je mets un simple code d'affichage d'un string avec System.out.println("qqch") ; ça s'affiche toutes les 5 secondes prévues , mais dès que je mets un code qui doit aller puiser dans une BD et m'afficher le résultat de la requête plus rien ne se passe !

    Voici ma config

    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
    <!-- ======= CONFIGURATION DES TACHES PLANIFIEES ======= -->
     
    <bean id="exportFournBean" class="ipm.task.ExportFournTask"/>
     
    <bean id="tacheExportFourn" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
    	<property name="targetObject" ref="exportFournBean"/>
    	<property name="targetMethod" value="execExportFRN"/>
    </bean>
     
    <bean id="triggerTacheExportFourn" class="org.springframework.scheduling.quartz.CronTriggerBean">
    	<property name="jobDetail" ref="tacheExportFourn"/>	
    	<property name="cronExpression" value="0/5 * * * * ?"/>
    </bean>
     
    <bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
    	<property name="triggers">
    		<list>
    			<ref bean="triggerTacheExportFourn"/>
    		</list>
    	</property>
    </bean>

  19. #19
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    As-tu bien vérifier que tu n'as pas de message d'erreur dans ton log? On peut voir ton code java et les autres fichiers de configuration?

  20. #20
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    Quartz a tendance, par défaut, à bouffer les exceptions qui lui remontent sans rien te dire et à tenter de relancer le job.

    Tu dois traiter correctement les exceptions dans ton job et afficher les message d'erreur.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [Data] Configuration JTA/JPA/Spring dans Glassfish
    Par kirin dans le forum Spring
    Réponses: 1
    Dernier message: 29/04/2010, 12h28
  2. [Batch] Quartz - Spring
    Par cheachwood dans le forum Spring
    Réponses: 3
    Dernier message: 23/06/2009, 16h16
  3. configurer hibernate sous Spring web services
    Par MyPaiN dans le forum Hibernate
    Réponses: 2
    Dernier message: 25/05/2009, 11h22
  4. [Batch] Aide à propos de Quartz Spring
    Par midoENSI dans le forum Spring
    Réponses: 2
    Dernier message: 26/10/2007, 09h09
  5. [Hibernate | Spring ] Configuration de fichier Spring
    Par DanZzz dans le forum Hibernate
    Réponses: 1
    Dernier message: 18/06/2006, 18h58

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