Java定时任务手工触发-使用Arthas
1. 前言
在测试环境经常需要手工触发Java应用中的定时任务,如果定时任务没有使用Quartz,Java应用中也没有提供其他方法手工触发定时任务,可以使用Arthas快速实现以上目的。
以下使用Arthas动态触发Java定时任务的前提是:定时任务类为Spring Bean,Java项目中存在公共静态方法可以获取到Spring Context,如以下使用的SpringContextUtil类的getSpringContext()方法,代码见附录。
2. Arthas使用说明
2.1. 官方文档
https://arthas.aliyun.com/doc/quick-start.html
Arthas官方文档中考虑的情况比较多,对于使用Arthas动态触发Java定时任务的需求,只需要按照以下步骤执行即可。
2.2. 安装
可从以下地址下载Arthas压缩包arthas-bin.zip,版本为3.5.1,发布时间为2021年5月13日。
将以上压缩包上传至对应服务器中并解压。
unzip arthas-bin.zip -d arthas-bin
2.3. 启动Arthas
执行解压产生目录中的“sh as.sh”,选择需要attach的Java进程,若只存在一个进程则可直接回车,若存在多个则需要输入对应编号后回车。
3. 使用Arthas动态触发Java定时任务
在启动Arthas后执行以下命令:
ognl '@xxx.SpringContextUtil@getSpringContext().getBean("xxx.xxxTask").startTask()'
以上命令通过SpringContextUtil.getSpringContext()方法获得Spring Context后,获得定时任务对应的Bean,再调用其方法,达到手工触发定时任务的功能。
以上xxx.xxxTask为对应Spring Bean的名称,定时任务执行的方法为“public void startTask()”。
使用以下命令,可以查看全部Spring Bean的名称。
ognl '@xxx.SpringContextUtil@getSpringContext().getBeanDefinitionNames()'
4. 附录
SpringContextUtil类代码如下:
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Component;@Lazy(false)
@Component("xxx.SpringContextUtil")
public class SpringContextUtil implements ApplicationContextAware {private static ApplicationContext springContext;public static ApplicationContext getSpringContext() {return springContext;}public static void setSpringContext(ApplicationContext springContext) {SpringContextUtil.springContext = springContext;}@Overridepublic void setApplicationContext(ApplicationContext applicationContext) throws BeansException {setSpringContext(applicationContext);}
}
Java定时任务手工触发-使用Arthas相关推荐
- java定时任务框架elasticjob详解
这篇文章主要介绍了java定时任务框架elasticjob详解,Elastic-Job是ddframe中dd-job的作业模块中分离出来的分布式弹性作业框架.该项目基于成熟的开源产品Quartz和Zo ...
- Springboot2 Quartz实现JAVA定时任务的动态配置
动态配置Quartz.没接触过定时任务的同学可以先看下此篇:JAVA定时任务实现的几种方式 文章目录 一.需求背景 1. 问题现象 2. 问题分析 3. 解决方案 二.需求背景 2.1. maven依 ...
- java 定时任务实现方式
一.JDK自带定时任务 1.Timer java自带的java.util.Timer类,这个类允许你调度一个java.util.TimerTask任务.使用这种方式可以让你的程序按照某一个频度执行,但 ...
- Java定时任务技术分析
<从零打造项目>系列文章 工具 比MyBatis Generator更强大的代码生成器 ORM框架选型 SpringBoot项目基础设施搭建 SpringBoot集成Mybatis项目实操 ...
- Java 定时任务详解
文章目录 单机定时任务技术选型 Timer ScheduledExecutorService Spring Task 时间轮 分布式定时任务技术选型 Quartz Elastic-Job XXL-JO ...
- JAVA定时任务时间配置
JAVA定时任务时间配置 每个位置配置解释 参数说明 通配符说明 常用示例 每个位置配置解释 秒 分 时 日 月 周 年* * * * * * * 参数说明 序号 说明 是否必填 允许填写的值 允许的 ...
- JAVA定时任务-发送邮箱提醒-王大师王文峰开发(已上线完成)】
本人详解 作者:王文峰,参加过 CSDN 2020年度博客之星,<Java王大师王天师>作者 公众号:山峯草堂,非技术多篇文章,专注于天道酬勤的 Java 开发问题.中国国学.传统文化和代 ...
- SAP PM 入门系列4 - 如何手工触发一个新的PM检验批?
SAP PM 如何手工触发一个新的PM检验批? 事务代码IP10,输入维护计划代码, 回车, 输入日期,比如今天日期2021-1-11,回车, 保存. IP03 去看这个维护计划, 在Manual m ...
- java定时任务,每天定时执行任务
java定时任务,每天定时执行任务.以下是这个例子的全部代码. public class TimerManager {//时间间隔private static final long PERIOD_DA ...
最新文章
- 深度学习-智能视频监控
- MySQL面试题 | 附答案解析(十五)
- Keepalived配置文件
- java jpa注解哪个包好,Spring Data JPA 中常用注解详解
- echarts 地图实现轮播(一)
- 新天龙八部服务器维护了吗,《新天龙八部》3月11日全服更新维护公告
- linux select读取节点数据失败_MySQL中覆盖索引查询和select*查询执行结果案例分析...
- Uva12325 Zombie's Treasure Chest [二分区间+模拟退火]
- 十八般武艺玩转GaussDB(DWS)性能调优:总体调优策略
- Staked 回应节点遭到 slash 惩罚:由技术性问题导致,将全额赔偿受影响客户
- useState用法指南
- 程序生成30道四则运算(包括整数和真分数)
- 【转】处理百万级以上的数据提高查询速度的方法
- (转)5分钟APIG实战: 使用Rust语言快速构建API能力开放
- dio设置自定义post请求_Flutter用dio封装http网络请求,设置统一的请求地址、headers及处理返回内容...
- AutoCAD-源泉设计-利器
- 浏览器字体变大|变小怎么办,浏览器字体大小设置方法
- Python100例——第五章----不定方程的解
- 跨模态行人重识别综述 - 计算机视觉
- whatamitoyou-小白详解