2013-01-31 64 views
0

我使用石英2.1.6使用Weblogic 12在集群模式(实际上仅1 dev的机器),并使用标准的JDBC代理不删除(org.quartz.impl.jdbcjobstore.StdJDBCDelegate触发在石英2.16

我可以具有每请求多个触发器。触发关联到一个持久的工作,我删除与下面的代码的单个请求相关联的所有触发器:

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

在日志中我看到消息“删除触发123请求ABC”,但触发器仍然存在于数据库中并仍然触发该作业。我在控制台中没有异常跟踪。我使用XA数据源,但被调用的EJB业务方法被注释为支持事务。我看不到回滚。零星地触发器被删除,但不是立即。

我错过了什么?

如果我在使用Oracle 11 DBMS使用Weblogic 12时,应该在quartz.properties中声明什么JDBC委托?

回答

0

如果我是你,我会检查以下内容: - 确保数据库连接是“自动提交”,除非您的操作不会持久。

  • 您可能有交易问题,请检查txn日志。
+0

其实,在描述中称,EJB业务方法,指出: @TransactionAttribute(TransactionAttributeType.SUPPORTS) 它应该而状态: @TransactionAttribute(TransactionAttributeType.REQUIRED) 正确的事务声明解决了这个问题。 谢谢 – yakup

+0

任何时候:)我很高兴它有助于解决您的问题,我也遇到了Quartz的一些问题......干杯,Uri – Uri