Sfoglia il codice sorgente

精简项目,取消第三方依赖,如 commons-collections4 ;

xuxueli 6 anni fa
parent
commit
bce7cc4676

+ 1 - 0
doc/XXL-JOB官方文档.md Vedi File

1397
 - 2、任务告警逻辑调整,改为通过扫描失败日志方式触发。一方面精确扫描失败任务,降低扫描范围;另一方面取消内存队列,降低线程内存消耗;
1397
 - 2、任务告警逻辑调整,改为通过扫描失败日志方式触发。一方面精确扫描失败任务,降低扫描范围;另一方面取消内存队列,降低线程内存消耗;
1398
 - 3、记住密码功能优化,选中时永久记住;非选中时关闭浏览器即登出;
1398
 - 3、记住密码功能优化,选中时永久记住;非选中时关闭浏览器即登出;
1399
 - 4、项目依赖升级至较新稳定版本,如spring、jackson、groovy等等;
1399
 - 4、项目依赖升级至较新稳定版本,如spring、jackson、groovy等等;
1400
+- 5、精简项目,取消第三方依赖,如 commons-collections4 ;
1400
 - [迭代中]注册中心优化,实时性注册发现:心跳注册间隔10s,refresh失败则首次注册并立即更新注册信息,心跳类似;30s过期销毁;
1401
 - [迭代中]注册中心优化,实时性注册发现:心跳注册间隔10s,refresh失败则首次注册并立即更新注册信息,心跳类似;30s过期销毁;
1401
 - [迭代中]脚本任务,支持数据参数,新版本仅支持单参数不支持需要兼容;
1402
 - [迭代中]脚本任务,支持数据参数,新版本仅支持单参数不支持需要兼容;
1402
 - [迭代中]提供执行器Docker镜像;
1403
 - [迭代中]提供执行器Docker镜像;

+ 0 - 1
pom.xml Vedi File

36
 		<junit.version>4.12</junit.version>
36
 		<junit.version>4.12</junit.version>
37
 
37
 
38
 		<commons-exec.version>1.3</commons-exec.version>
38
 		<commons-exec.version>1.3</commons-exec.version>
39
-		<commons-collections4.version>4.2</commons-collections4.version>
40
 		<commons-lang3.version>3.8.1</commons-lang3.version>
39
 		<commons-lang3.version>3.8.1</commons-lang3.version>
41
 
40
 
42
 		<groovy.version>2.5.5</groovy.version>
41
 		<groovy.version>2.5.5</groovy.version>

+ 0 - 8
xxl-job-admin/pom.xml Vedi File

88
 			<version>${mysql-connector-java.version}</version>
88
 			<version>${mysql-connector-java.version}</version>
89
 		</dependency>
89
 		</dependency>
90
 
90
 
91
-		<!-- commons-collections4 -->
92
-		<dependency>
93
-			<groupId>org.apache.commons</groupId>
94
-			<artifactId>commons-collections4</artifactId>
95
-			<version>${commons-collections4.version}</version>
96
-		</dependency>
97
 		<!-- commons-lang3 -->
91
 		<!-- commons-lang3 -->
98
 		<dependency>
92
 		<dependency>
99
 			<groupId>org.apache.commons</groupId>
93
 			<groupId>org.apache.commons</groupId>
102
 		</dependency>
96
 		</dependency>
103
 
97
 
104
 
98
 
105
-
106
-
107
 		<!-- quartz :quartz-2.2.3/c3p0-0.9.1.1/slf4j-api-1.6.6 -->
99
 		<!-- quartz :quartz-2.2.3/c3p0-0.9.1.1/slf4j-api-1.6.6 -->
108
 		<dependency>
100
 		<dependency>
109
 			<groupId>org.quartz-scheduler</groupId>
101
 			<groupId>org.quartz-scheduler</groupId>

+ 1 - 3
xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobGroupController.java Vedi File

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.model.XxlJobGroup;
4
 import com.xxl.job.admin.core.model.XxlJobGroup;
5
 import com.xxl.job.admin.core.model.XxlJobRegistry;
5
 import com.xxl.job.admin.core.model.XxlJobRegistry;
