http://www.opensymphony.com/quartz/download.actionから
quartz-1.6.5.zipをダウンロードして、解凍。
quartz-all-1.6.5.jarをgroovyのlibディレクトリへコピー。
quartzのlib/coreのcommons-collections-3.2.jarをgroovyのlibディレクトリへコピー。quartzのlib/optionalのcommons-pool-1.3.jarをgroovyのlibディレクトリへコピー
quartzのlib/optionalのcommons-dbcp-1.2.2.jarをgroovyのlibディレクトリへコピー
postgresのJDBCドライバーもgroovyのlibディレクトリへコピーしておく。
PostgreSQLで以下のコマンドを実行してDB作成。
CREATE DATABASE quartz
WITH OWNER = postgres
ENCODING = 'UTF8'
LC_COLLATE = 'Japanese, Japan'
LC_CTYPE = 'Japanese, Japan'
CONNECTION LIMIT = -1;
quartzのdocs/dbTables/tables_postgres.sqlを実行。
2.以下のように設定ファイルを作成。
myquartz.properties
org.quartz.scheduler.instanceName = DefaultQuartzScheduler
org.quartz.scheduler.rmi.export = false
org.quartz.scheduler.rmi.proxy = false
org.quartz.scheduler.wrapJobExecutionInUserTransaction = false
org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool
org.quartz.threadPool.threadCount = 10
org.quartz.threadPool.threadPriority = 5
org.quartz.threadPool.threadsInheritContextClassLoaderOfInitializingThread = true
org.quartz.jobStore.misfireThreshold = 60000
#org.quartz.jobStore.class = org.quartz.simpl.RAMJobStore
org.quartz.jobStore.class = org.quartz.impl.jdbcjobstore.JobStoreTX
# データソースの設定
org.quartz.dataSource.QuartzDS.driver = org.postgresql.Driver
org.quartz.dataSource.QuartzDS.URL = jdbc:postgresql://localhost:5432/quartz
org.quartz.dataSource.QuartzDS.user = postgres
org.quartz.dataSource.QuartzDS.password = postgres
org.quartz.dataSource.QuartzDS.maxConnections = 10
org.quartz.dataSource.QuartzDS.validationQuery = select 1
# JDBC JobStore設定
org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.PostgreSQLDelegate
org.quartz.jobStore.dataSource = QuartzDS
org.quartz.jobStore.tablePrefix = QRTZ_
org.quartz.jobStore.useProperties = false
org.quartz.jobStore.misfireThreshold = 60000
org.quartz.jobStore.isClustered = false
org.quartz.jobStore.clusterCheckinInterval = 15000
org.quartz.jobStore.maxMisfiresToHandleAtATime = 20
org.quartz.jobStore.dontSetAutoCommitFalse = false
org.quartz.jobStore.selectWithLockSQL = SELECT * FROM {0}LOCKS WHERE LOCK_NAME = ? FOR UPDATE
org.quartz.jobStore.txIsolationLevelSerializable = false
org.quartz.jobStore.acquireTriggersWithinLock = false
2.以下のようにJobインターフェイスを実装するクラスを作成
import org.quartz.*
class HelloQuartzJob implements Job
{
// ジョブ実行メソッド
void execute(JobExecutionContext context)
throws JobExecutionException
{
println("Hello, Quartz!" + new Date())
}
}
3.作成したジョブクラスをJobDetailとTriggerに関連付けて実行します。
import org.quartz.*
import org.quartz.impl.*
// スケジューラ取得
sf = new StdSchedulerFactory("./myquartz.properties")
sched = sf.getScheduler()
// 次の分の0秒にスケジュール
Date runTime = TriggerUtils.getEvenMinuteDate(new Date())
JobDetail job = new JobDetail(
// ジョブ名
"job1",
// グループ名
"group1",
// ジョブクラス
HelloQuartzJob.class
)
// 指定した時間に実行するトリガー
trigger = new SimpleTrigger(
// トリガー名
"trigger1",
// グループ名
"group1",
// 実行時間
runTime
)
// ジョブをスケジュール
sched.scheduleJob(job, trigger)
// スケジューラを開始
sched.start();
try {
// ジョブ実行をするために2分待ち
Thread.sleep(120L * 1000L)
}
catch(Exception ex){}
// 終了
sched.shutdown(true)
0 件のコメント:
コメントを投稿