Przeglądaj źródła

调度中心升级 SpringBoot3 + JDK17;主要考虑到SpringBoot2漏洞问题且停止维护。

xuxueli 10 miesięcy temu
rodzic
commit
7b23fd2a62
21 zmienionych plików z 55 dodań i 54 usunięć
  1. 1 1
      doc/XXL-JOB官方文档.md
  2. 6 6
      pom.xml
  3. 4 4
      xxl-job-admin/src/main/java/com/xxl/job/admin/controller/IndexController.java
  4. 2 2
      xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobApiController.java
  5. 2 2
      xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobCodeController.java
  6. 2 2
      xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobGroupController.java
  7. 2 2
      xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobInfoController.java
  8. 2 2
      xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobLogController.java
  9. 2 2
      xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobUserController.java
  10. 4 4
      xxl-job-admin/src/main/java/com/xxl/job/admin/controller/interceptor/CookieInterceptor.java
  11. 3 3
      xxl-job-admin/src/main/java/com/xxl/job/admin/controller/interceptor/PermissionInterceptor.java
  12. 1 2
      xxl-job-admin/src/main/java/com/xxl/job/admin/controller/interceptor/WebMvcConfig.java
  13. 3 4
      xxl-job-admin/src/main/java/com/xxl/job/admin/controller/resolver/WebExceptionResolver.java
  14. 1 1
      xxl-job-admin/src/main/java/com/xxl/job/admin/core/alarm/impl/EmailJobAlarm.java
  15. 1 1
      xxl-job-admin/src/main/java/com/xxl/job/admin/core/conf/XxlJobAdminConfig.java
  16. 3 3
      xxl-job-admin/src/main/java/com/xxl/job/admin/core/util/CookieUtil.java
  17. 3 3
      xxl-job-admin/src/main/java/com/xxl/job/admin/service/impl/LoginService.java
  18. 1 1
      xxl-job-admin/src/main/java/com/xxl/job/admin/service/impl/XxlJobServiceImpl.java
  19. 4 5
      xxl-job-core/pom.xml
  20. 6 0
      xxl-job-core/src/main/java/com/xxl/job/core/glue/GlueFactory.java
  21. 2 4
      xxl-job-core/src/main/java/com/xxl/job/core/glue/impl/SpringGlueFactory.java

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