6
-import com.xxl.job.admin.core.schedule.XxlJobDynamicScheduler;
7
 import com.xxl.job.admin.core.util.I18nUtil;
6
 import com.xxl.job.admin.core.util.I18nUtil;
8
 import com.xxl.job.admin.dao.XxlJobGroupDao;
7
 import com.xxl.job.admin.dao.XxlJobGroupDao;
9
 import com.xxl.job.admin.dao.XxlJobInfoDao;
8
 import com.xxl.job.admin.dao.XxlJobInfoDao;
10
 import com.xxl.job.core.biz.model.ReturnT;
9
 import com.xxl.job.core.biz.model.ReturnT;
11
 import com.xxl.job.core.enums.RegistryConfig;
10
 import com.xxl.job.core.enums.RegistryConfig;
12
-import org.apache.commons.collections4.CollectionUtils;
13
 import org.apache.commons.lang3.StringUtils;
11
 import org.apache.commons.lang3.StringUtils;
14
 import org.springframework.stereotype.Controller;
12
 import org.springframework.stereotype.Controller;
15
 import org.springframework.ui.Model;
13
 import org.springframework.ui.Model;
92
 			// 0=自动注册
90
 			// 0=自动注册
93
 			List<String> registryList = findRegistryByAppName(xxlJobGroup.getAppName());
91
 			List<String> registryList = findRegistryByAppName(xxlJobGroup.getAppName());
94
 			String addressListStr = null;
92
 			String addressListStr = null;
95
-			if (CollectionUtils.isNotEmpty(registryList)) {
93
+			if (registryList!=null && !registryList.isEmpty()) {
96
 				Collections.sort(registryList);
94
 				Collections.sort(registryList);
97
 				addressListStr = StringUtils.join(registryList, ",");
95
 				addressListStr = StringUtils.join(registryList, ",");
98
 			}
96
 			}

+ 1 - 4
xxl-job-admin/src/main/java/com/xxl/job/admin/core/thread/JobFailMonitorHelper.java Vedi File

7
 import com.xxl.job.admin.core.trigger.TriggerTypeEnum;
7
 import com.xxl.job.admin.core.trigger.TriggerTypeEnum;
8
 import com.xxl.job.admin.core.util.I18nUtil;
8
 import com.xxl.job.admin.core.util.I18nUtil;
9
 import com.xxl.job.core.biz.model.ReturnT;
9
 import com.xxl.job.core.biz.model.ReturnT;
10
-import org.apache.commons.collections4.CollectionUtils;
11
 import org.slf4j.Logger;
10
 import org.slf4j.Logger;
12
 import org.slf4j.LoggerFactory;
11
 import org.slf4j.LoggerFactory;
13
 import org.springframework.mail.javamail.MimeMessageHelper;
12
 import org.springframework.mail.javamail.MimeMessageHelper;
14
 
13
 
15
-import javax.mail.MessagingException;
16
 import javax.mail.internet.MimeMessage;
14
 import javax.mail.internet.MimeMessage;
17
-import java.io.UnsupportedEncodingException;
18
 import java.text.MessageFormat;
15
 import java.text.MessageFormat;
19
 import java.util.Arrays;
16
 import java.util.Arrays;
20
 import java.util.HashSet;
17
 import java.util.HashSet;
