spring和quartz整合实现定时任务

1、<!--maven 依赖-->

     

<dependency>

<groupId>org.quartz-scheduler</groupId>

<artifactId>quartz</artifactId>

<version>2.2.1</version>

</dependency>

<dependency>

<groupId>org.quartz-scheduler</groupId>

<artifactId>quartz-jobs</artifactId>

<version>2.2.1</version>

</dependency>

  

2、<!-- web.xml配置 -->

<!-- 设置Spring的监听,项目启动时候初始化 -->

<listener>

<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>

</listener>

<!-- 指定Spring配置文件的路径 -->

<context-param>

<param-name>contextConfigLocation</param-name>

<param-value>/WEB-INF/classes/applicationContext.xml</param-value>

</context-param>

3、<!--spring配置文件-->

 

<bean id="jobBeanRiseStatistic" class="com.peanut.p2p.quartz.RiseStatistic"/><!--需要我们写的类,定时任务处理逻辑-->

<bean id="jobDetail00" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">

<property name="targetObject" ref="jobBeanRiseStatistic"/><!--调用的类-->

<property name="targetMethod" value="execute"/> <!-- 调用类中的方法:value为类中的方法名 -->

<property name="concurrent" value="false"/><!--将并发设置为false-->

</bean>

<!-- 定义触发时间 -->

<bean id="trigger00" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">

<property name="jobDetail" ref="jobDetail00"/>

<!-- cronExpression表达式 时间调用间隔,为秒 -->

<property name="cronExpression" value="0 30 7,9,11,13,15,17,19,20 * * ?"/>

</bean>

<!-- 总管理类 如果将lazy-init='false'那么容器启动就会执行调度程序 -->

<!-- 如果lazy-init='true',则需要实例化该bean才能执行调度程序 -->

<bean id="startQuertz" class="org.springframework.scheduling.quartz.SchedulerFactoryBean" lazy-init="false">

<property name="triggers">

<list>

<!--作业调度群,list下可以加入其它的调度器-->

<ref bean="trigger00" />

</list>

</property>

</bean>

4、//定时任务处理类

public class RiseStatistic {

    public void execute(){

        //定时处理的逻辑。。。。。。

    }

}

 

5、spring定时任务执行两次的原理和处理方法?

现象:本地测试定时任务是OK的,只执行一次,但是放到外网linux系统上,执行2次。

原因:定时任务实例化了2次;原因是tomcat加载完appBase="webapps"之后又去加载docBase,因此造成加载两次项目的问题。

解决:罪魁祸首是tomcat下的server.xml文件。appbase改为空,docBase改为绝对路径。

例:

<Host name="localhost"  appBase="" unpackWARs="true" autoDeploy="true">  

  

  <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"  

            prefix="localhost_access_log" suffix=".txt"  

            pattern="%h %l %u %t "%r" %s %b" />  

<Context docBase="/usr/local/src/tomcat-emall/webapps/emall" path="/" reloadable="true" />  

</Host>

具体原因明细:https://www.cnblogs.com/bingosblog/p/5802367.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值