由于项目需求:每隔一段时间就要调外部接口去进行某些操作,于是在网上找了一些资料,用了半天时间弄好了,代码:

1 importjava.util.TimerTask;2

3 public class AccountTask extendsTimerTask {4

5 @Override6 public voidrun() {7 System.out.prinln("开始执行定时任务业务");8 }9 }

1 importjava.util.Timer;2

3 importjavax.servlet.ServletContextEvent;4 importjavax.servlet.ServletContextListener;5

6 public class AccountTimerListener implementsServletContextListener {7

8 private Timer timer = null;9

10 @Override11 public voidcontextInitialized(ServletContextEvent event) {12 timer = new Timer(true);13 event.getServletContext().log("定时器已启动");14 //服务器启动后,延迟7秒启动,5秒执行一次

15 timer.scheduleAtFixedRate(new AccountTask(), 7 * 1000, 5 * 1000);

16 }17

18 @Override19 public voidcontextDestroyed(ServletContextEvent event) {20 if (timer != null) {21 timer.cancel();22 event.getServletContext().log("定时器销毁");23 }24 }25 }

然后在web.xml文件中配置监听

1

2 com.xxx.AccountTimerListener

3

启动之后,会发现没隔5秒打印一次: 开始执行定时任务业务 。

然而,当调度类中调用service层业务时,启动tomcat后,执行定时任务时会报空指针异常,这是由于这个定时任务目前只是一个普通的类,我们需要将这个定时任务注入到spring中,监听。

解决方案如下:

1 packagecom.test.utils;2

3 importjavax.servlet.ServletContextEvent;4 importjavax.servlet.ServletContextListener;5

6 importorg.springframework.context.ApplicationContext;7 importorg.springframework.web.context.WebApplicationContext;8 importorg.springframework.web.context.support.WebApplicationContextUtils;9

10 public class SpringInit implementsServletContextListener {11

12 private staticWebApplicationContext springContext;13

14 publicSpringInit() {15 super();16 }17

18 @Override19 public voidcontextDestroyed(ServletContextEvent event) {20 //TODO Auto-generated method stub

21 }22

23 @Override24 public voidcontextInitialized(ServletContextEvent event) {25 springContext =WebApplicationContextUtils.getWebApplicationContext(event.getServletContext());26 }27

28 public staticApplicationContext getApplicationContext() {29 returnspringContext;30

31 }32

33 }

web.xml文件:

1

2

3

4

5

6 com.test.utils.SpringInit

7

若  context:component-scan  出报错,可能是因为没有引入标签。

在xmlns:xsi 里加上

1 http://www.springmodules.org/schema/cache/springmodules-cache.xsd http://www.springmodules.org/schema/cache/springmodules-ehcache.xsd

xsi:schemaLocation里加上

1 http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd

上面的问题解决。

最后,我们掉用service之前,这样来获取bean:

DetailService detailService = (DetailService) SpringInit.getApplicationContext().getBean("detailService");

然后就可以掉用service层业务进行定时任务了。

java timer 重启服务器_服务器启动完成执行定时任务Timer,TimerTask相关推荐

  1. 外网主机访问虚拟机下的Web服务器_服务器应用_Linux公社-Linux系统门户网站

    外网主机访问虚拟机下的Web服务器_服务器应用_Linux公社-Linux系统门户网站 之前在CentOS虚拟机上安装了LAMP,搭建起了自己的web服务器,具体流程见: http://www.lin ...

  2. JAVA - 项目启动后执行定时任务

    项目启动后不执行定时任务?? 这个得在启动类上加 @EnableScheduling 注解 @EnableScheduling @SpringBootApplication public class ...

  3. minecraft服务器_如何启动自己的Minecraft服务器进行多人游戏

    minecraft服务器 If you've played Minecraft, then it's easy to see how much fun it can be. Running your ...

  4. java cpu io高_服务器负载过高问题分析-不是cpu高负载也不是IO负载如何处理(阿里 几乎是必考题)...

    关于top命令 经常问load average 参考:load average 定义(网易面试) 问题现象: 1,top命令查询服务器负载达到2.0-5之间,tomcat的cpu使用率达到104% l ...

  5. java tcp 字节数_服务器无法接收大小超过1500字节的TCP数据包

    有一台服务器无法接收大小超过1500字节的TCP数据包, 但是这个服务器CAN发送一个大于1500的TCP数据包 . 我还尝试在此服务器中捕获数据包以供WireShark进行分析 . 但是,WireS ...

  6. java 不重启部署_编译Java类后不重启Tomcat有两种方式:热部署、热加载

    不重启Tomcat有两种方式:热部署.热加载 热部署:容器状况在运行时重新部署整个项目.这类环境下一般整个内存会清空,重新加载,这类方式 有可能会造成sessin丢失等环境.tomcat 6确实可以热 ...

  7. java 不重启部署_一篇文章带你搞定SpringBoot不重启项目实现修改静态资源

    一.通过配置文件控制静态资源的热部署 在配置文件 application.properties 中添加: #表示从这个默认不触发重启的目录中除去static目录 spring.devtools.res ...

  8. centos mysql 服务器_服务器数据库搭建流程(CentOs+mysql)

    前言: 服务器上数据库搭建需要知道Linux系统的版本,以前的Ubuntu14.04直接在终端下输入apt-get install (package)便可方便的下载并安装mysql,但是在centOs ...

  9. mysql 部署到服务器_服务器快速部署--使用Docker部署MySQL

    最近使用Dokcer部署各种服务端所需的环境,目的是为了后面的服务器集群.负载均衡.数据库集群做铺垫,以便准备好服务器高并发.数据库高并发提供测试环境.这里记录一下Docker部署MySQL的过程,为 ...

最新文章

  1. 使用 HttpServerUtility.Transfer 方法在同一应用程序的页面间重定向
  2. thinkphp5中资源文件路径的使用
  3. 自动化测试===unittest配套的HTMLTestRunner.py生成html报告源码
  4. 【mac开发.NET】No installed provisioning profiles match the installed iOS signing identities
  5. 根本无处可避的广东三游
  6. 重定位----操作系统做的事情
  7. Vagrant常见问题汇总
  8. Mybatis-实现逆向代理
  9. 市场主流单片机的介绍和选择指南
  10. JS实现图片的懒加载
  11. Push rejected: Push master to origin/master was rejected by remote
  12. Meta-learning algorithms for Few-Shot Computer Vision论文解读(一)
  13. 朋友圈发图多大不会被压缩_微信:朋友圈照片自动压缩 不暴露位置信息
  14. java中定义ListNode
  15. GitHub Top 45:新手入门 Python,值得推荐的优质资源!
  16. 谷歌地图各级比例尺及空间分辨率
  17. 这些设计细节虽小,但俘获了用户的心
  18. 美妆B2C电子商务平台说明文档
  19. 再战设计模式(九)之组合模式
  20. 一名计科生的周总结(week 2)

热门文章

  1. 音乐播放器的实现(二)---UI面板的制作
  2. VS 2015 Steup 打包发布软件
  3. CSS中动画——Z轴平移,旋转,缩放
  4. python中math计算平方根的函数_Python求算数平方根和约数的方法汇总
  5. html before添加图片,HTML DOM before()用法及代码示例
  6. 搭建一个网站,需要好几种服务器吗?
  7. ie浏览器打不开,没有注册类别
  8. Kubernetes API访问控制
  9. 带磨削功能的复合加工机床的好处
  10. 根据 md5 校验码,检测文件是否被修改