50
 					try {
47
 					try {
51
 
48
 
52
 						List<Integer> failLogIds = XxlJobAdminConfig.getAdminConfig().getXxlJobLogDao().findFailJobLogIds(1000);
49
 						List<Integer> failLogIds = XxlJobAdminConfig.getAdminConfig().getXxlJobLogDao().findFailJobLogIds(1000);
53
-						if (CollectionUtils.isNotEmpty(failLogIds)) {
50
+						if (failLogIds!=null && !failLogIds.isEmpty()) {
54
 							for (int failLogId: failLogIds) {
51
 							for (int failLogId: failLogIds) {
55
 
52
 
56
 								// lock log
53
 								// lock log

+ 2 - 4
xxl-job-admin/src/main/java/com/xxl/job/admin/core/thread/JobRegistryMonitorHelper.java Vedi File

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.model.XxlJobGroup;
4
 import com.xxl.job.admin.core.model.XxlJobGroup;
5
 import com.xxl.job.admin.core.model.XxlJobRegistry;
5
 import com.xxl.job.admin.core.model.XxlJobRegistry;
6
-import com.xxl.job.admin.core.schedule.XxlJobDynamicScheduler;
7
 import com.xxl.job.core.enums.RegistryConfig;
6
 import com.xxl.job.core.enums.RegistryConfig;
8
-import org.apache.commons.collections4.CollectionUtils;
9
 import org.apache.commons.lang3.StringUtils;
7
 import org.apache.commons.lang3.StringUtils;
10
 import org.slf4j.Logger;
8
 import org.slf4j.Logger;
11
 import org.slf4j.LoggerFactory;
9
 import org.slf4j.LoggerFactory;
38
 					try {
36
 					try {
39
 						// auto registry group
37
 						// auto registry group
40
 						List<XxlJobGroup> groupList = XxlJobAdminConfig.getAdminConfig().getXxlJobGroupDao().findByAddressType(0);
38
 						List<XxlJobGroup> groupList = XxlJobAdminConfig.getAdminConfig().getXxlJobGroupDao().findByAddressType(0);
41
-						if (CollectionUtils.isNotEmpty(groupList)) {
39
+						if (groupList!=null && !groupList.isEmpty()) {
42
 
40
 
43
 							// remove dead address (admin/executor)
41
 							// remove dead address (admin/executor)
44
 							XxlJobAdminConfig.getAdminConfig().getXxlJobRegistryDao().removeDead(RegistryConfig.DEAD_TIMEOUT);
42
 							XxlJobAdminConfig.getAdminConfig().getXxlJobRegistryDao().removeDead(RegistryConfig.DEAD_TIMEOUT);
67
 							for (XxlJobGroup group: groupList) {
65
 							for (XxlJobGroup group: groupList) {
68
 								List<String> registryList = appAddressMap.get(group.getAppName());
66
 								List<String> registryList = appAddressMap.get(group.getAppName());
69
 								String addressListStr = null;
67
 								String addressListStr = null;
70
-								if (CollectionUtils.isNotEmpty(registryList)) {
68
+								if (registryList!=null && !registryList.isEmpty()) {
71
 									Collections.sort(registryList);
69
 									Collections.sort(registryList);
72
 									addressListStr = StringUtils.join(registryList, ",");
70
 									addressListStr = StringUtils.join(registryList, ",");
73
 								}
71
 								}

+ 3 - 3
xxl-job-admin/src/main/java/com/xxl/job/admin/core/trigger/XxlJobTrigger.java Vedi File

13
 import com.xxl.job.core.enums.ExecutorBlockStrategyEnum;
13
 import com.xxl.job.core.enums.ExecutorBlockStrategyEnum;
14
 import com.xxl.rpc.util.IpUtil;
14
 import com.xxl.rpc.util.IpUtil;
15
 import com.xxl.rpc.util.ThrowableUtil;
15
 import com.xxl.rpc.util.ThrowableUtil;
16
-import org.apache.commons.collections4.CollectionUtils;
17
 import org.apache.commons.lang3.StringUtils;
16
 import org.apache.commons.lang3.StringUtils;
18
 import org.slf4j.Logger;
17
 import org.slf4j.Logger;
19
 import org.slf4j.LoggerFactory;
18
 import org.slf4j.LoggerFactory;
64
             }
63
             }
65
         }
64
         }
66
         if (ExecutorRouteStrategyEnum.SHARDING_BROADCAST==ExecutorRouteStrategyEnum.match(jobInfo.getExecutorRouteStrategy(), null)
65
         if (ExecutorRouteStrategyEnum.SHARDING_BROADCAST==ExecutorRouteStrategyEnum.match(jobInfo.getExecutorRouteStrategy(), null)
67
-                && CollectionUtils.isNotEmpty(group.getRegistryList()) && shardingParam==null) {
66
+                && group.getRegistryList()!=null && !group.getRegistryList().isEmpty()
67
+                && shardingParam==null) {
68
             for (int i = 0; i < group.getRegistryList().size(); i++) {
68
             for (int i = 0; i < group.getRegistryList().size(); i++) {
69
                 processTrigger(group, jobInfo, finalFailRetryCount, triggerType, i, group.getRegistryList().size());
69
                 processTrigger(group, jobInfo, finalFailRetryCount, triggerType, i, group.getRegistryList().size());
70
             }
70
             }
118
         // 3、init address
118
         // 3、init address
119
         String address = null;
119
         String address = null;
120
         ReturnT<String> routeAddressResult = null;
120
         ReturnT<String> routeAddressResult = null;
121
-        if (CollectionUtils.isNotEmpty(group.getRegistryList())) {
121
+        if (group.getRegistryList()!=null && !group.getRegistryList().isEmpty()) {
122
             if (ExecutorRouteStrategyEnum.SHARDING_BROADCAST == executorRouteStrategyEnum) {
122
             if (ExecutorRouteStrategyEnum.SHARDING_BROADCAST == executorRouteStrategyEnum) {
123
                 if (index < group.getRegistryList().size()) {
123
                 if (index < group.getRegistryList().size()) {
124
                     address = group.getRegistryList().get(index);
124
                     address = group.getRegistryList().get(index);

+ 3 - 4
xxl-job-admin/src/main/java/com/xxl/job/admin/service/impl/XxlJobServiceImpl.java Vedi File

13
 import com.xxl.job.core.biz.model.ReturnT;
13
 import com.xxl.job.core.biz.model.ReturnT;
14
 import com.xxl.job.core.enums.ExecutorBlockStrategyEnum;
14
 import com.xxl.job.core.enums.ExecutorBlockStrategyEnum;
15
 import com.xxl.job.core.glue.GlueTypeEnum;
15
 import com.xxl.job.core.glue.GlueTypeEnum;
16
-import org.apache.commons.collections4.CollectionUtils;
17
 import org.apache.commons.lang3.StringUtils;
16
 import org.apache.commons.lang3.StringUtils;
18
 import org.apache.commons.lang3.time.DateUtils;
17
 import org.apache.commons.lang3.time.DateUtils;
19
 import org.apache.commons.lang3.time.FastDateFormat;
18
 import org.apache.commons.lang3.time.FastDateFormat;
287
 		Set<String> executerAddressSet = new HashSet<String>();
286
 		Set<String> executerAddressSet = new HashSet<String>();
288
 		List<XxlJobGroup> groupList = xxlJobGroupDao.findAll();
287
 		List<XxlJobGroup> groupList = xxlJobGroupDao.findAll();
289
 
288
 
290
-		if (CollectionUtils.isNotEmpty(groupList)) {
289
+		if (groupList!=null && !groupList.isEmpty()) {
291
 			for (XxlJobGroup group: groupList) {
290
 			for (XxlJobGroup group: groupList) {
292
-				if (CollectionUtils.isNotEmpty(group.getRegistryList())) {
291
+				if (group.getRegistryList()!=null && !group.getRegistryList().isEmpty()) {
293
 					executerAddressSet.addAll(group.getRegistryList());
292
 					executerAddressSet.addAll(group.getRegistryList());
294
 				}
293
 				}
295
 			}
294
 			}
325
 		int triggerCountFailTotal = 0;
324
 		int triggerCountFailTotal = 0;
326
 
325
 
327
 		List<Map<String, Object>> triggerCountMapAll = xxlJobLogDao.triggerCountByDay(startDate, endDate);
326
 		List<Map<String, Object>> triggerCountMapAll = xxlJobLogDao.triggerCountByDay(startDate, endDate);
328
-		if (CollectionUtils.isNotEmpty(triggerCountMapAll)) {
327
+		if (triggerCountMapAll!=null && triggerCountMapAll.size()>0) {
329
 			for (Map<String, Object> item: triggerCountMapAll) {
328
 			for (Map<String, Object> item: triggerCountMapAll) {
330
 				String day = String.valueOf(item.get("triggerDay"));
329
 				String day = String.valueOf(item.get("triggerDay"));
331
 				int triggerDayCount = Integer.valueOf(String.valueOf(item.get("triggerDayCount")));
330
 				int triggerDayCount = Integer.valueOf(String.valueOf(item.get("triggerDayCount")));