首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > 其他数据库 >

Quartzs - JDBC-JobStore - Oracle 兑现 + Cluster

2012-07-04 
Quartzs -- JDBC-JobStore - Oracle 实现 + Cluster数据库从%QUARTZ_HOME%/docs/dbTables中找对应的oracle

Quartzs -- JDBC-JobStore - Oracle 实现 + Cluster
数据库

从%QUARTZ_HOME%/docs/dbTables中找对应的oracle脚本文件tables_oracle.sql。

在对应的quartz前缀前加上前缀TEST_

注:有两个INDEX的名字将超过30而报错。

相关文件结构

Quartz(project name)

?|-src

???? |-com.siyuan.test.quartz.conf

????????? |-quartz.xml

???? |-com.siyuan.test.quartz.job

????????? |-LogJob.java

???? |-frameworkx.springframework.scheduling.quartz

????????? |-BeanInvokingJobDetailFactoryBean.java

????????? |-MethodInvokingJobDetailFactoryBean.java

???? |-quartz.properties

???? |-quartz.sql

?|-WebContent

???? |-WEB-INF

????????? |-web.xml

相关文件

1)LogJob.java :必须实现java.io.Serializable

?

/** * LogJob.java * * Created on Sep 13, 2011, 11:41:00 AM * Copyright (c) 2001-2008 by G2X, Inc. All Rights Reserved. */package com.siyuan.test.quartz.job;import java.io.Serializable;/** * This class * * @author Carro.zhu * @version $Revision$, $Date$, $Author$, $Name$ */public class LogJob implements Serializable{ public void execute() {  System.out.println("LogJob.execute : " + System.currentTimeMillis()); }}

?

2)quartz.xml

必须使用frameworkx.springframework.scheduling.quartz.BeanInvokingJobDetailFactoryBean

或者frameworkx.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean,

直接使用org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean会报java.io.NotSerializableException异常,参考http://jira.springframework.org/browse/SPR-3797。

?

shouldRecover 当Quartz服务被中止后,再次启动或集群中其他机器接手任务时会尝试恢复执行之前未完成的所有任务

?

overwriteExistingJobs 必须设置为TRUE,否则配置文件中的更新无法影响DB已存在的信息

通过NAME和GROUP识别

?

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"><beans><bean name="job" value="job" /><property name="targetMethod" value="execute" /><property name="group" value="scheduler" /><!-- <property name="shouldRecover" value="true" /> --></bean>    <bean name="trigger" ref="jobDetail" />        <property name="cronExpression" value="0/2 * * * * ?" />        <property name="name" value="trigger" />        <property name="group" value="scheduler" />    </bean><bean name="scheduler"/></list></property><property name="configLocation" value="classpath:quartz.properties"/><!-- <property name="overwriteExistingJobs" value="true" /> --></bean></beans>

??

3)quartz.properties

?

#============================================================================# Configure Main Scheduler Properties#============================================================================org.quartz.scheduler.instanceName = Schedulerorg.quartz.scheduler.instanceId = AUTO#============================================================================# Configure ThreadPool#============================================================================org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPoolorg.quartz.threadPool.threadCount = 5org.quartz.threadPool.threadPriority = 5#============================================================================# Configure JobStore#============================================================================org.quartz.jobStore.class = org.quartz.impl.jdbcjobstore.JobStoreTXorg.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.oracle.OracleDelegateorg.quartz.jobStore.dataSource = quartzorg.quartz.jobStore.tablePrefix = TEST_QRTZ_org.quartz.jobStore.misfireThreshold = 10000#============================================================================# Configure Cluster#============================================================================#org.quartz.jobStore.isClustered = true#org.quartz.jobStore.clusterCheckinInterval = 20000#============================================================================# Configure DataSource#============================================================================org.quartz.dataSource.quartz.driver = oracle.jdbc.driver.OracleDriverorg.quartz.dataSource.quartz.URL = jdbc:oracle:thin:@desktop16:1521:orclorg.quartz.dataSource.quartz.user = spaprod_01org.quartz.dataSource.quartz.password = changeorg.quartz.dataSource.quartz.maxConnections = 5org.quartz.dataSource.quartz.validationQuery = SELECT 1 FROM DUAL

??

4)web.xml

<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"id="WebApp_ID" version="2.5"><display-name>quartz</display-name><context-param><param-name>contextConfigLocation</param-name><param-value>            classpath:com/siyuan/test/quartz/conf/*.xml        </param-value></context-param><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener><welcome-file-list><welcome-file>index.html</welcome-file><welcome-file>index.htm</welcome-file><welcome-file>index.jsp</welcome-file><welcome-file>default.html</welcome-file><welcome-file>default.htm</welcome-file><welcome-file>default.jsp</welcome-file></welcome-file-list></web-app>

?

5)BeanInvokingJobDetailFactoryBean/MethodInvokingJobDetailFactoryBean...

参考附件

集群

将quartz.properties中的集群部分注释去除即可

集群测试:将包含上述文件的项目分别运行在同一机器上的不同TOMCAT下,运行同一TOMCAT下也可。

热点排行