Précédent   Forum du club des développeurs et IT Pro > Java > Serveurs, conteneurs, et Java EE > Autres
Autres Vos questions sur les autres serveurs d'application Java.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 06/08/2012, 11h48   #1
Malatok
Nouveau Membre du Club
 
Inscription : septembre 2010
Messages : 109
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 109
Points : 34
Points : 34
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.
Malatok est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/08/2012, 13h18   #2
andry.aime
Rédacteur/Modérateur
 
Avatar de andry.aime
 
Homme Andry Aimé
Inscription : septembre 2007
Messages : 6 335
Détails du profil
Informations personnelles :
Nom : Homme Andry Aimé
Localisation : Ile Maurice

Informations forums :
Inscription : septembre 2007
Messages : 6 335
Points : 9 924
Points : 9 924
Bonjour,

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

A+.
andry.aime est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/08/2012, 15h07   #3
Malatok
Nouveau Membre du Club
 
Inscription : septembre 2010
Messages : 109
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 109
Points : 34
Points : 34
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 ?
Malatok est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/08/2012, 15h28   #4
andry.aime
Rédacteur/Modérateur
 
Avatar de andry.aime
 
Homme Andry Aimé
Inscription : septembre 2007
Messages : 6 335
Détails du profil
Informations personnelles :
Nom : Homme Andry Aimé
Localisation : Ile Maurice

Informations forums :
Inscription : septembre 2007
Messages : 6 335
Points : 9 924
Points : 9 924
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.
Citation:
<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+.
andry.aime est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/08/2012, 15h38   #5
Malatok
Nouveau Membre du Club
 
Inscription : septembre 2010
Messages : 109
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 109
Points : 34
Points : 34
Citation:
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
		}
	}
Citation:
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 ?
Malatok est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 10h04.


 
 
 
 
Partenaires

Hébergement Web