Browse Source

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

xuxueli 8 years ago
parent
commit
2a94a142e3

+ 4 - 5
xxl-job-core/src/main/java/com/xxl/job/core/biz/impl/ExecutorBizImpl.java View File

74
         String removeOldReason = null;
74
         String removeOldReason = null;
75
 
75
 
76
         // valid:jobHandler + jobThread
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
             // new jobhandler
80
             // new jobhandler
80
             IJobHandler newJobHandler = XxlJobExecutor.loadJobHandler(triggerParam.getExecutorHandler());
81
             IJobHandler newJobHandler = XxlJobExecutor.loadJobHandler(triggerParam.getExecutorHandler());
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
             // valid old jobThread
102
             // valid old jobThread
102
             if (jobThread != null &&
103
             if (jobThread != null &&
119
                     return new ReturnT<String>(ReturnT.FAIL_CODE, e.getMessage());
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
             // valid old jobThread
125
             // valid old jobThread
127
             if (jobThread != null &&
126
             if (jobThread != null &&

+ 7 - 8
xxl-job-core/src/main/java/com/xxl/job/core/log/XxlJobLogger.java View File

24
      */
24
      */
25
     private static void logDetail(StackTraceElement callInfo, String appendLog) {
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
         /*// "yyyy-MM-dd HH:mm:ss [ClassName]-[MethodName]-[LineNumber]-[ThreadName] log";
28
         /*// "yyyy-MM-dd HH:mm:ss [ClassName]-[MethodName]-[LineNumber]-[ThreadName] log";
34
         StackTraceElement[] stackTraceElements = new Throwable().getStackTrace();
29
         StackTraceElement[] stackTraceElements = new Throwable().getStackTrace();
44
         String formatAppendLog = stringBuffer.toString();
39
         String formatAppendLog = stringBuffer.toString();
45
 
40
 
46
         // appendlog
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 View File

92
     @Override
92
     @Override
93
 	public void run() {
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
 		while(!toStop){
103
 		while(!toStop){
96
 			running = false;
104
 			running = false;
97
 			idleTimes++;
105
 			idleTimes++;
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
 		logger.info(">>>>>>>>>>> xxl-job JobThread stoped, hashCode:{}", Thread.currentThread());
183
 		logger.info(">>>>>>>>>>> xxl-job JobThread stoped, hashCode:{}", Thread.currentThread());
169
 	}
184
 	}
170
 }
185
 }