From f7fa721690cd61b030ab8fedc4c8c2a634b72cea Mon Sep 17 00:00:00 2001 From: "xueli.xue" Date: Wed, 18 Aug 2021 21:07:11 +0800 Subject: [PATCH] code optimize --- .../admin/core/alarm/impl/EmailJobAlarm.java | 1 + .../xxl/job/core/executor/XxlJobExecutor.java | 105 ++++++++++-------- .../executor/impl/XxlJobSimpleExecutor.java | 5 +- .../executor/impl/XxlJobSpringExecutor.java | 5 +- .../core/thread/ExecutorRegistryThread.java | 2 +- .../core/thread/JobLogFileCleanThread.java | 2 +- .../core/thread/TriggerCallbackThread.java | 4 +- .../xxl/job/core/util/XxlJobRemotingUtil.java | 4 + .../frameless/FramelessApplication.java | 4 +- .../config/FrameLessXxlJobConfig.java | 4 +- .../frameless/jobhandler/SampleXxlJob.java | 2 +- .../service/jobhandler/SampleXxlJob.java | 20 ---- 12 files changed, 78 insertions(+), 80 deletions(-) diff --git a/xxl-job-admin/src/main/java/com/xxl/job/admin/core/alarm/impl/EmailJobAlarm.java b/xxl-job-admin/src/main/java/com/xxl/job/admin/core/alarm/impl/EmailJobAlarm.java index e7290d76..16e52184 100644 --- a/xxl-job-admin/src/main/java/com/xxl/job/admin/core/alarm/impl/EmailJobAlarm.java +++ b/xxl-job-admin/src/main/java/com/xxl/job/admin/core/alarm/impl/EmailJobAlarm.java @@ -32,6 +32,7 @@ public class EmailJobAlarm implements JobAlarm { * * @param jobLog */ + @Override public boolean doAlarm(XxlJobInfo info, XxlJobLog jobLog){ boolean alarmResult = true; diff --git a/xxl-job-core/src/main/java/com/xxl/job/core/executor/XxlJobExecutor.java b/xxl-job-core/src/main/java/com/xxl/job/core/executor/XxlJobExecutor.java index 4fa2eea6..70a2dad9 100644 --- a/xxl-job-core/src/main/java/com/xxl/job/core/executor/XxlJobExecutor.java +++ b/xxl-job-core/src/main/java/com/xxl/job/core/executor/XxlJobExecutor.java @@ -84,10 +84,10 @@ public class XxlJobExecutor { initEmbedServer(address, ip, port, appname, accessToken); } public void destroy(){ - // destory executor-server + // destroy executor-server stopEmbedServer(); - // destory jobThreadRepository + // destroy jobThreadRepository if (jobThreadRepository.size() > 0) { for (Map.Entry item: jobThreadRepository.entrySet()) { JobThread oldJobThread = removeJobThread(item.getKey(), "web container destroy and kill the job."); @@ -105,58 +105,14 @@ public class XxlJobExecutor { jobHandlerRepository.clear(); - // destory JobLogFileCleanThread + // destroy JobLogFileCleanThread JobLogFileCleanThread.getInstance().toStop(); - // destory TriggerCallbackThread + // destroy TriggerCallbackThread TriggerCallbackThread.getInstance().toStop(); } - protected void registerJobHandler(XxlJob xxlJob, Object bean, Method executeMethod){ - if (xxlJob == null) { - return; - } - - String name = xxlJob.value(); - //make and simplify the variables since they'll be called several times later - Class clazz = bean.getClass(); - String methodName = executeMethod.getName(); - if (name.trim().length() == 0) { - throw new RuntimeException("xxl-job method-jobhandler name invalid, for[" + clazz + "#" + methodName + "] ."); - } - if (loadJobHandler(name) != null) { - throw new RuntimeException("xxl-job jobhandler[" + name + "] naming conflicts."); - } - - executeMethod.setAccessible(true); - - // init and destroy - Method initMethod = null; - Method destroyMethod = null; - - if (xxlJob.init().trim().length() > 0) { - try { - initMethod = clazz.getDeclaredMethod(xxlJob.init()); - initMethod.setAccessible(true); - } catch (NoSuchMethodException e) { - throw new RuntimeException("xxl-job method-jobhandler initMethod invalid, for[" + clazz + "#" + methodName + "] ."); - } - } - if (xxlJob.destroy().trim().length() > 0) { - try { - destroyMethod = clazz.getDeclaredMethod(xxlJob.destroy()); - destroyMethod.setAccessible(true); - } catch (NoSuchMethodException e) { - throw new RuntimeException("xxl-job method-jobhandler destroyMethod invalid, for[" + clazz + "#" + methodName + "] ."); - } - } - - // registry jobhandler - registJobHandler(name, new MethodJobHandler(bean, executeMethod, initMethod, destroyMethod)); - - } - // ---------------------- admin-client (rpc invoker) ---------------------- private static List adminBizList; @@ -225,6 +181,59 @@ public class XxlJobExecutor { logger.info(">>>>>>>>>>> xxl-job register jobhandler success, name:{}, jobHandler:{}", name, jobHandler); return jobHandlerRepository.put(name, jobHandler); } + protected void registJobHandler(XxlJob xxlJob, Object bean, Method executeMethod){ + if (xxlJob == null) { + return; + } + + String name = xxlJob.value(); + //make and simplify the variables since they'll be called several times later + Class clazz = bean.getClass(); + String methodName = executeMethod.getName(); + if (name.trim().length() == 0) { + throw new RuntimeException("xxl-job method-jobhandler name invalid, for[" + clazz + "#" + methodName + "] ."); + } + if (loadJobHandler(name) != null) { + throw new RuntimeException("xxl-job jobhandler[" + name + "] naming conflicts."); + } + + // execute method + /*if (!(method.getParameterTypes().length == 1 && method.getParameterTypes()[0].isAssignableFrom(String.class))) { + throw new RuntimeException("xxl-job method-jobhandler param-classtype invalid, for[" + bean.getClass() + "#" + method.getName() + "] , " + + "The correct method format like \" public ReturnT execute(String param) \" ."); + } + if (!method.getReturnType().isAssignableFrom(ReturnT.class)) { + throw new RuntimeException("xxl-job method-jobhandler return-classtype invalid, for[" + bean.getClass() + "#" + method.getName() + "] , " + + "The correct method format like \" public ReturnT execute(String param) \" ."); + }*/ + + executeMethod.setAccessible(true); + + // init and destroy + Method initMethod = null; + Method destroyMethod = null; + + if (xxlJob.init().trim().length() > 0) { + try { + initMethod = clazz.getDeclaredMethod(xxlJob.init()); + initMethod.setAccessible(true); + } catch (NoSuchMethodException e) { + throw new RuntimeException("xxl-job method-jobhandler initMethod invalid, for[" + clazz + "#" + methodName + "] ."); + } + } + if (xxlJob.destroy().trim().length() > 0) { + try { + destroyMethod = clazz.getDeclaredMethod(xxlJob.destroy()); + destroyMethod.setAccessible(true); + } catch (NoSuchMethodException e) { + throw new RuntimeException("xxl-job method-jobhandler destroyMethod invalid, for[" + clazz + "#" + methodName + "] ."); + } + } + + // registry jobhandler + registJobHandler(name, new MethodJobHandler(bean, executeMethod, initMethod, destroyMethod)); + + } // ---------------------- job thread repository ---------------------- diff --git a/xxl-job-core/src/main/java/com/xxl/job/core/executor/impl/XxlJobSimpleExecutor.java b/xxl-job-core/src/main/java/com/xxl/job/core/executor/impl/XxlJobSimpleExecutor.java index b262f4a5..53efbb95 100644 --- a/xxl-job-core/src/main/java/com/xxl/job/core/executor/impl/XxlJobSimpleExecutor.java +++ b/xxl-job-core/src/main/java/com/xxl/job/core/executor/impl/XxlJobSimpleExecutor.java @@ -30,6 +30,7 @@ public class XxlJobSimpleExecutor extends XxlJobExecutor { } + @Override public void start() { // init JobHandler Repository (for method) @@ -43,6 +44,7 @@ public class XxlJobSimpleExecutor extends XxlJobExecutor { } } + @Override public void destroy() { super.destroy(); } @@ -62,7 +64,8 @@ public class XxlJobSimpleExecutor extends XxlJobExecutor { } for (Method executeMethod : methods) { XxlJob xxlJob = executeMethod.getAnnotation(XxlJob.class); - registerJobHandler(xxlJob, bean, executeMethod); + // registry + registJobHandler(xxlJob, bean, executeMethod); } } diff --git a/xxl-job-core/src/main/java/com/xxl/job/core/executor/impl/XxlJobSpringExecutor.java b/xxl-job-core/src/main/java/com/xxl/job/core/executor/impl/XxlJobSpringExecutor.java index 2a6829ec..3c2a67d5 100644 --- a/xxl-job-core/src/main/java/com/xxl/job/core/executor/impl/XxlJobSpringExecutor.java +++ b/xxl-job-core/src/main/java/com/xxl/job/core/executor/impl/XxlJobSpringExecutor.java @@ -105,7 +105,8 @@ public class XxlJobSpringExecutor extends XxlJobExecutor implements ApplicationC for (Map.Entry methodXxlJobEntry : annotatedMethods.entrySet()) { Method executeMethod = methodXxlJobEntry.getKey(); XxlJob xxlJob = methodXxlJobEntry.getValue(); - registerJobHandler(xxlJob, bean, executeMethod); + // regist + registJobHandler(xxlJob, bean, executeMethod); } } } @@ -115,7 +116,7 @@ public class XxlJobSpringExecutor extends XxlJobExecutor implements ApplicationC @Override public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { - this.applicationContext = applicationContext; + XxlJobSpringExecutor.applicationContext = applicationContext; } public static ApplicationContext getApplicationContext() { diff --git a/xxl-job-core/src/main/java/com/xxl/job/core/thread/ExecutorRegistryThread.java b/xxl-job-core/src/main/java/com/xxl/job/core/thread/ExecutorRegistryThread.java index ff657b21..e43a2a49 100644 --- a/xxl-job-core/src/main/java/com/xxl/job/core/thread/ExecutorRegistryThread.java +++ b/xxl-job-core/src/main/java/com/xxl/job/core/thread/ExecutorRegistryThread.java @@ -102,7 +102,7 @@ public class ExecutorRegistryThread { logger.error(e.getMessage(), e); } } - logger.info(">>>>>>>>>>> xxl-job, executor registry thread destory."); + logger.info(">>>>>>>>>>> xxl-job, executor registry thread destroy."); } }); diff --git a/xxl-job-core/src/main/java/com/xxl/job/core/thread/JobLogFileCleanThread.java b/xxl-job-core/src/main/java/com/xxl/job/core/thread/JobLogFileCleanThread.java index 8b983715..b5691542 100644 --- a/xxl-job-core/src/main/java/com/xxl/job/core/thread/JobLogFileCleanThread.java +++ b/xxl-job-core/src/main/java/com/xxl/job/core/thread/JobLogFileCleanThread.java @@ -96,7 +96,7 @@ public class JobLogFileCleanThread { } } } - logger.info(">>>>>>>>>>> xxl-job, executor JobLogFileCleanThread thread destory."); + logger.info(">>>>>>>>>>> xxl-job, executor JobLogFileCleanThread thread destroy."); } }); diff --git a/xxl-job-core/src/main/java/com/xxl/job/core/thread/TriggerCallbackThread.java b/xxl-job-core/src/main/java/com/xxl/job/core/thread/TriggerCallbackThread.java index 93eda40b..40acac00 100644 --- a/xxl-job-core/src/main/java/com/xxl/job/core/thread/TriggerCallbackThread.java +++ b/xxl-job-core/src/main/java/com/xxl/job/core/thread/TriggerCallbackThread.java @@ -95,7 +95,7 @@ public class TriggerCallbackThread { logger.error(e.getMessage(), e); } } - logger.info(">>>>>>>>>>> xxl-job, executor callback thread destory."); + logger.info(">>>>>>>>>>> xxl-job, executor callback thread destroy."); } }); @@ -125,7 +125,7 @@ public class TriggerCallbackThread { } } } - logger.info(">>>>>>>>>>> xxl-job, executor retry callback thread destory."); + logger.info(">>>>>>>>>>> xxl-job, executor retry callback thread destroy."); } }); triggerRetryCallbackThread.setDaemon(true); diff --git a/xxl-job-core/src/main/java/com/xxl/job/core/util/XxlJobRemotingUtil.java b/xxl-job-core/src/main/java/com/xxl/job/core/util/XxlJobRemotingUtil.java index 8d781c31..eac2dd00 100644 --- a/xxl-job-core/src/main/java/com/xxl/job/core/util/XxlJobRemotingUtil.java +++ b/xxl-job-core/src/main/java/com/xxl/job/core/util/XxlJobRemotingUtil.java @@ -34,17 +34,21 @@ public class XxlJobRemotingUtil { logger.error(e.getMessage(), e); } connection.setHostnameVerifier(new HostnameVerifier() { + @Override public boolean verify(String hostname, SSLSession session) { return true; } }); } private static final TrustManager[] trustAllCerts = new TrustManager[]{new X509TrustManager() { + @Override public java.security.cert.X509Certificate[] getAcceptedIssuers() { return new java.security.cert.X509Certificate[]{}; } + @Override public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException { } + @Override public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException { } }}; diff --git a/xxl-job-executor-samples/xxl-job-executor-sample-frameless/src/main/java/com/xxl/job/executor/sample/frameless/FramelessApplication.java b/xxl-job-executor-samples/xxl-job-executor-sample-frameless/src/main/java/com/xxl/job/executor/sample/frameless/FramelessApplication.java index e259b8f5..1e7cb7dd 100644 --- a/xxl-job-executor-samples/xxl-job-executor-sample-frameless/src/main/java/com/xxl/job/executor/sample/frameless/FramelessApplication.java +++ b/xxl-job-executor-samples/xxl-job-executor-sample-frameless/src/main/java/com/xxl/job/executor/sample/frameless/FramelessApplication.java @@ -29,8 +29,8 @@ public class FramelessApplication { } catch (Exception e) { logger.error(e.getMessage(), e); } finally { - // destory - FrameLessXxlJobConfig.getInstance().destoryXxlJobExecutor(); + // destroy + FrameLessXxlJobConfig.getInstance().destroyXxlJobExecutor(); } } diff --git a/xxl-job-executor-samples/xxl-job-executor-sample-frameless/src/main/java/com/xxl/job/executor/sample/frameless/config/FrameLessXxlJobConfig.java b/xxl-job-executor-samples/xxl-job-executor-sample-frameless/src/main/java/com/xxl/job/executor/sample/frameless/config/FrameLessXxlJobConfig.java index eb916ad2..1d882dc5 100644 --- a/xxl-job-executor-samples/xxl-job-executor-sample-frameless/src/main/java/com/xxl/job/executor/sample/frameless/config/FrameLessXxlJobConfig.java +++ b/xxl-job-executor-samples/xxl-job-executor-sample-frameless/src/main/java/com/xxl/job/executor/sample/frameless/config/FrameLessXxlJobConfig.java @@ -56,9 +56,9 @@ public class FrameLessXxlJobConfig { } /** - * destory + * destroy */ - public void destoryXxlJobExecutor() { + public void destroyXxlJobExecutor() { if (xxlJobExecutor != null) { xxlJobExecutor.destroy(); } diff --git a/xxl-job-executor-samples/xxl-job-executor-sample-frameless/src/main/java/com/xxl/job/executor/sample/frameless/jobhandler/SampleXxlJob.java b/xxl-job-executor-samples/xxl-job-executor-sample-frameless/src/main/java/com/xxl/job/executor/sample/frameless/jobhandler/SampleXxlJob.java index d3d955a7..a4eefd14 100644 --- a/xxl-job-executor-samples/xxl-job-executor-sample-frameless/src/main/java/com/xxl/job/executor/sample/frameless/jobhandler/SampleXxlJob.java +++ b/xxl-job-executor-samples/xxl-job-executor-sample-frameless/src/main/java/com/xxl/job/executor/sample/frameless/jobhandler/SampleXxlJob.java @@ -244,7 +244,7 @@ public class SampleXxlJob { logger.info("init"); } public void destroy(){ - logger.info("destory"); + logger.info("destroy"); } diff --git a/xxl-job-executor-samples/xxl-job-executor-sample-springboot/src/main/java/com/xxl/job/executor/service/jobhandler/SampleXxlJob.java b/xxl-job-executor-samples/xxl-job-executor-sample-springboot/src/main/java/com/xxl/job/executor/service/jobhandler/SampleXxlJob.java index 404416db..759d6625 100644 --- a/xxl-job-executor-samples/xxl-job-executor-sample-springboot/src/main/java/com/xxl/job/executor/service/jobhandler/SampleXxlJob.java +++ b/xxl-job-executor-samples/xxl-job-executor-sample-springboot/src/main/java/com/xxl/job/executor/service/jobhandler/SampleXxlJob.java @@ -245,29 +245,9 @@ public class SampleXxlJob { public void init(){ logger.info("init"); } - public void destroy(){ logger.info("destroy"); } - /** - * 6、生命周期任务示例:任务初始化与销毁时,支持private方法(但不推荐); - */ - @XxlJob(value = "demoJobHandler3", init = "initForDemoJobHandler3", destroy = "destroyForDemoJobHandler3") - public void demoJobHandler3() throws Exception { - XxlJobHelper.log("XXL-JOB, Hello World."); - } - - private void initForDemoJobHandler3(){ - logger.info("initForDemoJobHandler3"); - } - - /** - * 演示private方法也可以被访问且执行 - */ - public void destroyForDemoJobHandler3(){ - logger.info("destroyForDemoJobHandler3"); - } - }