@@ -2439,7 +2439,7 @@ public void execute() {
 - b、计划下个大版本升级 v3.0,将会基于 jdk17 与 springboot3.x 构建;版本v2.5.x将会继续维护,问题及漏洞将会及时跟进修复。 
 
 ### 7.37 版本 v3.0.0 Release Notes[规划中]
-- 1、[规划中]调度中心升级 SpringBoot3 + JDK17;解决SpringBoot2.x老版本漏洞问题;
+- 1、调度中心升级 SpringBoot3 + JDK17;主要考虑到SpringBoot2漏洞问题且停止维护。
 - 2、[规划中]登陆态Token生成逻辑优化,混淆登陆时间属性,降低token泄漏风险;
 
 

+ 6 - 6
pom.xml

@@ -21,8 +21,8 @@
 		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
 		<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
 		<maven.compiler.encoding>UTF-8</maven.compiler.encoding>
-		<maven.compiler.source>1.8</maven.compiler.source>
-		<maven.compiler.target>1.8</maven.compiler.target>
+		<maven.compiler.source>17</maven.compiler.source>
+		<maven.compiler.target>17</maven.compiler.target>
 		<maven.test.skip>true</maven.test.skip>
 		<!-- plugin -->
 		<maven-source-plugin.version>3.3.1</maven-source-plugin.version>
@@ -31,15 +31,15 @@
 		<!-- base -->
 		<slf4j-api.version>2.0.16</slf4j-api.version>
 		<junit-jupiter.version>5.11.4</junit-jupiter.version>
-		<javax.annotation-api.version>1.3.2</javax.annotation-api.version>
+		<jakarta.annotation-api.version>3.0.0</jakarta.annotation-api.version>
 		<!-- net -->
 		<netty.version>4.1.116.Final</netty.version>
 		<gson.version>2.11.0</gson.version>
 		<!-- spring -->
-		<spring.version>5.3.39</spring.version>
-		<spring-boot.version>2.7.18</spring-boot.version>
+		<spring.version>6.2.1</spring.version>
+		<spring-boot.version>3.4.1</spring-boot.version>
 		<!-- db -->
-		<mybatis-spring-boot-starter.version>2.3.2</mybatis-spring-boot-starter.version>
+		<mybatis-spring-boot-starter.version>3.0.4</mybatis-spring-boot-starter.version>
 		<mysql-connector-j.version>9.1.0</mysql-connector-j.version>
 		<!-- dynamic language -->
 		<groovy.version>4.0.24</groovy.version>

+ 4 - 4
xxl-job-admin/src/main/java/com/xxl/job/admin/controller/IndexController.java

@@ -4,6 +4,9 @@ import com.xxl.job.admin.controller.annotation.PermissionLimit;
 import com.xxl.job.admin.service.impl.LoginService;
 import com.xxl.job.admin.service.XxlJobService;
 import com.xxl.job.core.biz.model.ReturnT;
+import jakarta.annotation.Resource;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
 import org.springframework.beans.propertyeditors.CustomDateEditor;
 import org.springframework.stereotype.Controller;
 import org.springframework.ui.Model;
@@ -15,9 +18,6 @@ import org.springframework.web.bind.annotation.ResponseBody;
 import org.springframework.web.servlet.ModelAndView;
 import org.springframework.web.servlet.view.RedirectView;
 
-import javax.annotation.Resource;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
 import java.text.SimpleDateFormat;
 import java.util.Date;
 import java.util.Map;
@@ -53,7 +53,7 @@ public class IndexController {
 	
 	@RequestMapping("/toLogin")
 	@PermissionLimit(limit=false)
-	public ModelAndView toLogin(HttpServletRequest request, HttpServletResponse response,ModelAndView modelAndView) {
+	public ModelAndView toLogin(HttpServletRequest request, HttpServletResponse response, ModelAndView modelAndView) {
 		if (loginService.ifLogin(request, response) != null) {
 			modelAndView.setView(new RedirectView("/",true,false));
 			return modelAndView;

+ 2 - 2
xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobApiController.java

@@ -8,14 +8,14 @@ import com.xxl.job.core.biz.model.RegistryParam;
 import com.xxl.job.core.biz.model.ReturnT;
 import com.xxl.job.core.util.GsonTool;
 import com.xxl.job.core.util.XxlJobRemotingUtil;
+import jakarta.annotation.Resource;
+import jakarta.servlet.http.HttpServletRequest;
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.ResponseBody;
 
-import javax.annotation.Resource;
-import javax.servlet.http.HttpServletRequest;
 import java.util.List;
 
 /**

+ 2 - 2
xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobCodeController.java

@@ -8,13 +8,13 @@ import com.xxl.job.admin.dao.XxlJobInfoDao;
 import com.xxl.job.admin.dao.XxlJobLogGlueDao;
 import com.xxl.job.core.biz.model.ReturnT;
 import com.xxl.job.core.glue.GlueTypeEnum;
+import jakarta.annotation.Resource;
+import jakarta.servlet.http.HttpServletRequest;
 import org.springframework.stereotype.Controller;
 import org.springframework.ui.Model;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.ResponseBody;
 
-import javax.annotation.Resource;
-import javax.servlet.http.HttpServletRequest;
 import java.util.Date;
 import java.util.List;
 

+ 2 - 2
xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobGroupController.java

@@ -9,14 +9,14 @@ import com.xxl.job.admin.dao.XxlJobInfoDao;
 import com.xxl.job.admin.dao.XxlJobRegistryDao;
 import com.xxl.job.core.biz.model.ReturnT;
 import com.xxl.job.core.enums.RegistryConfig;
+import jakarta.annotation.Resource;
+import jakarta.servlet.http.HttpServletRequest;
 import org.springframework.stereotype.Controller;
 import org.springframework.ui.Model;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.ResponseBody;
 
-import javax.annotation.Resource;
-import javax.servlet.http.HttpServletRequest;
 import java.util.*;
 
 /**

+ 2 - 2
xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobInfoController.java

@@ -16,6 +16,8 @@ import com.xxl.job.core.biz.model.ReturnT;
 import com.xxl.job.core.enums.ExecutorBlockStrategyEnum;
 import com.xxl.job.core.glue.GlueTypeEnum;
 import com.xxl.job.core.util.DateUtil;
+import jakarta.annotation.Resource;
+import jakarta.servlet.http.HttpServletRequest;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.stereotype.Controller;
@@ -24,8 +26,6 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.ResponseBody;
 
-import javax.annotation.Resource;
-import javax.servlet.http.HttpServletRequest;
 import java.util.*;
 
 /**

+ 2 - 2
xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobLogController.java

@@ -17,6 +17,8 @@ import com.xxl.job.core.biz.model.LogParam;
 import com.xxl.job.core.biz.model.LogResult;
 import com.xxl.job.core.biz.model.ReturnT;
 import com.xxl.job.core.util.DateUtil;
+import jakarta.annotation.Resource;
+import jakarta.servlet.http.HttpServletRequest;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.stereotype.Controller;
@@ -27,8 +29,6 @@ import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.ResponseBody;
 import org.springframework.web.util.HtmlUtils;
 
-import javax.annotation.Resource;
-import javax.servlet.http.HttpServletRequest;
 import java.util.Date;
 import java.util.HashMap;
 import java.util.List;

+ 2 - 2
xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobUserController.java

@@ -8,6 +8,8 @@ import com.xxl.job.admin.core.util.I18nUtil;
 import com.xxl.job.admin.dao.XxlJobGroupDao;
 import com.xxl.job.admin.dao.XxlJobUserDao;
 import com.xxl.job.core.biz.model.ReturnT;
+import jakarta.annotation.Resource;
+import jakarta.servlet.http.HttpServletRequest;
 import org.springframework.stereotype.Controller;
 import org.springframework.ui.Model;
 import org.springframework.util.DigestUtils;
@@ -16,8 +18,6 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.ResponseBody;
 
-import javax.annotation.Resource;
-import javax.servlet.http.HttpServletRequest;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;

+ 4 - 4
xxl-job-admin/src/main/java/com/xxl/job/admin/controller/interceptor/CookieInterceptor.java

@@ -2,13 +2,13 @@ package com.xxl.job.admin.controller.interceptor;
 
 import com.xxl.job.admin.core.util.FtlUtil;
 import com.xxl.job.admin.core.util.I18nUtil;
+import jakarta.servlet.http.Cookie;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
 import org.springframework.stereotype.Component;
 import org.springframework.web.servlet.AsyncHandlerInterceptor;
 import org.springframework.web.servlet.ModelAndView;
 
-import javax.servlet.http.Cookie;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
 import java.util.HashMap;
 
 /**
@@ -21,7 +21,7 @@ public class CookieInterceptor implements AsyncHandlerInterceptor {
 
 	@Override
 	public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
-			ModelAndView modelAndView) throws Exception {
+						   ModelAndView modelAndView) throws Exception {
 
 		// cookie
 		if (modelAndView!=null && request.getCookies()!=null && request.getCookies().length>0) {

+ 3 - 3
xxl-job-admin/src/main/java/com/xxl/job/admin/controller/interceptor/PermissionInterceptor.java

@@ -5,13 +5,13 @@ import com.xxl.job.admin.core.model.XxlJobGroup;
 import com.xxl.job.admin.core.model.XxlJobUser;
 import com.xxl.job.admin.core.util.I18nUtil;
 import com.xxl.job.admin.service.impl.LoginService;
+import jakarta.annotation.Resource;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
 import org.springframework.stereotype.Component;
 import org.springframework.web.method.HandlerMethod;
 import org.springframework.web.servlet.AsyncHandlerInterceptor;
 
-import javax.annotation.Resource;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;

+ 1 - 2
xxl-job-admin/src/main/java/com/xxl/job/admin/controller/interceptor/WebMvcConfig.java

@@ -1,11 +1,10 @@
 package com.xxl.job.admin.controller.interceptor;
 
+import jakarta.annotation.Resource;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
 import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
 
-import javax.annotation.Resource;
-
 /**
  * web mvc config
  *

+ 3 - 4
xxl-job-admin/src/main/java/com/xxl/job/admin/controller/resolver/WebExceptionResolver.java

@@ -3,6 +3,8 @@ package com.xxl.job.admin.controller.resolver;
 import com.xxl.job.admin.core.exception.XxlJobException;
 import com.xxl.job.core.biz.model.ReturnT;
 import com.xxl.job.admin.core.util.JacksonUtil;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.stereotype.Component;
@@ -11,8 +13,6 @@ import org.springframework.web.method.HandlerMethod;
 import org.springframework.web.servlet.HandlerExceptionResolver;
 import org.springframework.web.servlet.ModelAndView;
 
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
 
 /**
@@ -25,8 +25,7 @@ public class WebExceptionResolver implements HandlerExceptionResolver {
 	private static transient Logger logger = LoggerFactory.getLogger(WebExceptionResolver.class);
 
 	@Override
-	public ModelAndView resolveException(HttpServletRequest request,
-			HttpServletResponse response, Object handler, Exception ex) {
+	public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {
 
 		if (!(ex instanceof XxlJobException)) {
 			logger.error("WebExceptionResolver:{}", ex);

+ 1 - 1
xxl-job-admin/src/main/java/com/xxl/job/admin/core/alarm/impl/EmailJobAlarm.java

@@ -7,12 +7,12 @@ import com.xxl.job.admin.core.model.XxlJobInfo;
 import com.xxl.job.admin.core.model.XxlJobLog;
 import com.xxl.job.admin.core.util.I18nUtil;
 import com.xxl.job.core.biz.model.ReturnT;
+import jakarta.mail.internet.MimeMessage;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.mail.javamail.MimeMessageHelper;
 import org.springframework.stereotype.Component;
 
-import javax.mail.internet.MimeMessage;
 import java.text.MessageFormat;
 import java.util.Arrays;
 import java.util.HashSet;

+ 1 - 1
xxl-job-admin/src/main/java/com/xxl/job/admin/core/conf/XxlJobAdminConfig.java

@@ -3,13 +3,13 @@ package com.xxl.job.admin.core.conf;
 import com.xxl.job.admin.core.alarm.JobAlarmer;
 import com.xxl.job.admin.core.scheduler.XxlJobScheduler;
 import com.xxl.job.admin.dao.*;
+import jakarta.annotation.Resource;
 import org.springframework.beans.factory.DisposableBean;
 import org.springframework.beans.factory.InitializingBean;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.mail.javamail.JavaMailSender;
 import org.springframework.stereotype.Component;
 
-import javax.annotation.Resource;
 import javax.sql.DataSource;
 import java.util.Arrays;
 

+ 3 - 3
xxl-job-admin/src/main/java/com/xxl/job/admin/core/util/CookieUtil.java

@@ -1,8 +1,8 @@
 package com.xxl.job.admin.core.util;
 
-import javax.servlet.http.Cookie;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.Cookie;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
 
 /**
  * Cookie.Util

+ 3 - 3
xxl-job-admin/src/main/java/com/xxl/job/admin/service/impl/LoginService.java

@@ -6,12 +6,12 @@ import com.xxl.job.admin.core.util.I18nUtil;
 import com.xxl.job.admin.core.util.JacksonUtil;
 import com.xxl.job.admin.dao.XxlJobUserDao;
 import com.xxl.job.core.biz.model.ReturnT;
+import jakarta.annotation.Resource;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
 import org.springframework.stereotype.Service;
 import org.springframework.util.DigestUtils;
 
-import javax.annotation.Resource;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
 import java.math.BigInteger;
 
 /**

+ 1 - 1
xxl-job-admin/src/main/java/com/xxl/job/admin/service/impl/XxlJobServiceImpl.java

@@ -18,11 +18,11 @@ import com.xxl.job.core.biz.model.ReturnT;
 import com.xxl.job.core.enums.ExecutorBlockStrategyEnum;
 import com.xxl.job.core.glue.GlueTypeEnum;
 import com.xxl.job.core.util.DateUtil;
+import jakarta.annotation.Resource;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.stereotype.Service;
 
-import javax.annotation.Resource;
 import java.text.MessageFormat;
 import java.util.*;
 

+ 4 - 5
xxl-job-core/pom.xml

@@ -51,14 +51,13 @@
 			<version>${slf4j-api.version}</version>
 		</dependency>
 
-		<!-- javax.annotation-api -->
+		<!-- jakarta.annotation-api -->
 		<dependency>
-			<groupId>javax.annotation</groupId>
-			<artifactId>javax.annotation-api</artifactId>
-			<version>${javax.annotation-api.version}</version>
+			<groupId>jakarta.annotation</groupId>
+			<artifactId>jakarta.annotation-api</artifactId>
+			<version>${jakarta.annotation-api.version}</version>
 			<scope>provided</scope>
 		</dependency>
-
 	</dependencies>
 
 </project>

+ 6 - 0
xxl-job-core/src/main/java/com/xxl/job/core/glue/GlueFactory.java

@@ -21,6 +21,12 @@ public class GlueFactory {
 	public static GlueFactory getInstance(){
 		return glueFactory;
 	}
+
+	/**
+	 * refresh instance by type
+	 *
+	 * @param type		0-frameless, 1-spring;
+	 */
 	public static void refreshInstance(int type){
 		if (type == 0) {
 			glueFactory = new GlueFactory();

+ 2 - 4
xxl-job-core/src/main/java/com/xxl/job/core/glue/impl/SpringGlueFactory.java

@@ -2,13 +2,13 @@ package com.xxl.job.core.glue.impl;
 
 import com.xxl.job.core.executor.impl.XxlJobSpringExecutor;
 import com.xxl.job.core.glue.GlueFactory;
+import jakarta.annotation.Resource;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.core.annotation.AnnotationUtils;
 
-import javax.annotation.Resource;
 import java.lang.reflect.Field;
 import java.lang.reflect.Modifier;
 
@@ -68,9 +68,7 @@ public class SpringGlueFactory extends GlueFactory {
                 field.setAccessible(true);
                 try {
                     field.set(instance, fieldBean);
-                } catch (IllegalArgumentException e) {
-                    logger.error(e.getMessage(), e);
-                } catch (IllegalAccessException e) {
+                } catch (Exception e) {
                     logger.error(e.getMessage(), e);
                 }
             }