From 3dd41db79e7e4c68ed30eac381084bec0f087000 Mon Sep 17 00:00:00 2001 From: xuxueli <931591021@qq.com> Date: Fri, 27 Mar 2020 12:34:49 +0800 Subject: [PATCH] =?UTF-8?q?XxlJob=E6=B3=A8=E8=A7=A3=E6=89=AB=E6=8F=8F?= =?UTF-8?q?=E6=96=B9=E5=BC=8F=E4=BC=98=E5=8C=96=EF=BC=8C=E6=94=AF=E6=8C=81?= =?UTF-8?q?=E6=9F=A5=E6=89=BE=E7=88=B6=E7=B1=BB=E4=BB=A5=E5=8F=8A=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E5=92=8C=E5=9F=BA=E4=BA=8E=E7=B1=BB=E4=BB=A3=E7=90=86?= =?UTF-8?q?=E7=AD=89=E5=B8=B8=E8=A7=81=E6=83=85=E5=86=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/XXL-JOB官方文档.md | 15 ++++++++------- .../core/executor/impl/XxlJobSpringExecutor.java | 13 ++++++------- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/doc/XXL-JOB官方文档.md b/doc/XXL-JOB官方文档.md index 5f1d33e5..71233de1 100644 --- a/doc/XXL-JOB官方文档.md +++ b/doc/XXL-JOB官方文档.md @@ -1715,13 +1715,14 @@ public ReturnT execute(String param) { - 9、调度中心国际化完善:新增 "中文繁体" 支持。默认为 "zh_CN"/中文简体, 可选范围为 "zh_CN"/中文简体, "zh_TC"/中文繁体 and "en"/英文; - 10、移除旧类注解JobHandler,推荐使用基于方法注解 "@XxlJob" 的方式进行任务开发;(如需保留类注解JobHandler使用方式,可以参考旧版逻辑定制开发); - 11、修复bootstrap.min.css.map 404问题; -- 12、[迭代中]自定义失败重试时间间隔; -- 13、[迭代中]任务复制功能;点击复制是弹出新建任务弹框,并初始化被复制任务信息; -- 14、[迭代中]新增执行器描述、任务描述属性; -- 15、[迭代中]任务执行一次的时候指定IP; -- 16、[迭代中]任务日志支持单个清理和状态转移,方便触发子任务; -- 17、[迭代中]任务结果丢失处理:针对长期处于运行中的任务(设置过期时间时,运行超过"过期时间+1min";未设置超时时间时,运行超过"30min"),主动检测该执行器是否在线,如果不在线主动标记失败; -- 18、[迭代中]优雅停机回调丢失问题修复; +- 12、XxlJob注解扫描方式优化,支持查找父类以及接口和基于类代理等常见情况; +- 13、[迭代中]自定义失败重试时间间隔; +- 14、[迭代中]任务复制功能;点击复制是弹出新建任务弹框,并初始化被复制任务信息; +- 15、[迭代中]新增执行器描述、任务描述属性; +- 16、[迭代中]任务执行一次的时候指定IP; +- 17、[迭代中]任务日志支持单个清理和状态转移,方便触发子任务; +- 18、[迭代中]任务结果丢失处理:针对长期处于运行中的任务(设置过期时间时,运行超过"过期时间+1min";未设置超时时间时,运行超过"30min"),主动检测该执行器是否在线,如果不在线主动标记失败; +- 19、[迭代中]优雅停机回调丢失问题修复; ### TODO LIST diff --git a/xxl-job-core/src/main/java/com/xxl/job/core/executor/impl/XxlJobSpringExecutor.java b/xxl-job-core/src/main/java/com/xxl/job/core/executor/impl/XxlJobSpringExecutor.java index ad6064a3..f06d290e 100644 --- a/xxl-job-core/src/main/java/com/xxl/job/core/executor/impl/XxlJobSpringExecutor.java +++ b/xxl-job-core/src/main/java/com/xxl/job/core/executor/impl/XxlJobSpringExecutor.java @@ -16,8 +16,6 @@ import org.springframework.core.MethodIntrospector; import org.springframework.core.annotation.AnnotatedElementUtils; import java.lang.reflect.Method; - -import java.util.HashMap; import java.util.Map; @@ -81,12 +79,11 @@ public class XxlJobSpringExecutor extends XxlJobExecutor implements ApplicationC return; } // init job handler from method - String[] beanDefinitionNames = applicationContext.getBeanNamesForType(Object.class, false, true); for (String beanDefinitionName : beanDefinitionNames) { Object bean = applicationContext.getBean(beanDefinitionName); - Map annotatedMethods = new HashMap<>(); + Map annotatedMethods = null; // referred to :org.springframework.context.event.EventListenerMethodProcessor.processBean try { annotatedMethods = MethodIntrospector.selectMethods(bean.getClass(), new MethodIntrospector.MetadataLookup() { @@ -96,9 +93,10 @@ public class XxlJobSpringExecutor extends XxlJobExecutor implements ApplicationC } }); } catch (Throwable ex) { - if (logger.isDebugEnabled()) { - logger.debug("Could not resolve methods for bean with name '" + beanDefinitionName + "'", ex); - } + logger.debug("xxl-job method-jobhandler resolve error for bean[" + beanDefinitionName + "].", ex); + } + if (annotatedMethods==null || annotatedMethods.isEmpty()) { + continue; } for (Map.Entry methodXxlJobEntry : annotatedMethods.entrySet()) { @@ -107,6 +105,7 @@ public class XxlJobSpringExecutor extends XxlJobExecutor implements ApplicationC if (xxlJob == null) { continue; } + String name = xxlJob.value(); if (name.trim().length() == 0) { throw new RuntimeException("xxl-job method-jobhandler name invalid, for[" + bean.getClass() + "#" + method.getName() + "] .");