Spring @Scheduled 注解 定时器例子

本文介绍了一种在Spring框架下使用定时任务时遇到的问题:在Tomcat服务器上部署的应用程序中定时任务被执行两次的现象。通过对问题的分析,发现是由于Tomcat的配置不当导致应用程序被加载两次,并给出了具体的解决方案。
<!--xmlns 多加下面的内容-->
xmlns:task="http://www.springframework.org/schema/task" 

 

<!--然后xsi:schemaLocation多加下面的内容-->
http://www.springframework.org/schema/task  
http://www.springframework.org/schema/task/spring-task-3.1.xsd 

 

<!--最后是我们的task任务扫描注解-->
<task:annotation-driven/>

 

<!--配置扫描位置-->
<context:component-scan base-package="com.demot"/>

 

@Component
public
class TaskScheduled { @Scheduled(cron="0 0 17 ? * 1-5")//每周1-5 下午5 点执行一次
  public void myTest(){ System.out.println("发送短信"); } }

 出错咯

在eclipse本地测试的时候正常,部署到服务器的时候定时器执行了两次,在网上搜索了下问题解决方法。

一种说spring配置的问题,一种是tomcat的配置问题。

我觉得我的问题应该是Tomcat的问题,因为本地没问题,服务器就出问题。

我在构造方法中尝试打桩输出,服务器上部署测试发现控制台输出2次构造方法,等于一个类被实例化了2次。

原因是Tomcat的server.xml下面的Host这行代码中tomcat加载完appBase="webapps"之后又去加载docBase,因此造成加载两次项目的问题。

根据网上的解决方法把配置文件中将 appBase="webapps"改成appBase="webroot",将docBase="" 中改成项目的绝对路径,重启tomcat,问题解决!

 

转载于:https://www.cnblogs.com/bowei/p/8304050.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值