- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我尝试使用来自 Grails 的最新 quartz 插件:quartz:1.0.1。
如果我保留 jdbcStore = false,它会工作,如果我设置为 true,它会失败。QuartzConfig.groovy:
quartz {
autoStartup = true
jdbcStore = true
waitForJobsToCompleteOnShutdown = true
exposeSchedulerInRepository = false
props {
scheduler.skipUpdateCheck = true
}
}
这是属性文件:
org.quartz.scheduler.instanceName reporting_test
org.quartz.scheduler.instanceId AUTO
org.quartz.threadPool.class org.quartz.simpl.SimpleThreadPool
org.quartz.threadPool.threadCount 5
org.quartz.threadPool.threadPriority 5
org.quartz.jobStore.misfireThreshold 60000
org.quartz.jobStore.class org.quartz.impl.jdbcjobstore.JobStoreTX
org.quartz.jobStore.driverDelegateClass org.quartz.impl.jdbcjobstore.StdJDBCDelegate
org.quartz.jobStore.useProperties false
org.quartz.jobStore.tablePrefix QRTZ_
org.quartz.jobStore.isClustered true
org.quartz.jobStore.clusterCheckinInterval 5000
org.quartz.plugin.shutdownhook.class org.quartz.plugins.management.ShutdownHookPlugin
org.quartz.plugin.shutdownhook.cleanShutdown true
我一直在尝试使用 Datasource 设置进行试验,因为我更愿意使用在 Datasource.groovy 中设置的默认 DS。无论数据源的设置如何,我在启动时仍然会收到以下错误消息。
2013-12-18 13:43:14,693 [localhost-startStop-1] ERROR context.GrailsContextLoader - Error initializing the application: org.quartz.impl.jdbcjobstore.LockException: Failure obtaining db row lock: Line 1: FOR UPDATE clause allowed only for DECLARE CURSOR. [See nested exception: com.microsoft.sqlserver.jdbc.SQLServerException: Line 1: FOR UPDATE clause allowed only for DECLARE CURSOR.]
org.codehaus.groovy.runtime.InvokerInvocationException: org.quartz.impl.jdbcjobstore.LockException: Failure obtaining db row lock: Line 1: FOR UPDATE clause allowed only for DECLARE CURSOR. [See nested exception: com.microsoft.sqlserver.jdbc.SQLServerException: Line 1: FOR UPDATE clause allowed only for DECLARE CURSOR.]
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:744)
Caused by: org.quartz.impl.jdbcjobstore.LockException: Failure obtaining db row lock: Line 1: FOR UPDATE clause allowed only for DECLARE CURSOR. [See nested exception: com.microsoft.sqlserver.jdbc.SQLServerException: Line 1: FOR UPDATE clause allowed only for DECLARE CURSOR.]
at org.quartz.impl.jdbcjobstore.StdRowLockSemaphore.executeSQL(StdRowLockSemaphore.java:157)
at org.quartz.impl.jdbcjobstore.DBSemaphore.obtainLock(DBSemaphore.java:113)
at org.quartz.impl.jdbcjobstore.JobStoreCMT.executeInLock(JobStoreCMT.java:238)
at org.quartz.impl.jdbcjobstore.JobStoreSupport.storeJob(JobStoreSupport.java:1086)
at org.quartz.core.QuartzScheduler.addJob(QuartzScheduler.java:969)
at org.quartz.core.QuartzScheduler.addJob(QuartzScheduler.java:958)
at org.quartz.impl.StdScheduler.addJob(StdScheduler.java:268)
at QuartzGrailsPlugin.scheduleJob(QuartzGrailsPlugin.groovy:268)
at QuartzGrailsPlugin$_closure5_closure23.doCall(QuartzGrailsPlugin.groovy:248)
at QuartzGrailsPlugin$_closure5.doCall(QuartzGrailsPlugin.groovy:247)
... 4 more
Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: Line 1: FOR UPDATE clause allowed only for DECLARE CURSOR.
at org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:96)
at org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:96)
at org.quartz.impl.jdbcjobstore.StdRowLockSemaphore.executeSQL(StdRowLockSemaphore.java:96)
... 13 more
这些表存在于我的数据库中。我实际上是将它们与用于 grails 的 quartz2 插件一起使用,但是出于各种原因决定试用这个插件。
关于我设置不正确的任何想法?
最佳答案
找到答案了。
正在运行一个查询来锁定行,在这种情况下失败时是:
SELECT * FROM QRTZ_LOCKS WHERE SCHED_NAME = 'reporting_test' AND LOCK_NAME = 'STATE_ACCESS' FOR UPDATE
FOR UPDATE 不适用于 MSSQL 数据库。我发现我使用了错误的委托(delegate)。我将我的属性(property)改为:
org.quartz.jobStore.driverDelegateClass org.quartz.impl.jdbcjobstore.MSSQLDelegate
这有效,希望这对其他人有帮助。
关于jdbcStore 的 Grails Quartz 插件错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20667385/
我尝试使用来自 Grails 的最新 quartz 插件:quartz:1.0.1。 如果我保留 jdbcStore = false,它会工作,如果我设置为 true,它会失败。QuartzConfi
我使用 jdbcstore 实现 Quartz Scheduler。我遇到了异常,例如 qrtz_TRIGGERS 不可用。 2013-05-03 07:58:38,211 - - DEBUG, [
已配置的 Quartz 作业, public static void schedule(IEntity entity, Date startdate) { try { JobD
我正在尝试使用带有 jdbcTokenStore 的 JWT 通过 OAuth2 实现 Spring Security: @Bean public TokenStore tokenSt
我正在使用 JDBCStore 在 MySQL 中存储 session 。它工作正常,但默认配置选项似乎不支持数据库池(可通过 JDBC JNDI 资源获得)。 是否可以为 JDBC 持久性管理器使用
我正在尝试将用户 session 数据存储在数据库中。我已经关注了一些关于如何执行此操作的文章和 Tomcat 文档。 我现在正在使用 Tomcat7 和 PostgreSQL,并且可以确认 INSE
所以,我有一个有效的 Tomcat JDBC session 存储解决方案已经有一段时间了。我部署了我认为不相关的更改(并且我回滚到之前的 war 并且新问题仍然存在)。 问题 我可以重现这样的问题
我是一名优秀的程序员,十分优秀!