java timer 重启服务器_服务器启动完成执行定时任务Timer,TimerTask
由于项目需求:每隔一段时间就要调外部接口去进行某些操作,于是在网上找了一些资料,用了半天时间弄好了,代码:
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相关推荐
- 外网主机访问虚拟机下的Web服务器_服务器应用_Linux公社-Linux系统门户网站
外网主机访问虚拟机下的Web服务器_服务器应用_Linux公社-Linux系统门户网站 之前在CentOS虚拟机上安装了LAMP,搭建起了自己的web服务器,具体流程见: http://www.lin ...
- JAVA - 项目启动后执行定时任务
项目启动后不执行定时任务?? 这个得在启动类上加 @EnableScheduling 注解 @EnableScheduling @SpringBootApplication public class ...
- minecraft服务器_如何启动自己的Minecraft服务器进行多人游戏
minecraft服务器 If you've played Minecraft, then it's easy to see how much fun it can be. Running your ...
- java cpu io高_服务器负载过高问题分析-不是cpu高负载也不是IO负载如何处理(阿里 几乎是必考题)...
关于top命令 经常问load average 参考:load average 定义(网易面试) 问题现象: 1,top命令查询服务器负载达到2.0-5之间,tomcat的cpu使用率达到104% l ...
- java tcp 字节数_服务器无法接收大小超过1500字节的TCP数据包
有一台服务器无法接收大小超过1500字节的TCP数据包, 但是这个服务器CAN发送一个大于1500的TCP数据包 . 我还尝试在此服务器中捕获数据包以供WireShark进行分析 . 但是,WireS ...
- java 不重启部署_编译Java类后不重启Tomcat有两种方式:热部署、热加载
不重启Tomcat有两种方式:热部署.热加载 热部署:容器状况在运行时重新部署整个项目.这类环境下一般整个内存会清空,重新加载,这类方式 有可能会造成sessin丢失等环境.tomcat 6确实可以热 ...
- java 不重启部署_一篇文章带你搞定SpringBoot不重启项目实现修改静态资源
一.通过配置文件控制静态资源的热部署 在配置文件 application.properties 中添加: #表示从这个默认不触发重启的目录中除去static目录 spring.devtools.res ...
- centos mysql 服务器_服务器数据库搭建流程(CentOs+mysql)
前言: 服务器上数据库搭建需要知道Linux系统的版本,以前的Ubuntu14.04直接在终端下输入apt-get install (package)便可方便的下载并安装mysql,但是在centOs ...
- mysql 部署到服务器_服务器快速部署--使用Docker部署MySQL
最近使用Dokcer部署各种服务端所需的环境,目的是为了后面的服务器集群.负载均衡.数据库集群做铺垫,以便准备好服务器高并发.数据库高并发提供测试环境.这里记录一下Docker部署MySQL的过程,为 ...
最新文章
- 使用 HttpServerUtility.Transfer 方法在同一应用程序的页面间重定向
- thinkphp5中资源文件路径的使用
- 自动化测试===unittest配套的HTMLTestRunner.py生成html报告源码
- 【mac开发.NET】No installed provisioning profiles match the installed iOS signing identities
- 根本无处可避的广东三游
- 重定位----操作系统做的事情
- Vagrant常见问题汇总
- Mybatis-实现逆向代理
- 市场主流单片机的介绍和选择指南
- JS实现图片的懒加载
- Push rejected: Push master to origin/master was rejected by remote
- Meta-learning algorithms for Few-Shot Computer Vision论文解读(一)
- 朋友圈发图多大不会被压缩_微信:朋友圈照片自动压缩 不暴露位置信息
- java中定义ListNode
- GitHub Top 45:新手入门 Python,值得推荐的优质资源!
- 谷歌地图各级比例尺及空间分辨率
- 这些设计细节虽小,但俘获了用户的心
- 美妆B2C电子商务平台说明文档
- 再战设计模式(九)之组合模式
- 一名计科生的周总结(week 2)