这几天搞quartz头都弄大了,求高手给我解答;
下面是我的简单job实现类
package com.quartz.sping;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
public class JobTest implements Job{
public void execute(JobExecutionContext arg0) throws JobExecutionException {
// TODO Auto-generated method stub
System.out.println("运行名称"+arg0.getJobDetail().getJobClass().getName());
}
}
//下面开始简单scheduler
package com.quartz.sping;
import java.util.Date;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.SimpleTrigger;
import org.quartz.Trigger;
import org.quartz.impl.StdSchedulerFactory;
public class ScheduleServiceImpl {
public static void main(String args[]) throws SchedulerException{
Scheduler scheduler=StdSchedulerFactory.getDefaultScheduler();
JobDetail jobDetail=new JobDetail("JobTest",Scheduler.DEFAULT_GROUP,JobTest.class);
Trigger trigger =
new SimpleTrigger("myTrigger",
Scheduler.DEFAULT_GROUP, new Date(), null,
SimpleTrigger.REPEAT_INDEFINITELY,
60000L);
scheduler.scheduleJob(jobDetail, trigger);
scheduler.start();
}
}
我的quartz.properties是这样配的:
# Default Properties file for use by StdSchedulerFactory
# to create a Quartz Scheduler Instance, if a different
# properties file is not explicitly specified.
#
org.quartz.scheduler.instanceName = TestScheduler1
org.quartz.scheduler.instanceId = instance_one
#==============================================================
#Configure ThreadPool
#==============================================================
org.quartz.threadPool.class= org.quartz.simpl.SimpleThreadPool
org.quartz.threadPool.threadCount = 5
org.quartz.threadPool.threadPriority = 5
#==============================================================
#Configure JobStore
#==============================================================
org.quartz.jobStore.misfireThreshold = 60000
org.quartz.jobStore.class = org.quartz.impl.jdbcjobstore.JobStoreTX
org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.oracle.OracleDelegate
org.quartz.jobStore.tablePrefix = qrtz_
org.quartz.jobStore.dataSource = myDS
org.quartz.jobStore.isClustered =false
org.quartz.jobStore.clusterCheckinInterval = 20000
#==============================================================
#Non-Managed Configure Datasource
#==============================================================
org.quartz.dataSource.myDS.driver = oracle.jdbc.driver.OracleDriver
org.quartz.dataSource.myDS.URL = jdbc:oracle:thin:@196.128.1.158:1521:tasktest
org.quartz.dataSource.myDS.user = cjw
org.quartz.dataSource.myDS.password = 116118
org.quartz.dataSource.myDS.maxConnections = 10
简单运行后出现、、、、、、、
2011-11-09 14:47:28,468 [main] INFO org.quartz.core.QuartzScheduler - Quartz Scheduler v.1.5.2 created.
2011-11-09 14:47:28,468 [main] INFO org.quartz.impl.jdbcjobstore.JobStoreTX - Using thread monitor-based data access locking (synchronization).
Exception in thread "main" org.quartz.SchedulerConfigException: Failure occured during job recovery. [See nested exception: org.quartz.JobPersistenceException: Couldn't clean volatile data: ORA-00904: "IS_VOLATILE": 标识符无效
[See nested exception: java.sql.SQLException: ORA-00904: "IS_VOLATILE": 标识符无效
]]
at org.quartz.impl.jdbcjobstore.JobStoreSupport.initialize(JobStoreSupport.java:493)
at org.quartz.impl.jdbcjobstore.JobStoreTX.initialize(JobStoreTX.java:68)
at org.quartz.impl.StdSchedulerFactory.instantiate(StdSchedulerFactory.java:1010)
at org.quartz.impl.StdSchedulerFactory.getScheduler(StdSchedulerFactory.java:1152)
at org.quartz.impl.StdSchedulerFactory.getDefaultScheduler(StdSchedulerFactory.java:1168)
at com.quartz.sping.ScheduleServiceImpl.main(ScheduleServiceImpl.java:13)
* Nested Exception (Underlying Cause) ---------------
org
.quartz.JobPersistenceException: Couldn't clean volatile data: ORA-00904: "IS_VOLATILE": 标识符无效 [See nested exception: java.sql.SQLException: ORA-00904: "IS_VOLATILE": 标识符无效
]
at org.quartz.impl.jdbcjobstore.JobStoreSupport.cleanVolatileTriggerAndJobs(JobStoreSupport.java:642)
at org.quartz.impl.jdbcjobstore.JobStoreTX.cleanVolatileTriggerAndJobs(JobStoreTX.java:116)
at org.quartz.impl.jdbcjobstore.JobStoreSupport.initialize(JobStoreSupport.java:491)
at org.quartz.impl.jdbcjobstore.JobStoreTX.initialize(JobStoreTX.java:68)
at org.quartz.impl.StdSchedulerFactory.instantiate(StdSchedulerFactory.java:1010)
at org.quartz.impl.StdSchedulerFactory.getScheduler(StdSchedulerFactory.java:1152)
at org.quartz.impl.StdSchedulerFactory.getDefaultScheduler(StdSchedulerFactory.java:1168)
at com.quartz.sping.ScheduleServiceImpl.main(ScheduleServiceImpl.java:13)
* Nested Exception (Underlying Cause) ---------------
java.sql.SQLException: ORA-00904: "IS_VOLATILE": 标识符无效
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:331)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:288)
at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:745)
at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:216)
at oracle.jdbc.driver.T4CPreparedStatement.executeForDescribe(T4CPreparedStatement.java:810)
at oracle.jdbc.driver.OracleStatement.executeMaybeDescribe(OracleStatement.java:1039)
at oracle.jdbc.driver.T4CPreparedStatement.executeMaybeDescribe(T4CPreparedStatement.java:850)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1134)
at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3339)
at oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:3384)
at org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:92)
at org.quartz.impl.jdbcjobstore.StdJDBCDelegate.selectVolatileTriggers(StdJDBCDelegate.java:3887)
at org.quartz.impl.jdbcjobstore.JobStoreSupport.cleanVolatileTriggerAndJobs(JobStoreSupport.java:620)
at org.quartz.impl.jdbcjobstore.JobStoreTX.cleanVolatileTriggerAndJobs(JobStoreTX.java:116)
at org.quartz.impl.jdbcjobstore.JobStoreSupport.initialize(JobStoreSupport.java:491)
at org.quartz.impl.jdbcjobstore.JobStoreTX.initialize(JobStoreTX.java:68)
at org.quartz.impl.StdSchedulerFactory.instantiate(StdSchedulerFactory.java:1010)
at org.quartz.impl.StdSchedulerFactory.getScheduler(StdSchedulerFactory.java:1152)
at org.quartz.impl.StdSchedulerFactory.getDefaultScheduler(StdSchedulerFactory.java:1168)
at com.quartz.sping.ScheduleServiceImpl.main(ScheduleServiceImpl.java:13)
[size=medium]最终我发现了原因。是因为我的quartz版本是1.5.2的而我用的quartz-oracle版本是2.1.0.数据库也是根据2.1.0下doc/dabtables/tables_oracle.sql下写的。难怪会报这样的错[/size]
分享到:
相关推荐
在Quartz中,任务和调度信息存储在数据库中,因此理解如何为不同类型的数据库创建相应的表是至关重要的。以下是对"quartz各种数据库的建表语句"的详细解析。 Quartz-2.2.3版本提供了对多种数据库的支持,包括MySQL...
Quartz是一个功能丰富的开源作业调度库,几乎可以集成在任何Java应用程序中 - 从最小的独立应用程序到最大的电子商务系统。Quartz可用于创建简单或复杂的计划,以执行数十,数百甚至数万个作业; 将任务定义为标准...
Quartz能够与数据库紧密结合,将任务和触发器的信息存储在数据库中,这样就可以动态地管理和修改任务,而无需重启服务。这为我们的应用程序提供了极大的灵活性,可以在运行时添加、更新或删除任务。 要使用Spring ...
在描述中提到的"数据库表格脚本"是指为了在数据库中初始化Quartz所需的表结构而准备的SQL脚本。 这些脚本包括了针对不同数据库系统的版本,以适应多种数据库环境。以下是各个文件的用途: 1. **tables_sqlServer....
在部署Quartz时,根据选用的数据库(如MySQL、Oracle、SQL Server等),需要将"quartz-数据库建表语句.zip"中的相应SQL脚本运行在数据库上,以创建这些必要的表。这一步是Quartz配置中的关键部分,确保Quartz能够...
下面将详细介绍如何将这三个组件与Quartz整合,并将定时任务的配置和状态持久化到数据库,实现动态的增删改查功能。 1. **Spring配置** 在Spring的配置文件中,我们需要引入Quartz的相关依赖。首先,定义一个`...
本篇将详细介绍Quartz如何实现数据库持久化,并提供各类型数据库的SQL创建语句。 Quartz的持久化机制依赖于一组特定的数据库表,这些表存储了Job(任务)和Trigger(触发器)的信息。以下是Quartz默认使用的数据库...
标题中的“quartz数据库脚本”指的是Quartz为了适配多种数据库管理系统(DBMS)而提供的SQL脚本。这些脚本包含了创建和初始化Quartz所需表的命令,确保作业、触发器、作业细节等信息能够被正确存储和检索。 描述中...
"quartz集群各种数据库建表脚本" 提供了在不同类型的数据库中创建Quartz集群所需的表结构。基于quartz2.2.1版本,这个脚本应该包含了创建必要的调度表,如QRTZ_JOB_DETAILS、QRTZ_TRIGGERS、QRTZ_SIMPLE_TRIGGERS等...
这就是“Quartz数据库动态配置”所解决的问题。 Quartz通过将作业(Jobs)和触发器(Triggers)的信息存储在数据库中,实现了配置的动态化。这样,我们可以在不重启应用的情况下,通过修改数据库中的表来添加、删除...
在“quartz实例sqlserver数据库连接”这个主题中,我们主要讨论如何配置Quartz与SQL Server数据库进行交互,以存储和管理调度信息。 首先,Quartz需要一个持久化存储来保存作业(Jobs)和触发器(Triggers)的信息...
在"quartz动态从数据库获取时间定时"的场景中,我们可以理解为Quartz的任务执行时间不是硬编码在程序中,而是从数据库中动态获取,这提供了更大的灵活性和可配置性。 首先,让我们来详细了解一下Quartz的核心概念:...
【Spring集成Quartz定时任务与数据库实现集群详解】 在企业级应用中,定时任务的管理是必不可少的一部分,Spring框架提供了与Quartz的集成,使得我们可以方便地创建和管理定时任务。Quartz是一款强大的、开放源代码...
本项目旨在演示如何利用Spring和Quartz从数据库中动态加载定时任务,并实现对它们的增删改查功能。以下是关于这个主题的详细知识讲解。 首先,Quartz是一个开源的作业调度框架,它允许开发者创建、安排和执行定时...
在使用Quartz时,为了实现任务的持久化,即在系统重启后还能保留之前的任务设置,我们需要将任务的相关信息存储到数据库中。这涉及到一系列特定的数据库表,这些表构成了Quartz的持久化数据结构。 Quartz的持久化...
quartz的数据库sql。。。quartz的数据库sql。。。quartz的数据库sql。。。quartz的数据库sql。。。quartz的数据库sql。。。quartz的数据库sql。。。quartz的数据库sql。。。quartz的数据库sql。。。quartz的数据库...
- 主要的Quartz数据库表包括`QRTZ_JOB_DETAILS`, `QRTZ_TRIGGERS`, `QRTZ_CRON_TRIGGERS`, `QRTZ_SIMPLE_TRIGGERS`, `QRTZ_BLOB_TRIGGERS`, `QRTZ_CALENDARS`, `QRTZ_PAUSED_TRIGGER_GRPS`, `QRTZ_FIRED_TRIGGERS`,...
在这个主题“quartz动态从数据库获取时间定时改进”中,主要探讨的是如何利用Quartz框架,通过从数据库动态读取任务信息来实现更灵活的定时任务管理。 在传统的Quartz配置中,定时任务通常静态地定义在代码或者XML...
这个压缩包“Quartz.net 3.0.7.0数据库持久化.rar”包含了关于如何使用Quartz.NET实现任务调度的数据库持久化和集群配置的资料。Quartz.NET 3.0.7.0是该库的一个稳定版本,它提供了许多改进和新特性。 **数据库持久...
在1.8.6版本中,Quartz提供了数据库持久化的功能,这使得任务调度的状态能够在系统重启后得以恢复,增强了系统的可靠性和稳定性。数据库持久化是通过将作业和触发器的信息存储在关系型数据库中实现的。 Spring框架...