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 0fc1c14c..74063986 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 @@ -92,6 +92,12 @@ public class XxlJobExecutor { } jobThreadRepository.clear(); } + if(jobHandlerRepository.size() >0 ){ + for (Map.Entry item: jobHandlerRepository.entrySet()){ + removeJobHandler(item.getKey(), "web container destroy and kill the jod handler"); + } + jobHandlerRepository.clear(); + } // destory JobLogFileCleanThread @@ -104,6 +110,13 @@ public class XxlJobExecutor { stopRpcProvider(); } + private void removeJobHandler(String handlerId, String removeOldReason){ + IJobHandler oldJobHandler = jobHandlerRepository.remove(handlerId); + if (oldJobHandler != null) { + oldJobHandler.destroy(); + } + } + // ---------------------- admin-client (rpc invoker) ---------------------- private static List adminBizList;