Spring-quartz集群配置


参考博客:https://www.cnblogs.com/zhenyuyaodidiao/p/4755649.html

本文档采用spring 版本为4.0.8,quartz版本为 2.2.2,以下为操作步骤.

1  在数据库新建quartz持久化的表,根据quartz的版本不同建表语句不同,quartz 2.x.x版本的 sql脚本在文档最后附录A。

2.1  Spring2.0.2开始便不再支持Quartz。具体表现在 Quartz+Spring 把 Quartz 的 Task 实例化进入数据库时,会产生: Serializable 的错误 。所以需要新建了一个MyDetailQuartzJobBean来实现这个功能

 

package com.jeeplus.common.quartz;
import java.lang.reflect.Method;  
import org.apache.commons.logging.Log;  
import org.apache.commons.logging.LogFactory;  
import org.quartz.JobExecutionContext;  
import org.quartz.JobExecutionException;  
import org.springframework.context.ApplicationContext;  
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.scheduling.quartz.QuartzJobBean;  
 
public class MyDetailQuartzJobBean  extends QuartzJobBean {  

    protected final Log logger = LogFactory.getLog(getClass());  
    private String targetObject;  
    private String targetMethod;  

    private ApplicationContext ctx = new ClassPathXmlApplicationContext("spring-context-quartz.xml");  
 
    @Override  
    protected void executeInternal(JobExecutionContext context)  
            throws JobExecutionException {  
        try {  

            logger.info("execute [" + targetObject + "] at once>>>>>>");  
            Object otargetObject = ctx.getBean(targetObject);  
            Method m = null;  
            try {  
                m = otargetObject.getClass().getMethod(targetMethod);  
                m.invoke(otargetObject);  
            } catch (SecurityException e) {  
                logger.error(e);  
            } catch (NoSuchMethodException e) {  
                logger.error(e);  
            }  

        } catch (Exception e) {  
            throw new JobExecutionException(e);  
        }  
    }  

    public void setApplicationContext(ApplicationContext applicationContext) {  
        this.ctx = applicationContext;  
    }  

    public void setTargetObject(String targetObject) {  
        this.targetObject = targetObject;  
    }  

    public void setTargetMethod(String targetMethod) {  
        this.targetMethod = targetMethod;  
    }  

}

 

 

2.2  真正需要实现job的类如下
package com.jeeplus.common.quartz;
import java.io.Serializable;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Date;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import com.mysql.jdbc.Connection;

public class Test implements Serializable{
    private Log logger = LogFactory.getLog(Test.class);
    private static final long serialVersionUID = -2073310586499744415L;
    
    public void execute () {  
        System.out.println("@:");  
    }
}

 

3  配置spring-context-quartz.xml :

 

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans&
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值