设为首页 收藏本站
查看: 1485|回复: 0

[经验分享] Quartzs -- JDBC-JobStore

[复制链接]

尚未签到

发表于 2016-7-24 12:14:39 | 显示全部楼层 |阅读模式

  • 数据库

从%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" class="com.siyuan.test.quartz.job.LogJob"></bean>
<bean name="jobDetail"
class="frameworkx.springframework.scheduling.quartz.BeanInvokingJobDetailFactoryBean">
<property name="targetBean" value="job" />
<property name="targetMethod" value="execute" />
<property name="group" value="scheduler" />
<!--
<property name="shouldRecover" value="true" />
-->
</bean>
<bean name="trigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail" ref="jobDetail" />
<property name="cronExpression" value="0/2 * * * * ?" />
<property name="name" value="trigger" />
<property name="group" value="scheduler" />
</bean>
<bean name="scheduler"
class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="trigger" />
</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 = Scheduler
org.quartz.scheduler.instanceId = AUTO
#============================================================================
# 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.class = org.quartz.impl.jdbcjobstore.JobStoreTX
org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.oracle.OracleDelegate
org.quartz.jobStore.dataSource = quartz
org.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.OracleDriver
org.quartz.dataSource.quartz.URL = jdbc:oracle:thin:@desktop16:1521:orcl
org.quartz.dataSource.quartz.user = spaprod_01
org.quartz.dataSource.quartz.password = change
org.quartz.dataSource.quartz.maxConnections = 5
org.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下也可。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-248624-1-1.html 上篇帖子: oracle的schema的基本概念 下篇帖子: Oracle数据库链接(Database Link)详解
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表