Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 5 sur 5

Discussion: Job Quartz dynamique

  1. #1
    Membre du Club
    Inscrit en
    septembre 2010
    Messages
    121
    Détails du profil
    Informations forums :
    Inscription : septembre 2010
    Messages : 121
    Points : 44
    Points
    44

    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 :
    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 :
    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 :
    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 :
    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 :
    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 Andry Aimé
    Inscrit en
    septembre 2007
    Messages
    7 102
    Détails du profil
    Informations personnelles :
    Nom : Homme Andry Aimé
    Localisation : Ile Maurice

    Informations forums :
    Inscription : septembre 2007
    Messages : 7 102
    Points : 12 018
    Points
    12 018

    Par défaut

    Bonjour,

    c'est "value-ref" mais pas "ref"
    Code xml :
    <entry key="businessManager"  value-ref="businessManager"/>

    A+.

  3. #3
    Membre du Club
    Inscrit en
    septembre 2010
    Messages
    121
    Détails du profil
    Informations forums :
    Inscription : septembre 2010
    Messages : 121
    Points : 44
    Points
    44

    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 Andry Aimé
    Inscrit en
    septembre 2007
    Messages
    7 102
    Détails du profil
    Informations personnelles :
    Nom : Homme Andry Aimé
    Localisation : Ile Maurice

    Informations forums :
    Inscription : septembre 2007
    Messages : 7 102
    Points : 12 018
    Points
    12 018

    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 du Club
    Inscrit en
    septembre 2010
    Messages
    121
    Détails du profil
    Informations forums :
    Inscription : septembre 2010
    Messages : 121
    Points : 44
    Points
    44

    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 :
    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 ?

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •