diff --git a/README.md b/README.md index 3a3cefb7..0eec6e71 100644 --- a/README.md +++ b/README.md @@ -589,9 +589,11 @@ XXL-JOB会为每次调度请求生成一个单独的日志文件,通过重写L - 1、groupId从com.xxl改为com.xuxueli,为推送maven中央仓库做前期准备; - 2、系统版本不在维护在项目跟pom中,各个子模块单独配置版本配置,解决子模块无法单独编译的问题; - 3、底层RPC通讯,传输数据的字节长度统计规则优化,可节省50%数据传输量; -- 4、系统公共弹框功能,插件化; -- 5、底层表结构,表明统一大写; -- 6、调度中心,异常处理器JSON响应的ContentType修改,修复浏览器不识别的问题; +- 4、IJobHandler取消任务返回值,原通过返回值判断执行状态,逻辑改为:默认任务执行成功,仅在捕获异常时认定任务执行失败。 +- 5、系统公共弹框功能,插件化; +- 6、底层表结构,表明统一大写; +- 7、调度中心,异常处理器JSON响应的ContentType修改,修复浏览器不识别的问题; + Tips: 历史版本(V1.3.x)目前已经Release至稳定版本, 进入维护阶段, 地址见分支 [V1.3](https://github.com/xuxueli/xxl-job/tree/v1.3) 。新特性将会在master分支持续更新。 diff --git a/xxl-job-admin/src/main/webapp/WEB-INF/template/jobinfo/jobinfo.index.ftl b/xxl-job-admin/src/main/webapp/WEB-INF/template/jobinfo/jobinfo.index.ftl index 29412ce7..9686b28b 100644 --- a/xxl-job-admin/src/main/webapp/WEB-INF/template/jobinfo/jobinfo.index.ftl +++ b/xxl-job-admin/src/main/webapp/WEB-INF/template/jobinfo/jobinfo.index.ftl @@ -169,15 +169,13 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.xxl.job.core.handler.IJobHandler; -import com.xxl.job.core.handler.IJobHandler.JobHandleStatus; -public class DemoJobHandler extends IJobHandler { - private static transient Logger logger = LoggerFactory.getLogger(DemoJobHandler.class); +public class DemoGlueJobHandler extends IJobHandler { + private static transient Logger logger = LoggerFactory.getLogger(DemoGlueJobHandler.class); @Override - public JobHandleStatus execute(String... params) throws Exception { + public void execute(String... params) throws Exception { logger.info("XXL-JOB, Hello World."); - return JobHandleStatus.SUCCESS; } } diff --git a/xxl-job-admin/src/test/java/com/xxl/job/dao/impl/XxlJobLogTest.java b/xxl-job-admin/src/test/java/com/xxl/job/dao/impl/XxlJobLogTest.java index 7df61b4a..af49f830 100644 --- a/xxl-job-admin/src/test/java/com/xxl/job/dao/impl/XxlJobLogTest.java +++ b/xxl-job-admin/src/test/java/com/xxl/job/dao/impl/XxlJobLogTest.java @@ -2,7 +2,6 @@ package com.xxl.job.dao.impl; import com.xxl.job.admin.core.model.XxlJobLog; import com.xxl.job.admin.dao.IXxlJobLogDao; -import com.xxl.job.core.handler.IJobHandler; import com.xxl.job.core.router.model.ResponseModel; import org.junit.Test; import org.junit.runner.RunWith; @@ -45,7 +44,7 @@ public class XxlJobLogTest { public void updateHandleInfo(){ XxlJobLog xxlJobLog = xxlJobLogDao.load(29); xxlJobLog.setHandleTime(new Date()); - xxlJobLog.setHandleStatus(IJobHandler.JobHandleStatus.SUCCESS.name()); + xxlJobLog.setHandleStatus(ResponseModel.SUCCESS); xxlJobLog.setHandleMsg("handle msg"); xxlJobLogDao.updateHandleInfo(xxlJobLog); } diff --git a/xxl-job-core/src/main/java/com/xxl/job/core/glue/GlueFactory.java b/xxl-job-core/src/main/java/com/xxl/job/core/glue/GlueFactory.java index 7c6ecfeb..278ec6c2 100644 --- a/xxl-job-core/src/main/java/com/xxl/job/core/glue/GlueFactory.java +++ b/xxl-job-core/src/main/java/com/xxl/job/core/glue/GlueFactory.java @@ -1,10 +1,9 @@ package com.xxl.job.core.glue; -import java.lang.reflect.Field; -import java.lang.reflect.Modifier; - -import javax.annotation.Resource; - +import com.xxl.job.core.glue.cache.LocalCache; +import com.xxl.job.core.glue.loader.GlueLoader; +import com.xxl.job.core.handler.IJobHandler; +import groovy.lang.GroovyClassLoader; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.BeansException; @@ -13,12 +12,9 @@ import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; import org.springframework.core.annotation.AnnotationUtils; -import com.xxl.job.core.glue.cache.LocalCache; -import com.xxl.job.core.glue.loader.GlueLoader; -import com.xxl.job.core.handler.IJobHandler; -import com.xxl.job.core.handler.IJobHandler.JobHandleStatus; - -import groovy.lang.GroovyClassLoader; +import javax.annotation.Resource; +import java.lang.reflect.Field; +import java.lang.reflect.Modifier; /** * glue factory, product class/object by name @@ -157,8 +153,8 @@ public class GlueFactory implements ApplicationContextAware { } // ----------------------------- util ----------------------------- - public static JobHandleStatus glue(String job_group, String job_name, String... params) throws Exception{ - return GlueFactory.glueFactory.loadInstance(job_group, job_name).execute(params); + public static void glue(String job_group, String job_name, String... params) throws Exception{ + GlueFactory.glueFactory.loadInstance(job_group, job_name).execute(params); } } diff --git a/xxl-job-core/src/main/java/com/xxl/job/core/handler/IJobHandler.java b/xxl-job-core/src/main/java/com/xxl/job/core/handler/IJobHandler.java index a845a911..e6c252ad 100644 --- a/xxl-job-core/src/main/java/com/xxl/job/core/handler/IJobHandler.java +++ b/xxl-job-core/src/main/java/com/xxl/job/core/handler/IJobHandler.java @@ -12,20 +12,9 @@ public abstract class IJobHandler extends HandlerRouter { * job handler

* the return Object will be and stored * @param params - * @return job status + * @return void, fail if catch exception * @throws Exception */ - public abstract JobHandleStatus execute(String... params) throws Exception; - - public static enum JobHandleStatus{ - /** - * handle success - */ - SUCCESS, - /** - * handle fail - */ - FAIL; - } + public abstract void execute(String... params) throws Exception; } diff --git a/xxl-job-core/src/main/java/com/xxl/job/core/handler/impl/GlueJobHandler.java b/xxl-job-core/src/main/java/com/xxl/job/core/handler/impl/GlueJobHandler.java index 1a3062bf..0fc3ca50 100644 --- a/xxl-job-core/src/main/java/com/xxl/job/core/handler/impl/GlueJobHandler.java +++ b/xxl-job-core/src/main/java/com/xxl/job/core/handler/impl/GlueJobHandler.java @@ -17,8 +17,8 @@ public class GlueJobHandler extends IJobHandler { } @Override - public JobHandleStatus execute(String... params) throws Exception { - return GlueFactory.glue(job_group, job_name, params); + public void execute(String... params) throws Exception { + GlueFactory.glue(job_group, job_name, params); } } diff --git a/xxl-job-core/src/main/java/com/xxl/job/core/router/thread/JobThread.java b/xxl-job-core/src/main/java/com/xxl/job/core/router/thread/JobThread.java index 4c8e6de5..0ab17723 100644 --- a/xxl-job-core/src/main/java/com/xxl/job/core/router/thread/JobThread.java +++ b/xxl-job-core/src/main/java/com/xxl/job/core/router/thread/JobThread.java @@ -1,9 +1,9 @@ package com.xxl.job.core.router.thread; import com.xxl.job.core.handler.IJobHandler; -import com.xxl.job.core.handler.IJobHandler.JobHandleStatus; import com.xxl.job.core.log.XxlJobFileAppender; import com.xxl.job.core.router.model.RequestModel; +import com.xxl.job.core.router.model.ResponseModel; import org.eclipse.jetty.util.ConcurrentHashSet; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -74,15 +74,16 @@ public class JobThread extends Thread{ ? (String[])(Arrays.asList(triggerDate.getExecutorParams().split(",")).toArray()) : null; // handle job - JobHandleStatus _status = JobHandleStatus.FAIL; + String _status = ResponseModel.SUCCESS; String _msg = null; try { XxlJobFileAppender.contextHolder.set(String.valueOf(triggerDate.getLogId())); logger.info("----------- xxl-job job handle start -----------"); - _status = handler.execute(handlerParams); + handler.execute(handlerParams); } catch (Exception e) { logger.info("JobThread Exception:", e); + _status = ResponseModel.FAIL; StringWriter out = new StringWriter(); e.printStackTrace(new PrintWriter(out)); _msg = out.toString(); @@ -93,12 +94,12 @@ public class JobThread extends Thread{ // callback handler info if (!toStop) { // commonm - triggerDate.setStatus(_status.name()); + triggerDate.setStatus(_status); triggerDate.setMsg(_msg); TriggerCallbackThread.pushCallBack(triggerDate); } else { // is killed - triggerDate.setStatus(JobHandleStatus.FAIL.name()); + triggerDate.setStatus(ResponseModel.FAIL); triggerDate.setMsg(stopReason + " [业务运行中,被强制终止]"); TriggerCallbackThread.pushCallBack(triggerDate); } @@ -113,7 +114,7 @@ public class JobThread extends Thread{ RequestModel triggerDate = triggerQueue.poll(); if (triggerDate!=null) { // is killed - triggerDate.setStatus(JobHandleStatus.FAIL.name()); + triggerDate.setStatus(ResponseModel.FAIL); triggerDate.setMsg(stopReason + " [任务尚未执行,在调度队列中被终止]"); TriggerCallbackThread.pushCallBack(triggerDate); } diff --git a/xxl-job-executor-example/src/main/java/com/xxl/job/executor/service/jobhandler/DemoJobHandler.java b/xxl-job-executor-example/src/main/java/com/xxl/job/executor/service/jobhandler/DemoJobHandler.java index 00a4dcc9..98f9d881 100644 --- a/xxl-job-executor-example/src/main/java/com/xxl/job/executor/service/jobhandler/DemoJobHandler.java +++ b/xxl-job-executor-example/src/main/java/com/xxl/job/executor/service/jobhandler/DemoJobHandler.java @@ -1,13 +1,12 @@ package com.xxl.job.executor.service.jobhandler; -import java.util.concurrent.TimeUnit; - +import com.xxl.job.core.handler.IJobHandler; +import com.xxl.job.core.handler.annotation.JobHander; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; -import com.xxl.job.core.handler.IJobHandler; -import com.xxl.job.core.handler.annotation.JobHander; +import java.util.concurrent.TimeUnit; /** @@ -26,14 +25,13 @@ public class DemoJobHandler extends IJobHandler { private static transient Logger logger = LoggerFactory.getLogger(DemoJobHandler.class); @Override - public JobHandleStatus execute(String... params) throws Exception { + public void execute(String... params) throws Exception { logger.info("XXL-JOB, Hello World."); for (int i = 0; i < 2; i++) { logger.info("beat at:{}", i); TimeUnit.SECONDS.sleep(2); } - return JobHandleStatus.SUCCESS; } }