I’m using Quartz 2.1.6 with Weblogic 12 in clustered mode (actually only 1 dev machine) and using standard the JDBC delegate (org.quartz.impl.jdbcjobstore.StdJDBCDelegate)
I may have multiple triggers per request. The trigger is associated to a durable job, and I’m deleting all triggers associated with a single request with the below code:
Scheduler sched;
try {
sched = new StdSchedulerFactory().getScheduler("MyScheduler");
Set<TriggerKey> triggerKeys = sched.getTriggerKeys(triggerGroupEquals(String.valueOf(requestId)));
for (TriggerKey k : triggerKeys) {
if (sched.unscheduleJob(k)) {
logger.info("Removed trigger " + k.toString() + " for request " + requestId);
}
}
} catch (SchedulerException e) {
logger.error(e);
}
In the log I see the message “Removed trigger 123 for request abc” but the trigger still is there in the database and still fires the job. I have no exception trace in the console. I’m using XA datasource but the called EJB business method is annotated as supporting transaction. I see no rollback. Sporadically the trigger is deleted but not instantly.
What am I missing?
What JDBC delegate should I declare in quartz.properties if I’m using Weblogic 12 with an Oracle 11 DBMS?
If I were you I would check the following:
– Make sure the DB connection is “Auto-Commit”, unless so your operation will not be persisted.