瀏覽代碼

接入执行器,自动注册

xueli.xue 8 年之前
父節點
當前提交
9c05c3a96f

+ 2 - 2
xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobInfoController.java

@@ -53,7 +53,7 @@ public class JobInfoController {
 			int glueSwitch, String glueSource, String glueRemark, String childJobKey) {
 		
 		return xxlJobService.add(jobGroup, jobCron, jobDesc, author, alarmEmail,
-				executorAppname, executorAddress, executorHandler, executorParam,
+				executorAddress, executorHandler, executorParam,
 				glueSwitch, glueSource, glueRemark, childJobKey);
 	}
 	
@@ -64,7 +64,7 @@ public class JobInfoController {
 			int glueSwitch, String childJobKey) {
 
 		return xxlJobService.reschedule(jobGroup, jobName, jobCron, jobDesc, author, alarmEmail,
-				executorAppname, executorAddress, executorHandler, executorParam, glueSwitch, childJobKey);
+				executorAddress, executorHandler, executorParam, glueSwitch, childJobKey);
 	}
 	
 	@RequestMapping("/remove")

+ 8 - 4
xxl-job-admin/src/main/java/com/xxl/job/admin/core/jobbean/RemoteHttpJobBean.java

@@ -1,6 +1,7 @@
 package com.xxl.job.admin.core.jobbean;
 
 import com.xxl.job.admin.core.callback.XxlJobLogCallbackServer;
+import com.xxl.job.admin.core.model.XxlJobGroup;
 import com.xxl.job.admin.core.model.XxlJobInfo;
 import com.xxl.job.admin.core.model.XxlJobLog;
 import com.xxl.job.admin.core.thread.JobMonitorHelper;
