+
diff --git a/xxl-job-admin/src/main/webapp/static/js/jobinfo.index.1.js b/xxl-job-admin/src/main/webapp/static/js/jobinfo.index.1.js
index 58d228f2..dcaadc7c 100644
--- a/xxl-job-admin/src/main/webapp/static/js/jobinfo.index.1.js
+++ b/xxl-job-admin/src/main/webapp/static/js/jobinfo.index.1.js
@@ -63,7 +63,9 @@ $(function() {
if ('NORMAL' == data) {
return '
'+ data +'';
} else if ('PAUSED' == data){
- return '
'+ data +'';
+ return '
'+ data +'';
+ } else if ('BLOCKED' == data){
+ return '
'+ data +'';
}
return data;
}
@@ -238,11 +240,11 @@ $(function() {
required : true ,
maxlength: 200
},
- alarm_email : {
+ alarmEmail : {
required : true ,
maxlength: 200
},
- alarm_threshold : {
+ alarmThreshold : {
required : true ,
digits:true
}
@@ -273,11 +275,11 @@ $(function() {
required : "请输入“负责人”." ,
maxlength: "“负责人”长度不应超过50位"
},
- alarm_email : {
+ alarmEmail : {
required : "请输入“报警邮件”." ,
maxlength: "“报警邮件”长度不应超过200位"
},
- alarm_threshold : {
+ alarmThreshold : {
required : "请输入“报警阈值”." ,
digits:"阀值应该为整数."
}
@@ -295,9 +297,8 @@ $(function() {
submitHandler : function(form) {
$.post(base_url + "/jobinfo/add", $("#addModal .form").serialize(), function(data, status) {
if (data.code == "200") {
- ComAlert.show(1, "新增调度任务成功", function(){
- ComAlert.show(1, "新增任务成功");
- jobTable.fnDraw();
+ ComAlert.show(1, "新增任务成功", function(){
+ window.location.reload();
});
} else {
if (data.msg) {
@@ -310,29 +311,44 @@ $(function() {
}
});
$("#addModal").on('hide.bs.modal', function () {
- //$("#addModal .form")[0].reset();
+ $("#addModal .form")[0].reset();
addModalValidate.resetForm();
$("#addModal .form .form-group").removeClass("has-error");
+ $(".remote_panel").show(); // remote
});
// 远程任务/本地任务,切换
$("#addModal select[name='jobClass']").change(function() {
- //console.log($(this).val());
- console.log( $(this).val().indexOf('HttpJobBean') );
- if($(this).val().indexOf('HttpJobBean') > -1){
+ //console.log( $(this).val().indexOf('RemoteHttpJobBean') );
+
+ if($(this).val().indexOf('RemoteHttpJobBean') > -1){
$(".remote_panel").show(); // remote
- } else if($(this).val().indexOf('HttpJobBean') == -1){
+ } else if($(this).val().indexOf('RemoteHttpJobBean') == -1){
$(".remote_panel").hide(); // local
}
});
// 更新
$("#job_list").on('click', '.update',function() {
- $("#updateModal .form input[name='triggerKeyName']").val($(this).parent('p').attr("jobName"));
- $("#updateModal .form input[name='cronExpression']").val($(this).parent('p').attr("cronExpression"));
- $("#updateModal .form input[name='job_desc']").val($(this).parent('p').attr("job_desc"));
- $("#updateModal .form input[name='job_url']").val($(this).parent('p').attr("job_url"));
- $("#updateModal .form input[name='handleName']").val($(this).parent('p').attr("handleName"));
+ $("#updateModal .form input[name='jobGroup']").val($(this).parent('p').attr("jobGroup"));
+ $("#updateModal .form input[name='jobName']").val($(this).parent('p').attr("jobName"));
+ $("#updateModal .form input[name='jobCron']").val($(this).parent('p').attr("jobCron"));
+ $("#updateModal .form input[name='jobDesc']").val($(this).parent('p').attr("jobDesc"));
+ $("#updateModal .form input[name='jobClass']").val($(this).parent('p').attr("jobClass"));
+ $("#updateModal .form input[name='handler_params']").val($(this).parent('p').attr("handler_params"));
+ $("#updateModal .form input[name='handler_address']").val($(this).parent('p').attr("handler_address"));
+ $("#updateModal .form input[name='handler_name']").val($(this).parent('p').attr("handler_name"));
+ $("#updateModal .form input[name='author']").val($(this).parent('p').attr("author"));
+ $("#updateModal .form input[name='alarmEmail']").val($(this).parent('p').attr("alarmEmail"));
+ $("#updateModal .form input[name='alarmThreshold']").val($(this).parent('p').attr("alarmThreshold"));
+
+ var _jobClass = $(this).parent('p').attr("jobClass");
+ if(_jobClass.indexOf('RemoteHttpJobBean') > -1){
+ $(".remote_panel").show(); // remote
+ } else if($(this).val().indexOf('RemoteHttpJobBean') == -1){
+ $(".remote_panel").hide(); // local
+ }
+
$('#updateModal').modal({backdrop: false, keyboard: false}).modal('show');
});
var updateModalValidate = $("#updateModal .form").validate({
@@ -340,49 +356,63 @@ $(function() {
errorClass : 'help-block',
focusInvalid : true,
rules : {
- triggerKeyName : {
- required : true ,
- minlength: 4,
- maxlength: 100
- },
- cronExpression : {
+ jobCron : {
required : true ,
maxlength: 100
},
- job_desc : {
+ jobDesc : {
required : true ,
maxlength: 200
},
- job_url : {
+ handler_address : {
required : true ,
maxlength: 200
},
- handleName : {
+ handler_name : {
required : true ,
maxlength: 200
+ },
+ author : {
+ required : true ,
+ maxlength: 200
+ },
+ alarmEmail : {
+ required : true ,
+ maxlength: 200
+ },
+ alarmThreshold : {
+ required : true ,
+ digits:true
}
},
messages : {
- triggerKeyName : {
- required :"请输入“任务Key”." ,
- minlength:"“任务Key”不应低于4位",
- maxlength:"“任务Key”不应超过100位"
- },
- cronExpression : {
- required :"请输入“任务Corn”." ,
- maxlength:"“任务Corn”不应超过100位"
+ jobCron : {
+ required :"请输入“Corn”." ,
+ maxlength:"“Corn”长度不应超过100位"
},
- job_desc : {
+ jobDesc : {
required :"请输入“任务描述”." ,
maxlength:"“任务描述”长度不应超过200位"
},
- job_url : {
- required :"请输入“任务URL”." ,
- maxlength:"“任务URL”长度不应超过200位"
+ handler_address : {
+ required :"请输入“远程-机器地址”." ,
+ maxlength:"“远程-机器地址”长度不应超过200位"
},
- handleName : {
- required : "请输入“任务handler”." ,
- maxlength: "“任务handler”长度不应超过200位"
+ handler_name : {
+ required : "请输入“远程-执行器”." ,
+ maxlength: "“远程-执行器”长度不应超过200位"
+ },
+ author : {
+ required : "请输入“负责人”." ,
+ maxlength: "“负责人”长度不应超过50位"
+ },
+ alarmEmail : {
+ required : "请输入“报警邮件”." ,
+ maxlength: "“报警邮件”长度不应超过200位"
+ },
+ alarmThreshold : {
+ required : "请输入“报警阈值”." ,
+ digits:"阀值应该为整数."
}
},
highlight : function(element) {
@@ -396,7 +426,7 @@ $(function() {
element.parent('div').append(error);
},
submitHandler : function(form) {
- $.post(base_url + "/job/reschedule", $("#updateModal .form").serialize(), function(data, status) {
+ $.post(base_url + "/jobinfo/reschedule", $("#updateModal .form").serialize(), function(data, status) {
if (data.code == "200") {
ComAlert.show(1, "更新成功", function(){
window.location.reload();
diff --git a/xxl-job-client-demo/.settings/org.eclipse.wst.common.component b/xxl-job-client-demo/.settings/org.eclipse.wst.common.component
index 2ce4810f..08176316 100644
--- a/xxl-job-client-demo/.settings/org.eclipse.wst.common.component
+++ b/xxl-job-client-demo/.settings/org.eclipse.wst.common.component
@@ -4,7 +4,7 @@
-
+
uses
diff --git a/xxl-job-client-demo/pom.xml b/xxl-job-client-demo/pom.xml
index 8e779cc2..5311914d 100644
--- a/xxl-job-client-demo/pom.xml
+++ b/xxl-job-client-demo/pom.xml
@@ -4,10 +4,10 @@
com.xxl
xxl-job
- 1.1.1-SNAPSHOT
+ 1.2.0-SNAPSHOT
xxl-job-client-demo
- 1.1.2-SNAPSHOT
+ 1.2.1-SNAPSHOT
war
@@ -55,7 +55,7 @@
com.xxl
xxl-job-client
- 1.1.2-SNAPSHOT
+ 1.2.1-SNAPSHOT
diff --git a/xxl-job-client/pom.xml b/xxl-job-client/pom.xml
index b60cb83d..7ff829d4 100644
--- a/xxl-job-client/pom.xml
+++ b/xxl-job-client/pom.xml
@@ -4,10 +4,10 @@
com.xxl
xxl-job
- 1.1.1-SNAPSHOT
+ 1.2.0-SNAPSHOT
xxl-job-client
- 1.1.2-SNAPSHOT
+ 1.2.1-SNAPSHOT
diff --git a/xxl-job-client/src/main/java/com/xxl/job/client/handler/HandlerRepository.java b/xxl-job-client/src/main/java/com/xxl/job/client/handler/HandlerRepository.java
index a3205ef8..b216a8a3 100644
--- a/xxl-job-client/src/main/java/com/xxl/job/client/handler/HandlerRepository.java
+++ b/xxl-job-client/src/main/java/com/xxl/job/client/handler/HandlerRepository.java
@@ -43,14 +43,20 @@ public class HandlerRepository {
String _msg = "";
// push data to queue
- HandlerThread handlerThread = handlerTreadMap.get(_param.get(HandlerRepository.HANDLER_NAME));
- if (handlerThread != null) {
- handlerThread.pushData(_param);
- _status = HttpUtil.SUCCESS;
- } else {
- _msg = "handler not found.";
+ String handler_name = _param.get(HandlerRepository.HANDLER_NAME);
+ if (handler_name!=null && handler_name.trim().length()>0) {
+ HandlerThread handlerThread = handlerTreadMap.get(handler_name);
+ if (handlerThread != null) {
+ handlerThread.pushData(_param);
+ _status = HttpUtil.SUCCESS;
+ } else {
+ _msg = "handler not found.";
+ }
+ }else{
+ _msg = "param[HANDLER_NAME] not exists.";
}
+
HashMap triggerData = new HashMap();
triggerData.put(HandlerRepository.TRIGGER_LOG_ID, _param.get(HandlerRepository.TRIGGER_LOG_ID));
triggerData.put(HttpUtil.status, _status);
diff --git a/xxl-job-client/src/main/java/com/xxl/job/client/handler/HandlerThread.java b/xxl-job-client/src/main/java/com/xxl/job/client/handler/HandlerThread.java
index b21713be..df8ee161 100644
--- a/xxl-job-client/src/main/java/com/xxl/job/client/handler/HandlerThread.java
+++ b/xxl-job-client/src/main/java/com/xxl/job/client/handler/HandlerThread.java
@@ -35,60 +35,62 @@ public class HandlerThread extends Thread{
int i = 1;
@Override
public void run() {
- try {
- i++;
- Map handlerData = handlerDataQueue.poll();
- if (handlerData!=null) {
- String trigger_log_url = handlerData.get(HandlerRepository.TRIGGER_LOG_URL);
- String trigger_log_id = handlerData.get(HandlerRepository.TRIGGER_LOG_ID);
- String handler_params = handlerData.get(HandlerRepository.HANDLER_PARAMS);
-
- // parse param
- String[] handlerParams = null;
- if (handler_params!=null && handler_params.trim().length()>0) {
- handlerParams = handler_params.split(",");
- } else {
- handlerParams = new String[0];
- }
-
- // handle job
- JobHandleStatus _status = JobHandleStatus.FAIL;
- String _msg = null;
- try {
- _status = handler.handle(handlerParams);
- } catch (Exception e) {
- logger.info("HandlerThread Exception:", e);
- StringWriter out = new StringWriter();
- e.printStackTrace(new PrintWriter(out));
- _msg = out.toString();
- }
-
- // callback handler info
- String callback_response[] = null;
- try {
+ while(true){
+ try {
+ i++;
+ Map handlerData = handlerDataQueue.poll();
+ if (handlerData!=null) {
+ String trigger_log_url = handlerData.get(HandlerRepository.TRIGGER_LOG_URL);
+ String trigger_log_id = handlerData.get(HandlerRepository.TRIGGER_LOG_ID);
+ String handler_params = handlerData.get(HandlerRepository.HANDLER_PARAMS);
- HashMap params = new HashMap();
- params.put(HandlerRepository.TRIGGER_LOG_ID, trigger_log_id);
- params.put(HttpUtil.status, _status.name());
- params.put(HttpUtil.msg, _msg);
- callback_response = HttpUtil.post(trigger_log_url, params);
- } catch (Exception e) {
- logger.info("HandlerThread Exception:", e);
- }
- logger.info("<<<<<<<<<<< xxl-job thread handle, handlerData:{}, callback_status:{}, callback_msg:{}, callback_response:{}, thread:{}",
- new Object[]{handlerData, _status, _msg, callback_response, this});
- } else {
- try {
- TimeUnit.MILLISECONDS.sleep(i * 100);
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
- if (i>5) {
- i= 0;
+ // parse param
+ String[] handlerParams = null;
+ if (handler_params!=null && handler_params.trim().length()>0) {
+ handlerParams = handler_params.split(",");
+ } else {
+ handlerParams = new String[0];
+ }
+
+ // handle job
+ JobHandleStatus _status = JobHandleStatus.FAIL;
+ String _msg = null;
+ try {
+ _status = handler.handle(handlerParams);
+ } catch (Exception e) {
+ logger.info("HandlerThread Exception:", e);
+ StringWriter out = new StringWriter();
+ e.printStackTrace(new PrintWriter(out));
+ _msg = out.toString();
+ }
+
+ // callback handler info
+ String callback_response[] = null;
+ try {
+
+ HashMap params = new HashMap();
+ params.put(HandlerRepository.TRIGGER_LOG_ID, trigger_log_id);
+ params.put(HttpUtil.status, _status.name());
+ params.put(HttpUtil.msg, _msg);
+ callback_response = HttpUtil.post(trigger_log_url, params);
+ } catch (Exception e) {
+ logger.info("HandlerThread Exception:", e);
+ }
+ logger.info("<<<<<<<<<<< xxl-job thread handle, handlerData:{}, callback_status:{}, callback_msg:{}, callback_response:{}, thread:{}",
+ new Object[]{handlerData, _status, _msg, callback_response, this});
+ } else {
+ try {
+ TimeUnit.MILLISECONDS.sleep(i * 100);
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+ if (i>5) {
+ i= 0;
+ }
}
+ } catch (Exception e) {
+ logger.info("HandlerThread Exception:", e);
}
- } catch (Exception e) {
- logger.info("HandlerThread Exception:", e);
}
}
}
diff --git a/xxl-job-simple/.classpath b/xxl-job-simple/.classpath
deleted file mode 100644
index 803d7e0d..00000000
--- a/xxl-job-simple/.classpath
+++ /dev/null
@@ -1,32 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/xxl-job-simple/.gitignore b/xxl-job-simple/.gitignore
deleted file mode 100644
index 0d87a2d0..00000000
--- a/xxl-job-simple/.gitignore
+++ /dev/null
@@ -1,4 +0,0 @@
-/target/
-/.settings/
-/bin/
-/.gitignore
diff --git a/xxl-job-simple/.project b/xxl-job-simple/.project
deleted file mode 100644
index 5aa2fd72..00000000
--- a/xxl-job-simple/.project
+++ /dev/null
@@ -1,42 +0,0 @@
-
-
- xxl-job-simple
-
-
-
-
-
- org.eclipse.wst.jsdt.core.javascriptValidator
-
-
-
-
- org.eclipse.jdt.core.javabuilder
-
-
-
-
- org.eclipse.wst.common.project.facet.core.builder
-
-
-
-
- org.eclipse.wst.validation.validationbuilder
-
-
-
-
- org.eclipse.m2e.core.maven2Builder
-
-
-
-
-
- org.eclipse.jem.workbench.JavaEMFNature
- org.eclipse.wst.common.modulecore.ModuleCoreNature
- org.eclipse.jdt.core.javanature
- org.eclipse.m2e.core.maven2Nature
- org.eclipse.wst.common.project.facet.core.nature
- org.eclipse.wst.jsdt.core.jsNature
-
-
diff --git a/xxl-job-simple/.settings/org.eclipse.core.resources.prefs b/xxl-job-simple/.settings/org.eclipse.core.resources.prefs
deleted file mode 100644
index 8fd0b3a2..00000000
--- a/xxl-job-simple/.settings/org.eclipse.core.resources.prefs
+++ /dev/null
@@ -1,2 +0,0 @@
-eclipse.preferences.version=1
-encoding//src/main/java=UTF8
diff --git a/xxl-job-simple/.settings/org.eclipse.jdt.core.prefs b/xxl-job-simple/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index 62a317c8..00000000
--- a/xxl-job-simple/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,8 +0,0 @@
-eclipse.preferences.version=1
-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
-org.eclipse.jdt.core.compiler.compliance=1.6
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
-org.eclipse.jdt.core.compiler.source=1.6
diff --git a/xxl-job-simple/.settings/org.eclipse.wst.common.component b/xxl-job-simple/.settings/org.eclipse.wst.common.component
deleted file mode 100644
index 1772721f..00000000
--- a/xxl-job-simple/.settings/org.eclipse.wst.common.component
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
-
-
-
-
-
-
diff --git a/xxl-job-simple/.settings/org.eclipse.wst.common.project.facet.core.xml b/xxl-job-simple/.settings/org.eclipse.wst.common.project.facet.core.xml
deleted file mode 100644
index 6f361dd8..00000000
--- a/xxl-job-simple/.settings/org.eclipse.wst.common.project.facet.core.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-
diff --git a/xxl-job-simple/pom.xml b/xxl-job-simple/pom.xml
deleted file mode 100644
index 5f923a2e..00000000
--- a/xxl-job-simple/pom.xml
+++ /dev/null
@@ -1,165 +0,0 @@
-
- 4.0.0
-
- com.xxl
- xxl-job
- 1.1.1-SNAPSHOT
-
- xxl-job-simple
- 1.1.2-SNAPSHOT
- war
-
-
- 3.2.14.RELEASE
-
-
-
-
-
- org.springframework
- spring-webmvc
- ${spring.version}
-
-
- org.springframework
- spring-context-support
- ${spring.version}
-
-
- org.springframework
- spring-orm
- ${spring.version}
-
-
- org.springframework
- spring-test
- ${spring.version}
-
-
-
-
- org.aspectj
- aspectjweaver
- 1.8.7
-
-
-
- org.codehaus.jackson
- jackson-mapper-asl
- 1.9.13
-
-
-
-
- org.slf4j
- slf4j-log4j12
- 1.7.5
-
-
-
-
- org.freemarker
- freemarker
- 2.3.20
-
-
-
-
- commons-beanutils
- commons-beanutils
- 1.9.2
-
-
-
- commons-lang
- commons-lang
- 2.6
-
-
-
-
- javax.servlet
- servlet-api
- 2.5
- provided
-
-
- javax.servlet.jsp
- jsp-api
- 2.1
- provided
-
-
-
-
- junit
- junit
- 4.11
- test
-
-
-
-
- c3p0
- c3p0
- 0.9.1.2
-
-
-
- org.mybatis
- mybatis-spring
- 1.2.2
-
-
- org.mybatis
- mybatis
- 3.2.8
-
-
-
- mysql
- mysql-connector-java
- 5.1.29
-
-
-
-
- org.quartz-scheduler
- quartz
- 2.2.1
-
-
-
-
- org.apache.httpcomponents
- httpclient
- 4.3.6
-
-
-
-
-
-
-
- org.apache.maven.plugins
- maven-compiler-plugin
- 3.1
-
-
- 1.6
- UTF8
-
-
-
- org.apache.maven.plugins
- maven-war-plugin
- 2.2
-
- true
-
-
-
-
-
-
diff --git a/xxl-job-simple/src/main/java/com/xxl/job/controller/IndexController.java b/xxl-job-simple/src/main/java/com/xxl/job/controller/IndexController.java
deleted file mode 100644
index cbc3ae34..00000000
--- a/xxl-job-simple/src/main/java/com/xxl/job/controller/IndexController.java
+++ /dev/null
@@ -1,197 +0,0 @@
-package com.xxl.job.controller;
-
-import java.io.UnsupportedEncodingException;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Map.Entry;
-import java.util.Set;
-
-import javax.servlet.http.HttpServletRequest;
-
-import org.apache.commons.lang.StringUtils;
-import org.quartz.CronExpression;
-import org.quartz.Job;
-import org.quartz.SchedulerException;
-import org.springframework.stereotype.Controller;
-import org.springframework.ui.Model;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.ResponseBody;
-
-import com.xxl.job.core.model.ReturnT;
-import com.xxl.job.core.util.DynamicSchedulerUtil;
-import com.xxl.job.service.job.DemoJobBean;
-import com.xxl.job.service.job.DemoJobBeanB;
-
-/**
- * index controller
- * @author xuxueli 2015-12-19 16:13:16
- */
-@Controller
-public class IndexController {
- // local job bean list
- public static Map jobBeanMap = new HashMap();
-
- @RequestMapping("")
- public String index(Model model) {
- jobBeanMap.put(DemoJobBean.class.getName(), "测试任务");
- jobBeanMap.put(DemoJobBeanB.class.getName(), "测试任务B");
- model.addAttribute("jobBeanMap", jobBeanMap);
-
- // job list
- List