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) :
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 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 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 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); } } }
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
Partager