Преглед изворни кода

任务触发组件加载顺序调整,避免小概率情况下组件随机加载顺序导致的I18N的NPE问题;

xuxueli пре 5 година
родитељ
комит
97625a6785

+ 1 - 1
doc/XXL-JOB官方文档.md Прегледај датотеку

1573
 - 6、调度组件优化:针对永远不会触发的Cron禁止配置和启动;任务Cron最后一次触发后再也不会触发时,比如一次性任务,主动停止相关任务;
1573
 - 6、调度组件优化:针对永远不会触发的Cron禁止配置和启动;任务Cron最后一次触发后再也不会触发时,比如一次性任务,主动停止相关任务;
1574
 - 7、任务列表交互优化,支持查看任务所属执行器的注册节点;
1574
 - 7、任务列表交互优化,支持查看任务所属执行器的注册节点;
1575
 - 8、DB重连优化,修复DB宕机重连后任务调度停止的问题,重连后自动加入调度集群触发任务调度;
1575
 - 8、DB重连优化,修复DB宕机重连后任务调度停止的问题,重连后自动加入调度集群触发任务调度;
1576
-- 9、任务触发组件加载顺序调整,避免小概率情况下组件随机加载顺序导致的I18N的NPE问题
1576
+- 9、任务触发组件加载顺序调整,避免小概率情况下组件随机加载顺序导致的I18N的NPE问题;
1577
 - 10、项目依赖升级至较新稳定版本,如spring、spring-boot、mybatis、slf4j、groovy等等;
1577
 - 10、项目依赖升级至较新稳定版本,如spring、spring-boot、mybatis、slf4j、groovy等等;
1578
 - 11、JobThread自销毁优化,避免并发触发导致triggerQueue中任务丢失问题;
1578
 - 11、JobThread自销毁优化,避免并发触发导致triggerQueue中任务丢失问题;
1579
 - 12、[ING,交互兼容问题待处理]Cron在线生成工具:任务新增、编辑框通过组件在线生成Cron表达式;
1579
 - 12、[ING,交互兼容问题待处理]Cron在线生成工具:任务新增、编辑框通过组件在线生成Cron表达式;

+ 1 - 1
xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobApiController.java Прегледај датотеку

1
 package com.xxl.job.admin.controller;
1
 package com.xxl.job.admin.controller;
2
 
2
 
3
 import com.xxl.job.admin.controller.annotation.PermissionLimit;
3
 import com.xxl.job.admin.controller.annotation.PermissionLimit;
4
-import com.xxl.job.admin.core.conf.XxlJobScheduler;
4
+import com.xxl.job.admin.core.scheduler.XxlJobScheduler;
5
 import com.xxl.job.core.biz.AdminBiz;
5
 import com.xxl.job.core.biz.AdminBiz;
6
 import org.springframework.beans.factory.InitializingBean;
6
 import org.springframework.beans.factory.InitializingBean;
7
 import org.springframework.stereotype.Controller;
7
 import org.springframework.stereotype.Controller;

+ 1 - 1
xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobLogController.java Прегледај датотеку

1
 package com.xxl.job.admin.controller;
1
 package com.xxl.job.admin.controller;
2
 
2
 
3
-import com.xxl.job.admin.core.conf.XxlJobScheduler;
3
+import com.xxl.job.admin.core.scheduler.XxlJobScheduler;
4
 import com.xxl.job.admin.core.exception.XxlJobException;
4
 import com.xxl.job.admin.core.exception.XxlJobException;
5
 import com.xxl.job.admin.core.model.XxlJobGroup;
5
 import com.xxl.job.admin.core.model.XxlJobGroup;
6
 import com.xxl.job.admin.core.model.XxlJobInfo;
6
 import com.xxl.job.admin.core.model.XxlJobInfo;

+ 0 - 27
xxl-job-admin/src/main/java/com/xxl/job/admin/core/conf/XxlJobAdminBean Прегледај датотеку

1
-package com.xxl.job.admin.conf;
2
-
3
-import org.springframework.beans.factory.annotation.Qualifier;
4
-import org.springframework.context.annotation.Bean;
5
-import org.springframework.context.annotation.Configuration;
6
-
7
-/**
8
- * @Auther: zhuolin.ji
9
- * @Date: 2019/10/12 18:08
10
- * @Package: com.xxl.job.admin.conf
11
- * @Description:
12
- */
13
-@Configuration
14
-public class XxlJobAdminBean {
15
-
16
-    @Bean(name = "xxlJobAdminConfig")
17
-    public XxlJobAdminConfig getXxlJobAdminConfig() {
18
-        return new XxlJobAdminConfig();
19
-    }
20
-
21
-    @Bean(initMethod = "init", destroyMethod = "destroy")
22
-    public XxlJobScheduler getXxlJobScheduler(@Qualifier(value = "xxlJobAdminConfig") XxlJobAdminConfig xxlJobAdminConfig) {
23
-        XxlJobAdminConfig.setAdminConfig(xxlJobAdminConfig);
24
-        return new XxlJobScheduler();
25
-    }
26
-
27
-}

+ 24 - 3
xxl-job-admin/src/main/java/com/xxl/job/admin/core/conf/XxlJobAdminConfig.java Прегледај датотеку

1
 package com.xxl.job.admin.core.conf;
1
 package com.xxl.job.admin.core.conf;
2
 
2
 
3
+import com.xxl.job.admin.core.scheduler.XxlJobScheduler;
3
 import com.xxl.job.admin.dao.XxlJobGroupDao;
4
 import com.xxl.job.admin.dao.XxlJobGroupDao;
4
 import com.xxl.job.admin.dao.XxlJobInfoDao;
5
 import com.xxl.job.admin.dao.XxlJobInfoDao;
5
 import com.xxl.job.admin.dao.XxlJobLogDao;
6
 import com.xxl.job.admin.dao.XxlJobLogDao;
6
 import com.xxl.job.admin.dao.XxlJobRegistryDao;
7
 import com.xxl.job.admin.dao.XxlJobRegistryDao;
7
 import com.xxl.job.core.biz.AdminBiz;
8
 import com.xxl.job.core.biz.AdminBiz;
9
+import org.springframework.beans.factory.DisposableBean;
8
 import org.springframework.beans.factory.InitializingBean;
10
 import org.springframework.beans.factory.InitializingBean;
9
 import org.springframework.beans.factory.annotation.Value;
11
 import org.springframework.beans.factory.annotation.Value;
10
 import org.springframework.mail.javamail.JavaMailSender;
12
 import org.springframework.mail.javamail.JavaMailSender;
19
  * @author xuxueli 2017-04-28
21
  * @author xuxueli 2017-04-28
20
  */
22
  */
21
 
23
 
22
-public class XxlJobAdminConfig {
24
+@Component
25
+public class XxlJobAdminConfig implements InitializingBean, DisposableBean {
26
+
23
     private static XxlJobAdminConfig adminConfig = null;
27
     private static XxlJobAdminConfig adminConfig = null;
24
     public static XxlJobAdminConfig getAdminConfig() {
28
     public static XxlJobAdminConfig getAdminConfig() {
25
         return adminConfig;
29
         return adminConfig;
26
     }
30
     }
27
 
31
 
28
-    public static void setAdminConfig(XxlJobAdminConfig config) {
29
-        XxlJobAdminConfig.adminConfig = config;
32
+
33
+    // ---------------------- XxlJobScheduler ----------------------
34
+
35
+    private XxlJobScheduler xxlJobScheduler;
36
+
37
+    @Override
38
+    public void afterPropertiesSet() throws Exception {
39
+        adminConfig = this;
40
+
41
+        xxlJobScheduler = new XxlJobScheduler();
42
+        xxlJobScheduler.init();
30
     }
43
     }
31
 
44
 
45
+    @Override
46
+    public void destroy() throws Exception {
47
+        xxlJobScheduler.destroy();
48
+    }
49
+
50
+
51
+    // ---------------------- XxlJobScheduler ----------------------
52
+
32
     // conf
53
     // conf
33
     @Value("${xxl.job.i18n}")
54
     @Value("${xxl.job.i18n}")
34
     private String i18n;
55
     private String i18n;

+ 1 - 1
xxl-job-admin/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteBusyover.java Прегледај датотеку

1
 package com.xxl.job.admin.core.route.strategy;
1
 package com.xxl.job.admin.core.route.strategy;
2
 
2
 
3
-import com.xxl.job.admin.core.conf.XxlJobScheduler;
3
+import com.xxl.job.admin.core.scheduler.XxlJobScheduler;
4
 import com.xxl.job.admin.core.route.ExecutorRouter;
4
 import com.xxl.job.admin.core.route.ExecutorRouter;
5
 import com.xxl.job.admin.core.util.I18nUtil;
5
 import com.xxl.job.admin.core.util.I18nUtil;
6
 import com.xxl.job.core.biz.ExecutorBiz;
6
 import com.xxl.job.core.biz.ExecutorBiz;

+ 1 - 1
xxl-job-admin/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteFailover.java Прегледај датотеку

1
 package com.xxl.job.admin.core.route.strategy;
1
 package com.xxl.job.admin.core.route.strategy;
2
 
2
 
3
-import com.xxl.job.admin.core.conf.XxlJobScheduler;
3
+import com.xxl.job.admin.core.scheduler.XxlJobScheduler;
4
 import com.xxl.job.admin.core.route.ExecutorRouter;
4
 import com.xxl.job.admin.core.route.ExecutorRouter;
5
 import com.xxl.job.admin.core.util.I18nUtil;
5
 import com.xxl.job.admin.core.util.I18nUtil;
6
 import com.xxl.job.core.biz.ExecutorBiz;
6
 import com.xxl.job.core.biz.ExecutorBiz;

xxl-job-admin/src/main/java/com/xxl/job/admin/core/conf/XxlJobScheduler.java → xxl-job-admin/src/main/java/com/xxl/job/admin/core/scheduler/XxlJobScheduler.java Прегледај датотеку

1
-package com.xxl.job.admin.core.conf;
1
+package com.xxl.job.admin.core.scheduler;
2
 
2
 
3
+import com.xxl.job.admin.core.conf.XxlJobAdminConfig;
3
 import com.xxl.job.admin.core.thread.JobFailMonitorHelper;
4
 import com.xxl.job.admin.core.thread.JobFailMonitorHelper;
4
 import com.xxl.job.admin.core.thread.JobRegistryMonitorHelper;
5
 import com.xxl.job.admin.core.thread.JobRegistryMonitorHelper;
5
 import com.xxl.job.admin.core.thread.JobScheduleHelper;
6
 import com.xxl.job.admin.core.thread.JobScheduleHelper;
18
 import com.xxl.rpc.serialize.Serializer;
19
 import com.xxl.rpc.serialize.Serializer;
19
 import org.slf4j.Logger;
20
 import org.slf4j.Logger;
20
 import org.slf4j.LoggerFactory;
21
 import org.slf4j.LoggerFactory;
21
-import org.springframework.beans.factory.DisposableBean;
22
-import org.springframework.beans.factory.InitializingBean;
23
-import org.springframework.context.annotation.DependsOn;
24
-import org.springframework.stereotype.Component;
25
 
22
 
26
 import javax.servlet.ServletException;
23
 import javax.servlet.ServletException;
27
 import javax.servlet.http.HttpServletRequest;
24
 import javax.servlet.http.HttpServletRequest;
38
     private static final Logger logger = LoggerFactory.getLogger(XxlJobScheduler.class);
35
     private static final Logger logger = LoggerFactory.getLogger(XxlJobScheduler.class);
39
 
36
 
40
 
37
 
41
-    
42
     public void init() throws Exception {
38
     public void init() throws Exception {
43
         // init i18n
39
         // init i18n
44
         initI18n();
40
         initI18n();

+ 1 - 1
xxl-job-admin/src/main/java/com/xxl/job/admin/core/trigger/XxlJobTrigger.java Прегледај датотеку

1
 package com.xxl.job.admin.core.trigger;
1
 package com.xxl.job.admin.core.trigger;
2
 
2
 
3
 import com.xxl.job.admin.core.conf.XxlJobAdminConfig;
3
 import com.xxl.job.admin.core.conf.XxlJobAdminConfig;
4
-import com.xxl.job.admin.core.conf.XxlJobScheduler;
4
+import com.xxl.job.admin.core.scheduler.XxlJobScheduler;
5
 import com.xxl.job.admin.core.model.XxlJobGroup;
5
 import com.xxl.job.admin.core.model.XxlJobGroup;
6
 import com.xxl.job.admin.core.model.XxlJobInfo;
6
 import com.xxl.job.admin.core.model.XxlJobInfo;
7
 import com.xxl.job.admin.core.model.XxlJobLog;
7
 import com.xxl.job.admin.core.model.XxlJobLog;