@@ -67,13 +68,16 @@ public class RemoteHttpJobBean extends QuartzJobBean {
 		// parse address
 		List<String> addressList = new ArrayList<String>();
 		String parseAddressMsg = null;
-		if (StringUtils.isNotBlank(jobInfo.getExecutorAppname())) {
-			addressList = JobRegistryHelper.discover(RegistHelper.RegistType.EXECUTOR.name(), jobInfo.getExecutorAppname());
-			parseAddressMsg = MessageFormat.format("Parse Address (Appname注册方式) <br>>>>[address list] : {0}<br><hr>", addressList);
-		} else {
+		if (StringUtils.isNotBlank(jobInfo.getExecutorAddress())) {
 			List<String> addressArr = Arrays.asList(jobInfo.getExecutorAddress().split(","));
 			addressList.addAll(addressArr);
 			parseAddressMsg = MessageFormat.format("Parse Address (地址配置方式) <br>>>>[address list] : {0}<br><hr>", addressList);
+		} else {
+			XxlJobGroup group = DynamicSchedulerUtil.xxlJobGroupDao.load(jobInfo.getJobGroup());
+			if (group!=null) {
+				addressList = JobRegistryHelper.discover(RegistHelper.RegistType.EXECUTOR.name(), group.getAppName());
+			}
+			parseAddressMsg = MessageFormat.format("Parse Address (Appname注册方式) <br>>>>[address list] : {0}<br><hr>", addressList);
 		}
 
 		// failover trigger

+ 0 - 9
xxl-job-admin/src/main/java/com/xxl/job/admin/core/model/XxlJobInfo.java

@@ -21,7 +21,6 @@ public class XxlJobInfo {
 	private String author;		// 负责人
 	private String alarmEmail;	// 报警邮件
 
-	private String executorAppname;	// 执行器对应的AppName
 	private String executorAddress;	// 执行器地址,有多个则逗号分隔
 	private String executorHandler;	// 执行器,任务Handler名称
 	private String executorParam;	// 执行器,任务参数
@@ -107,14 +106,6 @@ public class XxlJobInfo {
 		this.alarmEmail = alarmEmail;
 	}
 
-	public String getExecutorAppname() {
-		return executorAppname;
-	}
-
-	public void setExecutorAppname(String executorAppname) {
-		this.executorAppname = executorAppname;
-	}
-
 	public String getExecutorAddress() {
 		return executorAddress;
 	}

+ 2 - 2
xxl-job-admin/src/main/java/com/xxl/job/admin/service/IXxlJobService.java

@@ -14,11 +14,11 @@ public interface IXxlJobService {
 	public Map<String, Object> pageList(int start, int length, String jobGroup, String executorHandler, String filterTime);
 	
 	public ReturnT<String> add(String jobGroup, String jobCron, String jobDesc,String author, String alarmEmail,
-			String executorAppname, String executorAddress,	String executorHandler, String executorParam,
+			String executorAddress,	String executorHandler, String executorParam,
 			int glueSwitch, String glueSource, String glueRemark, String childJobKey);
 	
 	public ReturnT<String> reschedule(String jobGroup, String jobName, String jobCron, String jobDesc, String author, String alarmEmail,
-			String executorAppname, String executorAddress, String executorHandler, String executorParam, int glueSwitch, String childJobKey);
+			String executorAddress, String executorHandler, String executorParam, int glueSwitch, String childJobKey);
 	
 	public ReturnT<String> remove(String jobGroup, String jobName);
 	

+ 2 - 16
xxl-job-admin/src/main/java/com/xxl/job/admin/service/impl/XxlJobServiceImpl.java

@@ -65,7 +65,7 @@ public class XxlJobServiceImpl implements IXxlJobService {
 
 	@Override
 	public ReturnT<String> add(String jobGroup, String jobCron, String jobDesc,String author, String alarmEmail,
-			String executorAppname, String executorAddress,	String executorHandler, String executorParam,
+			String executorAddress,	String executorHandler, String executorParam,
 			int glueSwitch, String glueSource, String glueRemark, String childJobKey) {
 		// valid
 		XxlJobGroup group = xxlJobGroupDao.load(jobGroup);
@@ -84,12 +84,6 @@ public class XxlJobServiceImpl implements IXxlJobService {
 		if (StringUtils.isBlank(alarmEmail)) {
 			return new ReturnT<String>(500, "请输入“报警邮件”");
 		}
-		if (StringUtils.isBlank(executorAppname) && StringUtils.isBlank(executorAddress)) {
-			return new ReturnT<String>(500, "“执行器AppName”和“执行器地址”不可同时为空");
-		}
-		if (StringUtils.isNotBlank(executorAppname) && StringUtils.isNotBlank(executorAddress)) {
-			return new ReturnT<String>(500, "“执行器AppName”和“执行器地址” 不可同时使用");
-		}
 		if (glueSwitch==0 && StringUtils.isBlank(executorHandler)) {
 			return new ReturnT<String>(500, "请输入“JobHandler”");
 		}
@@ -128,7 +122,6 @@ public class XxlJobServiceImpl implements IXxlJobService {
 		jobInfo.setJobDesc(jobDesc);
 		jobInfo.setAuthor(author);
 		jobInfo.setAlarmEmail(alarmEmail);
-		jobInfo.setExecutorAppname(executorAppname);
 		jobInfo.setExecutorAddress(executorAddress);
 		jobInfo.setExecutorHandler(executorHandler);
 		jobInfo.setExecutorParam(executorParam);
@@ -154,7 +147,7 @@ public class XxlJobServiceImpl implements IXxlJobService {
 
 	@Override
 	public ReturnT<String> reschedule(String jobGroup, String jobName, String jobCron, String jobDesc, String author, String alarmEmail,
-			String executorAppname, String executorAddress, String executorHandler, String executorParam, int glueSwitch, String childJobKey) {
+			String executorAddress, String executorHandler, String executorParam, int glueSwitch, String childJobKey) {
 
 		// valid
 		XxlJobGroup group = xxlJobGroupDao.load(jobGroup);
@@ -176,12 +169,6 @@ public class XxlJobServiceImpl implements IXxlJobService {
 		if (StringUtils.isBlank(alarmEmail)) {
 			return new ReturnT<String>(500, "请输入“报警邮件”");
 		}
-		if (StringUtils.isBlank(executorAppname) && StringUtils.isBlank(executorAddress)) {
-			return new ReturnT<String>(500, "“执行器AppName”和“执行器地址”不可同时为空");
-		}
-		if (StringUtils.isNotBlank(executorAppname) && StringUtils.isNotBlank(executorAddress)) {
-			return new ReturnT<String>(500, "“执行器AppName”和“执行器地址” 不可同时使用");
-		}
 		if (glueSwitch==0 && StringUtils.isBlank(executorHandler)) {
 			return new ReturnT<String>(500, "请输入“JobHandler”");
 		}
@@ -207,7 +194,6 @@ public class XxlJobServiceImpl implements IXxlJobService {
 		jobInfo.setJobDesc(jobDesc);
 		jobInfo.setAuthor(author);
 		jobInfo.setAlarmEmail(alarmEmail);
-		jobInfo.setExecutorAppname(executorAppname);
 		jobInfo.setExecutorAddress(executorAddress);
 		jobInfo.setExecutorHandler(executorHandler);
 		jobInfo.setExecutorParam(executorParam);

+ 0 - 5
xxl-job-admin/src/main/resources/mybatis-mapper/XxlJobInfoMapper.xml

@@ -17,7 +17,6 @@
 	    <result column="author" property="author" />
 	    <result column="alarm_email" property="alarmEmail" />
 
-		<result column="executor_appname" property="executorAppname" />
 	    <result column="executor_address" property="executorAddress" />
 		<result column="executor_handler" property="executorHandler" />
 	    <result column="executor_param" property="executorParam" />
@@ -39,7 +38,6 @@
 		t.update_time,
 		t.author,
 		t.alarm_email,
-		t.executor_appname,
 		t.executor_address,
 		t.executor_handler,
 		t.executor_param,
@@ -87,7 +85,6 @@
 			update_time,
 			author,
 			alarm_email,
-			executor_appname,
 			executor_address,
 			executor_handler,
 			executor_param,
@@ -104,7 +101,6 @@
 			NOW(),
 			#{author},
 			#{alarmEmail},
-			#{executorAppname},
 			#{executorAddress},
 			#{executorHandler},
 			#{executorParam},
@@ -133,7 +129,6 @@
 			update_time = NOW(),
 			author = #{author},
 			alarm_email = #{alarmEmail},
-			executor_appname = #{executorAppname},
 			executor_address = #{executorAddress},
 			executor_handler = #{executorHandler},
 			executor_param = #{executorParam},

+ 14 - 20
xxl-job-admin/src/main/webapp/WEB-INF/template/jobinfo/jobinfo.index.ftl

@@ -78,7 +78,6 @@
                                         <th name="childJobKey" >任务Key</th>
 					                  	<th name="jobDesc" >描述</th>
 					                  	<th name="jobCron" >Cron</th>
-                                        <th name="executorAppname" >执行器Appname</th>
 					                  	<th name="executorAddress" >执行器地址</th>
                                         <th name="executorHandler" >JobJandler</th>
 					                  	<th name="executorParam" >任务参数</th>
@@ -127,14 +126,13 @@
                         <div class="col-sm-4"><input type="text" class="form-control" name="jobDesc" placeholder="请输入“描述”" maxlength="50" ></div>
 					</div>
 					<div class="form-group">
-						<div class="executorAddress">
-							<label for="lastname" class="col-sm-2 control-label">执行器地址<font color="red">*</font></label>
-							<div class="col-sm-4"><input type="text" class="form-control" name="executorAddress" placeholder="请输入“执行器地址”,多个地址逗号分隔" maxlength="50" ></div>
-                        </div>
-						<div class="executorAppname" style="display:none;">
-							<label for="lastname" class="col-sm-2 control-label">AppName<font color="red">*</font></label>
-							<div class="col-sm-4"><input type="text" class="form-control" name="executorAppname" placeholder="请输入执行器对应Appname, 自动发现注册的人任务" maxlength="100" ></div>
-                        </div>
+						<label for="lastname" class="col-sm-2 control-label">执行器地址<font color="black">*</font></label>
+						<div class="col-sm-4">
+                            <div class="input-group">
+                                <input type="text" class="form-control" name="executorAddress" placeholder="请输入“执行器地址”,多个地址逗号分隔" maxlength="50" readonly >
+                                <span class="input-group-addon"><b>AUTO</b>&nbsp;<input type="checkbox" class="addressAuto" checked="checked" ></span>
+                            </div>
+						</div>
                         <label for="lastname" class="col-sm-2 control-label">Cron<font color="red">*</font></label>
                         <div class="col-sm-4"><input type="text" class="form-control" name="jobCron" placeholder="请输入“Cron”" maxlength="20" ></div>
 					</div>
@@ -166,9 +164,6 @@
 							<button type="submit" class="btn btn-primary"  >保存</button>
 							<button type="button" class="btn btn-default" data-dismiss="modal">取消</button>
 						</div>
-                        <div class="col-sm-offset-0 col-sm-3">
-                            启动注册&nbsp;<input type="checkbox" class="ifAppName" >
-                        </div>
 					</div>
 
 <input type="hidden" name="glueRemark" value="GLUE代码初始化" >
@@ -215,14 +210,13 @@ public class DemoGlueJobHandler extends IJobHandler {
                         <div class="col-sm-4"><input type="text" class="form-control" name="jobDesc" placeholder="请输入“描述”" maxlength="50" ></div>
 					</div>
 					<div class="form-group">
-                        <div class="executorAddress">
-                            <label for="lastname" class="col-sm-2 control-label">执行器地址<font color="red">*</font></label>
-                            <div class="col-sm-4"><input type="text" class="form-control" name="executorAddress" placeholder="请输入“执行器地址”,多个地址逗号分隔" maxlength="50" ></div>
-                        </div>
-                        <div class="executorAppname" style="display:none;">
-                            <label for="lastname" class="col-sm-2 control-label">AppName<font color="red">*</font></label>
-                            <div class="col-sm-4"><input type="text" class="form-control" name="executorAppname" placeholder="请输入执行器对应Appname, 自动发现注册的人任务" maxlength="100" ></div>
-                        </div>
+						<label for="lastname" class="col-sm-2 control-label">执行器地址<font color="black">*</font></label>
+						<div class="col-sm-4">
+                            <div class="input-group">
+								<input type="text" class="form-control" name="executorAddress" placeholder="请输入“执行器地址”,多个地址逗号分隔" maxlength="50" >
+								<span class="input-group-addon"><b>AUTO</b>&nbsp;<input type="checkbox" class="addressAuto" checked="checked" ></span>
+                            </div>
+						</div>
                         <label for="lastname" class="col-sm-2 control-label">Cron<font color="red">*</font></label>
                         <div class="col-sm-4"><input type="text" class="form-control" name="jobCron" placeholder="请输入“Cron”" maxlength="20" ></div>
 					</div>

+ 20 - 34
xxl-job-admin/src/main/webapp/static/js/jobinfo.index.1.js

@@ -45,7 +45,6 @@ $(function() {
 					},
 	                { "data": 'jobDesc', "visible" : true},
 	                { "data": 'jobCron', "visible" : true},
-					{ "data": 'executorAppname', "visible" : false},
 	                { "data": 'executorAddress', "visible" : false},
 					{
 						"data": 'executorHandler',
@@ -114,7 +113,6 @@ $(function() {
 									' jobDesc="'+ row.jobDesc +'" '+
 									' author="'+ row.author +'" '+
 									' alarmEmail="'+ row.alarmEmail +'" '+
-									' executorAppname="'+row.executorAppname +'" '+
 									' executorAddress="'+row.executorAddress +'" '+
 									' executorHandler="'+row.executorHandler +'" '+
 									' executorParam="'+ row.executorParam +'" '+
@@ -312,29 +310,18 @@ $(function() {
 		$(".remote_panel").show();	// remote
 
 		$("#addModal .form input[name='executorHandler']").removeAttr("readonly");
-
-		// 注册模式
-		$("#addModal .form .executorAddress").show();
-		$("#addModal .form .executorAppname").hide();
 	});
 
-	// 注册模式
-	$(".ifAppName").click(function(){
-		var ifAppName = $(this).is(':checked');
-
+	// Auto 注册模式
+	$(".addressAuto").click(function(){
+		var addressAuto = $(this).is(':checked');
 		var $executorAddress = $(this).parents("form").find("input[name='executorAddress']");
-		var $executorAppname = $(this).parents("form").find("input[name='executorAppname']");
-		$($executorAddress).val("");
-		$($executorAppname).val("");
-
-		var $executorAddressDiv = $(this).parents("form").find(".executorAddress");
-		var $executorAppnameDiv = $(this).parents("form").find(".executorAppname");
-		if (ifAppName) {
-			$($executorAddressDiv).hide();
-			$($executorAppnameDiv).show();
+		if (addressAuto) {
+			$executorAddress.val("");
+			$executorAddress.attr("readonly","readonly");
 		} else {
-			$($executorAddressDiv).show();
-			$($executorAppnameDiv).hide();
+			$executorAddress.val("");
+			$executorAddress.removeAttr("readonly");
 		}
 	});
 
@@ -363,28 +350,27 @@ $(function() {
 		$("#updateModal .form input[name='jobCron']").val($(this).parent('p').attr("jobCron"));
 		$("#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='executorAppname']").val($(this).parent('p').attr("executorAppname"));
 		$("#updateModal .form input[name='executorAddress']").val($(this).parent('p').attr("executorAddress"));
 		$("#updateModal .form input[name='executorHandler']").val($(this).parent('p').attr("executorHandler"));
 		$("#updateModal .form input[name='executorParam']").val($(this).parent('p').attr("executorParam"));
         $("#updateModal .form input[name='childJobKey']").val($(this).parent('p').attr("childJobKey"));
 
+		// addressAuto
+		var executorAddress = $(this).parent('p').attr("executorAddress");
+		var $addressAuto = $("#updateModal .addressAuto");
+		var $executorAddress = $("#updateModal .form input[name='executorAddress']");
+		if (executorAddress) {
+			$addressAuto.attr("checked", false);
+			$executorAddress.removeAttr("readonly");
+		} else {
+			$addressAuto.attr("checked", true);
+			$executorAddress.attr("readonly","readonly");
+		}
+
 		// jobGroupTitle
 		var jobGroupTitle = $("#addModal .form select[name='jobGroup']").find("option[value='" + $(this).parent('p').attr("jobGroup") + "']").text();
 		$("#updateModal .form .jobGroupTitle").val(jobGroupTitle);
 
-		// appname / address, switch
-		var $executorAppname = $(this).parent('p').attr("executorAppname");
-		if ($executorAppname) {
-			$("#updateModal .form .ifAppName").attr("checked", true);
-			$("#updateModal .form .executorAppname").show();
-			$("#updateModal .form .executorAddress").hide();
-		} else {
-			$("#updateModal .form .ifAppName").attr("checked", false);
-			$("#updateModal .form .executorAppname").hide();
-			$("#updateModal .form .executorAddress").show();
-		}
-
         // glueSwitch
 		var glueSwitch = $(this).parent('p').attr("glueSwitch");
 		$("#updateModal .form input[name='glueSwitch']").val(glueSwitch);