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相关推荐

  1. java定时任务框架elasticjob详解

    这篇文章主要介绍了java定时任务框架elasticjob详解,Elastic-Job是ddframe中dd-job的作业模块中分离出来的分布式弹性作业框架.该项目基于成熟的开源产品Quartz和Zo ...

  2. Springboot2 Quartz实现JAVA定时任务的动态配置

    动态配置Quartz.没接触过定时任务的同学可以先看下此篇:JAVA定时任务实现的几种方式 文章目录 一.需求背景 1. 问题现象 2. 问题分析 3. 解决方案 二.需求背景 2.1. maven依 ...

  3. java 定时任务实现方式

    一.JDK自带定时任务 1.Timer java自带的java.util.Timer类,这个类允许你调度一个java.util.TimerTask任务.使用这种方式可以让你的程序按照某一个频度执行,但 ...

  4. Java定时任务技术分析

    <从零打造项目>系列文章 工具 比MyBatis Generator更强大的代码生成器 ORM框架选型 SpringBoot项目基础设施搭建 SpringBoot集成Mybatis项目实操 ...

  5. Java 定时任务详解

    文章目录 单机定时任务技术选型 Timer ScheduledExecutorService Spring Task 时间轮 分布式定时任务技术选型 Quartz Elastic-Job XXL-JO ...

  6. JAVA定时任务时间配置

    JAVA定时任务时间配置 每个位置配置解释 参数说明 通配符说明 常用示例 每个位置配置解释 秒 分 时 日 月 周 年* * * * * * * 参数说明 序号 说明 是否必填 允许填写的值 允许的 ...

  7. JAVA定时任务-发送邮箱提醒-王大师王文峰开发(已上线完成)】

    本人详解 作者:王文峰,参加过 CSDN 2020年度博客之星,<Java王大师王天师>作者 公众号:山峯草堂,非技术多篇文章,专注于天道酬勤的 Java 开发问题.中国国学.传统文化和代 ...

  8. SAP PM 入门系列4 - 如何手工触发一个新的PM检验批?

    SAP PM 如何手工触发一个新的PM检验批? 事务代码IP10,输入维护计划代码, 回车, 输入日期,比如今天日期2021-1-11,回车, 保存. IP03 去看这个维护计划, 在Manual m ...

  9. java定时任务,每天定时执行任务

    java定时任务,每天定时执行任务.以下是这个例子的全部代码. public class TimerManager {//时间间隔private static final long PERIOD_DA ...

最新文章

  1. 深度学习-智能视频监控
  2. MySQL面试题 | 附答案解析(十五)
  3. Keepalived配置文件
  4. java jpa注解哪个包好,Spring Data JPA 中常用注解详解
  5. echarts 地图实现轮播(一)
  6. 新天龙八部服务器维护了吗,《新天龙八部》3月11日全服更新维护公告
  7. linux select读取节点数据失败_MySQL中覆盖索引查询和select*查询执行结果案例分析...
  8. Uva12325 Zombie's Treasure Chest [二分区间+模拟退火]
  9. 十八般武艺玩转GaussDB(DWS)性能调优:总体调优策略
  10. Staked 回应节点遭到 slash 惩罚:由技术性问题导致,将全额赔偿受影响客户
  11. useState用法指南
  12. 程序生成30道四则运算(包括整数和真分数)
  13. 【转】处理百万级以上的数据提高查询速度的方法
  14. (转)5分钟APIG实战: 使用Rust语言快速构建API能力开放
  15. dio设置自定义post请求_Flutter用dio封装http网络请求,设置统一的请求地址、headers及处理返回内容...
  16. AutoCAD-源泉设计-利器
  17. 浏览器字体变大|变小怎么办,浏览器字体大小设置方法
  18. Python100例——第五章----不定方程的解
  19. 跨模态行人重识别综述 - 计算机视觉
  20. whatamitoyou-小白详解

热门文章

  1. 应届生找工作到哪里找
  2. react 使用 Youtube 播放器
  3. Swift将改变一切
  4. 【2SAT+Trie】Gym101190B [NEERC2016] Binary Code
  5. vs2005 无法启动程序 系统找不到指定的文件---解决方案
  6. 突破技术壁垒 自由收发Hotmail邮件
  7. 《Hive系列》Hive详细入门教程
  8. Proxmox VE(PVE) 安装 网心云
  9. 数据库原理及应用——熟悉数据库管理工具、数据库和表的创建与管理
  10. html编写田字格,canvas画田字格与米字格