diff --git a/xxl-job-core/src/main/java/com/xxl/job/core/glue/GlueFactory.java b/xxl-job-core/src/main/java/com/xxl/job/core/glue/GlueFactory.java
index 278ec6c2..922daf9b 100644
--- a/xxl-job-core/src/main/java/com/xxl/job/core/glue/GlueFactory.java
+++ b/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{
diff --git a/xxl-job-core/src/main/java/com/xxl/job/core/router/action/RunAction.java b/xxl-job-core/src/main/java/com/xxl/job/core/router/action/RunAction.java
index cd052db7..d1c44e5d 100644
--- a/xxl-job-core/src/main/java/com/xxl/job/core/router/action/RunAction.java
+++ b/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 {
diff --git a/xxl-job-executor-example/src/main/resources/applicationcontext-xxl-job.xml b/xxl-job-executor-example/src/main/resources/applicationcontext-xxl-job.xml
index cef7668a..7a753629 100644
--- a/xxl-job-executor-example/src/main/resources/applicationcontext-xxl-job.xml
+++ b/xxl-job-executor-example/src/main/resources/applicationcontext-xxl-job.xml
@@ -15,9 +15,10 @@
-
+
+
-
+