From d3a88e41cdf77ed52bdd961d7de7d9dd6f0b43a2 Mon Sep 17 00:00:00 2001 From: xuxueli <931591021@qq.com> Date: Sat, 11 Jan 2025 17:34:24 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E5=BA=A6=E4=B8=AD=E5=BF=83=E5=8D=87?= =?UTF-8?q?=E7=BA=A7=20SpringBoot3=20+=20JDK17=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/XXL-JOB官方文档.md | 2 +- xxl-job-admin/pom.xml | 2 +- .../job/admin/controller/IndexController.java | 14 +++++----- .../admin/controller/JobCodeController.java | 9 +++++-- .../admin/controller/JobGroupController.java | 11 ++++---- .../admin/controller/JobInfoController.java | 27 ++++++++++++------- .../admin/controller/JobLogController.java | 24 ++++++++++------- .../admin/controller/JobUserController.java | 13 +++++---- .../interceptor/PermissionInterceptor.java | 16 +++++++++-- .../templates/common/common.macro.ftl | 4 +-- .../templates/joblog/joblog.index.ftl | 2 +- .../controller/JobInfoControllerTest.java | 3 +-- ...n.java => XxlJobFramelessApplication.java} | 4 +-- .../pom.xml | 2 +- 14 files changed, 85 insertions(+), 48 deletions(-) rename xxl-job-executor-samples/xxl-job-executor-sample-frameless/src/main/java/com/xxl/job/executor/sample/frameless/{FramelessApplication.java => XxlJobFramelessApplication.java} (86%) diff --git a/doc/XXL-JOB官方文档.md b/doc/XXL-JOB官方文档.md index be96f932..4f2f9717 100644 --- a/doc/XXL-JOB官方文档.md +++ b/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漏洞问题且停止维护。 +- 1、调度中心升级 SpringBoot3 + JDK17。 - 2、[规划中]登陆态Token生成逻辑优化,混淆登陆时间属性,降低token泄漏风险; diff --git a/xxl-job-admin/pom.xml b/xxl-job-admin/pom.xml index f554af4e..8c3c6092 100644 --- a/xxl-job-admin/pom.xml +++ b/xxl-job-admin/pom.xml @@ -84,7 +84,7 @@ org.springframework.boot spring-boot-maven-plugin - ${spring-boot.version} + diff --git a/xxl-job-admin/src/main/java/com/xxl/job/admin/controller/IndexController.java b/xxl-job-admin/src/main/java/com/xxl/job/admin/controller/IndexController.java index c6f165f3..56765ae6 100644 --- a/xxl-job-admin/src/main/java/com/xxl/job/admin/controller/IndexController.java +++ b/xxl-job-admin/src/main/java/com/xxl/job/admin/controller/IndexController.java @@ -11,10 +11,7 @@ import org.springframework.beans.propertyeditors.CustomDateEditor; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.WebDataBinder; -import org.springframework.web.bind.annotation.InitBinder; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestMethod; -import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.*; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.view.RedirectView; @@ -46,7 +43,7 @@ public class IndexController { @RequestMapping("/chartInfo") @ResponseBody - public ReturnT> chartInfo(Date startDate, Date endDate) { + public ReturnT> chartInfo(@RequestParam("startDate") Date startDate, @RequestParam("endDate") Date endDate) { ReturnT> chartInfo = xxlJobService.chartInfo(startDate, endDate); return chartInfo; } @@ -64,7 +61,12 @@ public class IndexController { @RequestMapping(value="login", method=RequestMethod.POST) @ResponseBody @PermissionLimit(limit=false) - public ReturnT loginDo(HttpServletRequest request, HttpServletResponse response, String userName, String password, String ifRemember){ + public ReturnT loginDo(HttpServletRequest request, + HttpServletResponse response, + @RequestParam("userName") String userName, + @RequestParam("password") String password, + @RequestParam(value = "ifRemember", required = false) String ifRemember){ + boolean ifRem = (ifRemember!=null && ifRemember.trim().length()>0 && "on".equals(ifRemember))?true:false; return loginService.login(request, response, userName, password, ifRem); } diff --git a/xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobCodeController.java b/xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobCodeController.java index e0ba0e5b..bfcac94f 100644 --- a/xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobCodeController.java +++ b/xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobCodeController.java @@ -13,6 +13,7 @@ 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 java.util.Date; @@ -32,7 +33,7 @@ public class JobCodeController { private XxlJobLogGlueDao xxlJobLogGlueDao; @RequestMapping - public String index(HttpServletRequest request, Model model, int jobId) { + public String index(HttpServletRequest request, Model model, @RequestParam("jobId") int jobId) { XxlJobInfo jobInfo = xxlJobInfoDao.loadById(jobId); List jobLogGlues = xxlJobLogGlueDao.findByJobId(jobId); @@ -56,7 +57,11 @@ public class JobCodeController { @RequestMapping("/save") @ResponseBody - public ReturnT save(HttpServletRequest request, int id, String glueSource, String glueRemark) { + public ReturnT save(HttpServletRequest request, + @RequestParam("id") int id, + @RequestParam("glueSource") String glueSource, + @RequestParam("glueRemark") String glueRemark) { + // valid if (glueRemark==null) { return new ReturnT(500, (I18nUtil.getString("system_please_input") + I18nUtil.getString("jobinfo_glue_remark")) ); diff --git a/xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobGroupController.java b/xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobGroupController.java index 982310f8..5f96df9a 100644 --- a/xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobGroupController.java +++ b/xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobGroupController.java @@ -44,9 +44,10 @@ public class JobGroupController { @ResponseBody @PermissionLimit(adminuser = true) public Map pageList(HttpServletRequest request, - @RequestParam(required = false, defaultValue = "0") int start, - @RequestParam(required = false, defaultValue = "10") int length, - String appname, String title) { + @RequestParam(value = "start", required = false, defaultValue = "0") int start, + @RequestParam(value = "length", required = false, defaultValue = "10") int length, + @RequestParam("appname") String appname, + @RequestParam("title") String title) { // page query List list = xxlJobGroupDao.pageList(start, length, appname, title); @@ -176,7 +177,7 @@ public class JobGroupController { @RequestMapping("/remove") @ResponseBody @PermissionLimit(adminuser = true) - public ReturnT remove(int id){ + public ReturnT remove(@RequestParam("id") int id){ // valid int count = xxlJobInfoDao.pageListCount(0, 10, id, -1, null, null, null); @@ -196,7 +197,7 @@ public class JobGroupController { @RequestMapping("/loadById") @ResponseBody @PermissionLimit(adminuser = true) - public ReturnT loadById(int id){ + public ReturnT loadById(@RequestParam("id") int id){ XxlJobGroup jobGroup = xxlJobGroupDao.load(id); return jobGroup!=null?new ReturnT(jobGroup):new ReturnT(ReturnT.FAIL_CODE, null); } diff --git a/xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobInfoController.java b/xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobInfoController.java index 69e2a198..cce6e7cd 100644 --- a/xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobInfoController.java +++ b/xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobInfoController.java @@ -43,7 +43,7 @@ public class JobInfoController { private XxlJobService xxlJobService; @RequestMapping - public String index(HttpServletRequest request, Model model, @RequestParam(required = false, defaultValue = "-1") int jobGroup) { + public String index(HttpServletRequest request, Model model, @RequestParam(value = "jobGroup", required = false, defaultValue = "-1") int jobGroup) { // 枚举-字典 model.addAttribute("ExecutorRouteStrategyEnum", ExecutorRouteStrategyEnum.values()); // 路由策略-列表 @@ -69,9 +69,13 @@ public class JobInfoController { @RequestMapping("/pageList") @ResponseBody - public Map pageList(@RequestParam(required = false, defaultValue = "0") int start, - @RequestParam(required = false, defaultValue = "10") int length, - int jobGroup, int triggerStatus, String jobDesc, String executorHandler, String author) { + public Map pageList(@RequestParam(value = "start", required = false, defaultValue = "0") int start, + @RequestParam(value = "length", required = false, defaultValue = "10") int length, + @RequestParam("jobGroup") int jobGroup, + @RequestParam("triggerStatus") int triggerStatus, + @RequestParam("jobDesc") String jobDesc, + @RequestParam("executorHandler") String executorHandler, + @RequestParam("author") String author) { return xxlJobService.pageList(start, length, jobGroup, triggerStatus, jobDesc, executorHandler, author); } @@ -100,25 +104,29 @@ public class JobInfoController { @RequestMapping("/remove") @ResponseBody - public ReturnT remove(int id) { + public ReturnT remove(@RequestParam("id") int id) { return xxlJobService.remove(id); } @RequestMapping("/stop") @ResponseBody - public ReturnT pause(int id) { + public ReturnT pause(@RequestParam("id") int id) { return xxlJobService.stop(id); } @RequestMapping("/start") @ResponseBody - public ReturnT start(int id) { + public ReturnT start(@RequestParam("id") int id) { return xxlJobService.start(id); } @RequestMapping("/trigger") @ResponseBody - public ReturnT triggerJob(HttpServletRequest request, int id, String executorParam, String addressList) { + public ReturnT triggerJob(HttpServletRequest request, + @RequestParam("id") int id, + @RequestParam("executorParam") String executorParam, + @RequestParam("addressList") String addressList) { + // login user XxlJobUser loginUser = PermissionInterceptor.getLoginUser(request); // trigger @@ -127,7 +135,8 @@ public class JobInfoController { @RequestMapping("/nextTriggerTime") @ResponseBody - public ReturnT> nextTriggerTime(String scheduleType, String scheduleConf) { + public ReturnT> nextTriggerTime(@RequestParam("scheduleType") String scheduleType, + @RequestParam("scheduleConf") String scheduleConf) { XxlJobInfo paramXxlJobInfo = new XxlJobInfo(); paramXxlJobInfo.setScheduleType(scheduleType); diff --git a/xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobLogController.java b/xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobLogController.java index 96588001..45df783d 100644 --- a/xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobLogController.java +++ b/xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobLogController.java @@ -51,7 +51,7 @@ public class JobLogController { public XxlJobLogDao xxlJobLogDao; @RequestMapping - public String index(HttpServletRequest request, Model model, @RequestParam(required = false, defaultValue = "0") Integer jobId) { + public String index(HttpServletRequest request, Model model, @RequestParam(value = "jobId", required = false, defaultValue = "0") Integer jobId) { // 执行器列表 List jobGroupList_all = xxlJobGroupDao.findAll(); @@ -82,7 +82,7 @@ public class JobLogController { @RequestMapping("/getJobsByGroup") @ResponseBody - public ReturnT> getJobsByGroup(int jobGroup){ + public ReturnT> getJobsByGroup(@RequestParam("jobGroup") int jobGroup){ List list = xxlJobInfoDao.getJobsByGroup(jobGroup); return new ReturnT>(list); } @@ -90,9 +90,12 @@ public class JobLogController { @RequestMapping("/pageList") @ResponseBody public Map pageList(HttpServletRequest request, - @RequestParam(required = false, defaultValue = "0") int start, - @RequestParam(required = false, defaultValue = "10") int length, - int jobGroup, int jobId, int logStatus, String filterTime) { + @RequestParam(value = "start", required = false, defaultValue = "0") int start, + @RequestParam(value = "length", required = false, defaultValue = "10") int length, + @RequestParam("jobGroup") int jobGroup, + @RequestParam("jobId") int jobId, + @RequestParam("logStatus") int logStatus, + @RequestParam("filterTime") String filterTime) { // valid permission PermissionInterceptor.validJobGroupPermission(request, jobGroup); // 仅管理员支持查询全部;普通用户仅支持查询有权限的 jobGroup @@ -121,7 +124,7 @@ public class JobLogController { } @RequestMapping("/logDetailPage") - public String logDetailPage(int id, Model model){ + public String logDetailPage(@RequestParam("id") int id, Model model){ // base check ReturnT logStatue = ReturnT.SUCCESS; @@ -138,7 +141,7 @@ public class JobLogController { @RequestMapping("/logDetailCat") @ResponseBody - public ReturnT logDetailCat(long logId, int fromLineNum){ + public ReturnT logDetailCat(@RequestParam("logId") long logId, @RequestParam("fromLineNum") int fromLineNum){ try { // valid XxlJobLog jobLog = xxlJobLogDao.load(logId); // todo, need to improve performance @@ -173,7 +176,7 @@ public class JobLogController { @RequestMapping("/logKill") @ResponseBody - public ReturnT logKill(int id){ + public ReturnT logKill(@RequestParam("id") int id){ // base check XxlJobLog log = xxlJobLogDao.load(id); XxlJobInfo jobInfo = xxlJobInfoDao.loadById(log.getJobId()); @@ -207,7 +210,10 @@ public class JobLogController { @RequestMapping("/clearLog") @ResponseBody - public ReturnT clearLog(HttpServletRequest request, int jobGroup, int jobId, int type){ + public ReturnT clearLog(HttpServletRequest request, + @RequestParam("jobGroup") int jobGroup, + @RequestParam("jobId") int jobId, + @RequestParam("type") int type){ // valid permission PermissionInterceptor.validJobGroupPermission(request, jobGroup); diff --git a/xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobUserController.java b/xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobUserController.java index 32a3c2bd..a3c189f7 100644 --- a/xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobUserController.java +++ b/xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobUserController.java @@ -48,9 +48,10 @@ public class JobUserController { @RequestMapping("/pageList") @ResponseBody @PermissionLimit(adminuser = true) - public Map pageList(@RequestParam(required = false, defaultValue = "0") int start, - @RequestParam(required = false, defaultValue = "10") int length, - String username, int role) { + public Map pageList(@RequestParam(value = "start", required = false, defaultValue = "0") int start, + @RequestParam(value = "length", required = false, defaultValue = "10") int length, + @RequestParam("username") String username, + @RequestParam("role") int role) { // page list List list = xxlJobUserDao.pageList(start, length, username, role); @@ -137,7 +138,7 @@ public class JobUserController { @RequestMapping("/remove") @ResponseBody @PermissionLimit(adminuser = true) - public ReturnT remove(HttpServletRequest request, int id) { + public ReturnT remove(HttpServletRequest request, @RequestParam("id") int id) { // avoid opt login seft XxlJobUser loginUser = PermissionInterceptor.getLoginUser(request); @@ -151,7 +152,9 @@ public class JobUserController { @RequestMapping("/updatePwd") @ResponseBody - public ReturnT updatePwd(HttpServletRequest request, String password, String oldPassword){ + public ReturnT updatePwd(HttpServletRequest request, + @RequestParam("password") String password, + @RequestParam("oldPassword") String oldPassword){ // valid if (oldPassword==null || oldPassword.trim().length()==0){ diff --git a/xxl-job-admin/src/main/java/com/xxl/job/admin/controller/interceptor/PermissionInterceptor.java b/xxl-job-admin/src/main/java/com/xxl/job/admin/controller/interceptor/PermissionInterceptor.java index 2a10432f..95e902d9 100644 --- a/xxl-job-admin/src/main/java/com/xxl/job/admin/controller/interceptor/PermissionInterceptor.java +++ b/xxl-job-admin/src/main/java/com/xxl/job/admin/controller/interceptor/PermissionInterceptor.java @@ -54,7 +54,9 @@ public class PermissionInterceptor implements AsyncHandlerInterceptor { if (needAdminuser && loginUser.getRole()!=1) { throw new RuntimeException(I18nUtil.getString("system_permission_limit")); } - request.setAttribute(LoginService.LOGIN_IDENTITY_KEY, loginUser); // set loginUser, with request + + // set loginUser, with request + setLoginUser(request, loginUser); } return true; // proceed with the next interceptor @@ -63,6 +65,16 @@ public class PermissionInterceptor implements AsyncHandlerInterceptor { // -------------------- permission tool -------------------- + /** + * set loginUser + * + * @param request + * @param loginUser + */ + private static void setLoginUser(HttpServletRequest request, XxlJobUser loginUser){ + request.setAttribute("loginUser", loginUser); + } + /** * get loginUser * @@ -70,7 +82,7 @@ public class PermissionInterceptor implements AsyncHandlerInterceptor { * @return */ public static XxlJobUser getLoginUser(HttpServletRequest request){ - XxlJobUser loginUser = (XxlJobUser) request.getAttribute(LoginService.LOGIN_IDENTITY_KEY); // get loginUser, with request + XxlJobUser loginUser = (XxlJobUser) request.getAttribute("loginUser"); // get loginUser, with request return loginUser; } diff --git a/xxl-job-admin/src/main/resources/templates/common/common.macro.ftl b/xxl-job-admin/src/main/resources/templates/common/common.macro.ftl index 588f7494..1a61dd39 100644 --- a/xxl-job-admin/src/main/resources/templates/common/common.macro.ftl +++ b/xxl-job-admin/src/main/resources/templates/common/common.macro.ftl @@ -84,7 +84,7 @@ <#-- login user -->