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

API standards et tierces Java Discussion :

Job Quartz dynamique


Sujet :

API standards et tierces Java

  1. #1
    Membre régulier
    Inscrit en
    Septembre 2010
    Messages
    121
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 121
    Points : 74
    Points
    74
    Par défaut Job Quartz dynamique
    Bonjour messieurs,

    Je suis actuellement sur un projet Web en Struts 2 avec Spring version 2.5.6, quartz en version 1.6.3 . J'essai de faire un job quartz de façon dynamique, afin de configurer la cron de mon job en fonction de certains paramétre coté ihm.
    Mais sa n'a pas l'air de marché j'ai suivi un tuto :
    http://blog.xebia.fr/2009/02/12/quar...ng-scheduling/ mais sa na pas l'air de marché il ne parle pas de sont DumbManager et eclipse ne trouve pas la classe ...

    au démarrage du serveur des erreur Spring sur le fichier applicationContext.
    Si quelqu'un à un autre tuto a me conseillé pour faire des cron dynamique avec spring je suis prenneur.


    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
    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
    	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
     
    	<bean id="businessManager" class="org.springframework.scheduling.quartz.JobDetailBean">
    		<property name="jobClass"
    			value="com.project.utils.MonJobBean" />
    		<property name="jobDataAsMap">
    			<map>
    				<entry key="businessManager"  ref="businessManager"/>
    			</map>
    		</property>
    	</bean>
     
     
    	<bean id="quartzScheduler"
    		class="org.springframework.scheduling.quartz.SchedulerFactoryBean"
    		lazy-init="false">
    	</bean>
     
    	<bean id="schedulerService" class="com.project.utils.SchedulerService">
    		<property name="scheduler" ref="quartzScheduler" />
    	</bean>
     
    </beans>
    Mon jobBean :

    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
     
     
    public class MonJobBean extends QuartzJobBean {
     
    	private BusinessManager businessManager;
    	private String message;
     
    	@Override
    	protected void executeInternal(JobExecutionContext arg0) throws JobExecutionException {
    		System.out.println("execution du job: " + message);
     
    	}
     
    	public void setMessage(String message) {
    		this.message = message;
    	}
     
    	public BusinessManager getBusinessManager() {
    		return businessManager;
    	}
     
    	public void setBusinessManager(BusinessManager businessManager) {
    		this.businessManager = businessManager;
    	}
    Mon SchedulerService :

    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
     
    import org.quartz.CronTrigger;
    import org.quartz.JobDetail;
    import org.quartz.Scheduler;
     
    public class SchedulerService {
     
    	private Scheduler scheduler;
    	//private jobDetail myjob;
    	private JobDetail myJob;
     
    	public void addMyjobExecution() {
    		CronTrigger crontrig = new CronTrigger();
    		try {
    			crontrig.setCronExpression("0 0 0 * 2-3 ?");
    			crontrig.setJobName(myJob.getName());
    			crontrig.getJobDataMap().put("message", "CronTrigger");
    			scheduler.scheduleJob(crontrig);
    		} catch (Exception e) {
    			// TODO: handle exception
    		}
    	}
     
    	public Scheduler getScheduler() {
    		return scheduler;
    	}
     
    	public void setScheduler(Scheduler scheduler) {
    		this.scheduler = scheduler;
    	}
     
    	public JobDetail getMyJob() {
    		return myJob;
    	}
     
    	public void setMyJob(JobDetail myJob) {
    		this.myJob = myJob;
    	}
    Erreur au démarrage du serveur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
    org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException: Line 15 in XML document from ServletContext resource [/WEB-INF/applicationContext.xml] is invalid; nested exception is org.xml.sa
    x.SAXParseException: cvc-complex-type.3.2.2: Attribute 'ref' is not allowed to appear in element 'entry'.
            at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:404)
            at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:342)
            at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:310)
            at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:143)
            at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:178)
            at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:149)
    Visiblement il aime pas mon attribut, mais dans le tuto c'est un peu fait comme ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    		<map>
    		<entry key="businessManager"  ref="businessManager"/>
    		</map>

    Voila, si quelqu'un a une idée de la configuration que je dois avoir afin de pouvoir avoir des jobs dynamique qu'il me le dise ou si il a un tuto je suis preneur.

  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,

    c'est "value-ref" mais pas "ref"
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    <entry key="businessManager"  value-ref="businessManager"/>

    A+.

  3. #3
    Membre régulier
    Inscrit en
    Septembre 2010
    Messages
    121
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 121
    Points : 74
    Points
    74
    Par défaut
    Je vois pas trop a quoi correspond l'attribut :
    <property name="jobDataAsMap">
    <map>
    <entry key="businessManager" ref="businessManager"/>
    </map>
    </property>

    Ca va se déclenché quand ? Par exemple si je veux déclenché sa dans une action Struts 2 je fais comment pour que la cron soit exécute ?

  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
    Hum, en relisant ton code, tu as oublié plusieurs chose:
    1- De créer les trigger pour spécifier les dates et heures de lancement.
    2- De lancer les job dans le SchedulerFactoryBean.
    <entry key="businessManager" value-ref="businessManager"/>
    Le key correspond au nom d'un propriété dans le class java et le value-ref fait référence au bean ayant l'id qui sera instancié pour la propriété.

    A+.

  5. #5
    Membre régulier
    Inscrit en
    Septembre 2010
    Messages
    121
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 121
    Points : 74
    Points
    74
    Par défaut
    1- De créer les trigger pour spécifier les dates et heures de lancement.
    Faux je créer bien un cron trigger juste ici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    public void addMyjobExecution() {
    		CronTrigger crontrig = new CronTrigger();
    		try {
    			crontrig.setCronExpression("0 0 0 * 2-3 ?");
    			crontrig.setJobName(myJob.getName());
    			crontrig.getJobDataMap().put("message", "CronTrigger");
    			scheduler.scheduleJob(crontrig);
    		} catch (Exception e) {
    			// TODO: handle exception
    		}
    	}
    2- De lancer les job dans le SchedulerFactoryBean.
    Je le lance ou et dans quoi personne na un exemlpe que je comprenne ou alors un tuto ou de la doc ?

Discussions similaires

  1. Réponses: 0
    Dernier message: 13/01/2015, 19h37
  2. Réponses: 2
    Dernier message: 03/09/2014, 12h42
  3. Executer job Talend dynamiquement
    Par xamuo dans le forum Développement de jobs
    Réponses: 1
    Dernier message: 05/12/2011, 11h22
  4. [Batch] Instancier un service dans un job Quartz
    Par Thewil dans le forum Spring
    Réponses: 3
    Dernier message: 17/12/2009, 18h14
  5. [Batch] Spring Job (quartz)
    Par MASSAKA dans le forum Spring
    Réponses: 2
    Dernier message: 11/12/2009, 10h34

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