Плагин Grails Quartz для удаления триггеров при запуске с включенным постоянством - PullRequest
2 голосов
/ 19 мая 2011

Я столкнулся со следующей проблемой: у меня есть приложение grails, с кварцевым плагином и постоянным хранилищем (Oracle).В моем классе заданий есть пустой блок триггеров, например:

class VodServerJob {
    static triggers = {}
    def volatility = false;
    def durability = true;
    def concurrency = false;
    def group = "MyGroup"
    def execute(context) { }
}

... но я программно добавляю триггеры по мере продвижения (позволяя пользователю запускать расписание для заданий).Когда я закрываю приложение, триггеры все еще находятся в базе данных.Но при запуске триггеры удаляются, разрушая точку постоянного хранения.

Моя конфигурация выглядит следующим образом:

quartz {
    autoStartup = true
    jdbcStore = true
    waitForJobsToCompleteOnShutdown = true
}

environments {
    test { quartz { autoStartup = false } }
}

и мои свойства следующие:

#============================================================================
# Configure ThreadPool  
#============================================================================

org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool
org.quartz.threadPool.threadCount = 25
org.quartz.threadPool.threadPriority = 5

#============================================================================
# Configure JobStore  
#============================================================================

org.quartz.jobStore.class = org.quartz.impl.jdbcjobstore.JobStoreTX
org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.oracle.OracleDelegate
org.quartz.jobStore.useProperties = false
org.quartz.jobStore.dataSource = myDS
org.quartz.jobStore.tablePrefix = QRTZ_

#============================================================================
# Configure Datasources  
#============================================================================

org.quartz.dataSource.myDS.driver = oracle.jdbc.driver.OracleDriver
org.quartz.dataSource.myDS.URL = jdbc:oracle:thin:@172.27.5.18:1521:dcrm
org.quartz.dataSource.myDS.user = <hidden, but valid>
org.quartz.dataSource.myDS.password = <hidden, but valid>
org.quartz.dataSource.myDS.maxConnections = 5
org.quartz.dataSource.myDS.validationQuery=select 0 from dual

В соответствии со всем, что я вижу, это должно учитывать сохранение БДи все же он удаляется при запуске.У кого-нибудь есть идеи, почему?

1 Ответ

3 голосов
/ 19 мая 2011

Нашел ответ по этому вопросу.Триггеры по умолчанию установлены на volatile, что означает, что они удаляются при запуске.Просто установите volatility триггера на false, как показано ниже, чтобы ваши триггеры сохранялись на неопределенное время.

trigger.setVolatility(false);

В противном случае они будут уничтожены.

...