2013-01-31 60 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