Browse Source

GLUE任务调度时,执行器校验是否支持GLUE模式任务,校验GlueFactory的glueloader是否存在;

xueli.xue 9 years ago
parent
commit
552949167e

+ 5 - 2
xxl-job-core/src/main/java/com/xxl/job/core/glue/GlueFactory.java

@@ -43,7 +43,10 @@ public class GlueFactory implements ApplicationContextAware {
 	public void setGlueLoader(GlueLoader glueLoader) {
 		this.glueLoader = glueLoader;
 	}
-	
+	public static boolean isActive() {
+		return GlueFactory.glueFactory.glueLoader!=null;
+	}
+
 	// ----------------------------- spring support -----------------------------
 	private static ApplicationContext applicationContext;
 	private static GlueFactory glueFactory;
@@ -122,7 +125,7 @@ public class GlueFactory implements ApplicationContextAware {
 	}
 	
 	// // load instance, singleton
-	public static String generateInstanceCacheKey(String job_group, String job_name){
+	private static String generateInstanceCacheKey(String job_group, String job_name){
 		return job_group.concat("_").concat(job_name).concat("_instance");
 	}
 	public IJobHandler loadInstance(String job_group, String job_name) throws Exception{

+ 8 - 1
xxl-job-core/src/main/java/com/xxl/job/core/router/action/RunAction.java

@@ -1,5 +1,6 @@
 package com.xxl.job.core.router.action;
 
+import com.xxl.job.core.glue.GlueFactory;
 import com.xxl.job.core.handler.IJobHandler;
 import com.xxl.job.core.handler.impl.GlueJobHandler;
 import com.xxl.job.core.router.HandlerRouter;
@@ -25,7 +26,7 @@ public class RunAction extends IAction {
         if (!requestModel.isGlueSwitch()) {
             // bean model
 
-            // handler instance
+            // valid handler instance
             IJobHandler jobHandler = HandlerRouter.loadJobHandler(requestModel.getExecutorHandler());
             if (jobHandler==null) {
                 return new ResponseModel(ResponseModel.FAIL, "job handler for jobKey=[" + jobKey + "] not found.");
@@ -46,6 +47,12 @@ public class RunAction extends IAction {
             }
         } else {
             // glue model
+
+            // valid glueloader
+            if (!GlueFactory.isActive()) {
+                return new ResponseModel(ResponseModel.FAIL, "glueLoader for jobKey=[" + jobKey + "] not found.");
+            }
+
             if (jobThread == null) {
                 jobThread = HandlerRouter.registJobThread(jobKey, new GlueJobHandler(requestModel.getJobGroup(), requestModel.getJobName()));
             } else {

+ 3 - 2
xxl-job-executor-example/src/main/resources/applicationcontext-xxl-job.xml

@@ -15,9 +15,10 @@
 	<bean id="xxlJobExecutor" class="com.xxl.job.core.executor.jetty.XxlJobExecutor" init-method="start" destroy-method="destroy" >
 		<property name="port" value="9999" />
 	</bean>
-	
+
+	<!-- glue factory -->
 	<bean id="glueFactory" class="com.xxl.job.core.glue.GlueFactory">
-		<property name="cacheTimeout" value="5000" />
+		<property name="cacheTimeout" value="10000" />
 		<property name="glueLoader" ref="dbGlueLoader" />	<!-- GLUE 代码加载器,推荐将该服务配置成RPC服务 -->
 	</bean>