Pārlūkot izejas kodu

JobHandler提供init/destroy方法,支持在JobHandler初始化和销毁时进行附加操作;

xuxueli 8 gadus atpakaļ
vecāks
revīzija
2a94a142e3

+ 4 - 5
xxl-job-core/src/main/java/com/xxl/job/core/biz/impl/ExecutorBizImpl.java Parādīt failu

@@ -74,7 +74,8 @@ public class ExecutorBizImpl implements ExecutorBiz {
74 74
         String removeOldReason = null;
75 75
 
76 76
         // valid:jobHandler + jobThread
77
-        if (GlueTypeEnum.BEAN==GlueTypeEnum.match(triggerParam.getGlueType())) {
77
+        GlueTypeEnum glueTypeEnum = GlueTypeEnum.match(triggerParam.getGlueType());
78
+        if (GlueTypeEnum.BEAN == glueTypeEnum) {
78 79
 
79 80
             // new jobhandler
80 81
             IJobHandler newJobHandler = XxlJobExecutor.loadJobHandler(triggerParam.getExecutorHandler());
@@ -96,7 +97,7 @@ public class ExecutorBizImpl implements ExecutorBiz {
96 97
                 }
97 98
             }
98 99
 
99
-        } else if (GlueTypeEnum.GLUE_GROOVY==GlueTypeEnum.match(triggerParam.getGlueType())) {
100
+        } else if (GlueTypeEnum.GLUE_GROOVY == glueTypeEnum) {
100 101
 
101 102
             // valid old jobThread
102 103
             if (jobThread != null &&
@@ -119,9 +120,7 @@ public class ExecutorBizImpl implements ExecutorBiz {
119 120
                     return new ReturnT<String>(ReturnT.FAIL_CODE, e.getMessage());
120 121
                 }
121 122
             }
122
-        } else if (GlueTypeEnum.GLUE_SHELL==GlueTypeEnum.match(triggerParam.getGlueType())
123
-                || GlueTypeEnum.GLUE_PYTHON==GlueTypeEnum.match(triggerParam.getGlueType())
124
-                || GlueTypeEnum.GLUE_NODEJS==GlueTypeEnum.match(triggerParam.getGlueType())) {
123
+        } else if (glueTypeEnum!=null && glueTypeEnum.isScript()) {
125 124
 
126 125
             // valid old jobThread
127 126
             if (jobThread != null &&

+ 7 - 8
xxl-job-core/src/main/java/com/xxl/job/core/log/XxlJobLogger.java Parādīt failu

@@ -24,11 +24,6 @@ public class XxlJobLogger {
24 24
      */
25 25
     private static void logDetail(StackTraceElement callInfo, String appendLog) {
26 26
 
27
-        // logFileName
28
-        String logFileName = XxlJobFileAppender.contextHolder.get();
29
-        if (logFileName==null || logFileName.trim().length()==0) {
30
-            return;
31
-        }
32 27
 
33 28
         /*// "yyyy-MM-dd HH:mm:ss [ClassName]-[MethodName]-[LineNumber]-[ThreadName] log";
34 29
         StackTraceElement[] stackTraceElements = new Throwable().getStackTrace();
@@ -44,9 +39,13 @@ public class XxlJobLogger {
44 39
         String formatAppendLog = stringBuffer.toString();
45 40
 
46 41
         // appendlog
47
-        XxlJobFileAppender.appendLog(logFileName, formatAppendLog);
48
-
49
-        logger.debug(">>>>>>>>>>> [{}]: {}", logFileName, formatAppendLog);
42
+        String logFileName = XxlJobFileAppender.contextHolder.get();
43
+        if (logFileName==null || logFileName.trim().length()==0) {
44
+            logger.info(">>>>>>>>>>> [{}]: {}", logFileName, formatAppendLog);
45
+        } else {
46
+            XxlJobFileAppender.appendLog(logFileName, formatAppendLog);
47
+            logger.debug(">>>>>>>>>>> [{}]: {}", logFileName, formatAppendLog);
48
+        }
50 49
     }
51 50
 
52 51
     /**

+ 15 - 0
xxl-job-core/src/main/java/com/xxl/job/core/thread/JobThread.java Parādīt failu

@@ -92,6 +92,14 @@ public class JobThread extends Thread{
92 92
     @Override
93 93
 	public void run() {
94 94
 
95
+    	// init
96
+    	try {
97
+			handler.init();
98
+		} catch (Throwable e) {
99
+    		logger.error(e.getMessage(), e);
100
+		}
101
+
102
+		// execute
95 103
 		while(!toStop){
96 104
 			running = false;
97 105
 			idleTimes++;
@@ -165,6 +173,13 @@ public class JobThread extends Thread{
165 173
 			}
166 174
 		}
167 175
 
176
+		// destroy
177
+		try {
178
+			handler.destroy();
179
+		} catch (Throwable e) {
180
+			logger.error(e.getMessage(), e);
181
+		}
182
+
168 183
 		logger.info(">>>>>>>>>>> xxl-job JobThread stoped, hashCode:{}", Thread.currentThread());
169 184
 	}
170 185
 }