Bonjour,

J'essais d'utiliser quartz afin de pouvoir programmer depuis une application web des tâches planifiées.

D'après la doc, il existe 2 modes de chargement, soit en chargeant les job en mémoire (RAMJobStore) ou par JDBC.

Si je charge en mémorie mes jobs, je n'ai aucun problème.

Par contre, dès que je passe par du JDBC, les tâches ne se chargent plus.

Ma base de données est pourtant bien connecté, car j'arrive à créer une tâche, mais impossible de la charger.

Ma base de données est du mysql

Voici mon code pour créer une tâche ( et l'exécuter de suite) :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
Scheduler sd = StdSchedulerFactory.getDefaultScheduler();
 
         sd.start();
 
         JobDetail job = newJob(AlarmJob.class).withIdentity("myJob","group1").storeDurably(true).build();
 
         Trigger trigger = newTrigger().withIdentity("mytrigger", "group1").withPriority(1).startNow().withSchedule(simpleSchedule().withIntervalInSeconds(5).repeatForever()).build();
 
         sd.scheduleJob(job, trigger);
 
         System.out.println(sd.getSchedulerName());
Voici mon code pour charge rmes tâches enregistré en BDD :

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
  SchedulerFactory schdFact = new StdSchedulerFactory("quartz.properties");
           Scheduler sd = schdFact.getScheduler();
 
        	triggerGrps = sd.getTriggerGroupNames();
 
        	jobGrps = sd.getJobGroupNames();
 
        	for(String jobG : jobGrps)
        	{
        		GroupMatcher<JobKey> gp = GroupMatcher.jobGroupEquals(jobG);
        		Set<JobKey> keys = sd.getJobKeys(gp);
 
        		for(JobKey key : keys)
        		{
        			List<? extends Trigger> trig = sd.getTriggersOfJob(key);
 
        			for (Trigger trigger : trig) {
 
        				sd.rescheduleJob(trigger.getKey(), trigger);
 
					}
        		}
        	}
Voici mon fichier quartz.properties :

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
 
org.quartz.scheduler.instanceName = TestScheduler
org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool
org.quartz.threadPool.threadCount = 4
org.quartz.threadPool.threadsInheritContextClassLoaderOfInitializingThread = true
 
#specify the jobstore used
org.quartz.jobStore.class = org.quartz.impl.jdbcjobstore.JobStoreTX
org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.StdJDBCDelegate
org.quartz.jobStore.useProperties = false
 
#The datasource for the jobstore that is to be used
org.quartz.jobStore.dataSource = myDS
 
#quartz table prefixes in the database
org.quartz.jobStore.tablePrefix = artz_
org.quartz.jobStore.misfireThreshold = 60000
org.quartz.jobStore.isClustered = false
 
#The details of the datasource specified previously
org.quartz.dataSource.myDS.driver = com.mysql.jdbc.Driver
org.quartz.dataSource.myDS.URL = jdbc:mysql://127.0.0.1:3306/quartz2
org.quartz.dataSource.myDS.user = root
org.quartz.dataSource.myDS.password = password
org.quartz.dataSource.myDS.maxConnections = 20


Auriez vous une idée ?

merci