Skip to content
项目
群组
代码片段
帮助
正在加载...
登录
切换导航
X
XXL-JOB
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分枝图
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
分枝图
统计图
创建新议题
作业
提交
议题看板
打开侧边栏
靳帅
XXL-JOB
Commits
d66bdc88
提交
d66bdc88
authored
3月 12, 2017
作者:
xueli.xue
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
底层关键数据调整:JobKey的group和name属性,改为采用执行器主键ID和任务主键ID
上级
f3573c86
隐藏空白字符变更
内嵌
并排
正在显示
33 个修改的文件
包含
219 行增加
和
336 行删除
+219
-336
README.md
README.md
+2
-0
tables_xxl_job.sql
db/tables_xxl_job.sql
+5
-7
JobCodeController.java
.../java/com/xxl/job/admin/controller/JobCodeController.java
+1
-1
JobInfoController.java
.../java/com/xxl/job/admin/controller/JobInfoController.java
+8
-8
JobLogController.java
...n/java/com/xxl/job/admin/controller/JobLogController.java
+18
-14
AdminBizImpl.java
...rc/main/java/com/xxl/job/admin/core/biz/AdminBizImpl.java
+3
-3
RemoteHttpJobBean.java
...ava/com/xxl/job/admin/core/jobbean/RemoteHttpJobBean.java
+6
-6
XxlJobInfo.java
...rc/main/java/com/xxl/job/admin/core/model/XxlJobInfo.java
+2
-11
XxlJobLog.java
...src/main/java/com/xxl/job/admin/core/model/XxlJobLog.java
+5
-5
XxlJobLogGlue.java
...main/java/com/xxl/job/admin/core/model/XxlJobLogGlue.java
+1
-1
XxlJobDynamicScheduler.java
...m/xxl/job/admin/core/schedule/XxlJobDynamicScheduler.java
+4
-2
JobMonitorHelper.java
.../java/com/xxl/job/admin/core/thread/JobMonitorHelper.java
+1
-1
IXxlJobInfoDao.java
...n/src/main/java/com/xxl/job/admin/dao/IXxlJobInfoDao.java
+2
-4
IXxlJobLogDao.java
...in/src/main/java/com/xxl/job/admin/dao/IXxlJobLogDao.java
+3
-3
XxlJobInfoDaoImpl.java
...in/java/com/xxl/job/admin/dao/impl/XxlJobInfoDaoImpl.java
+3
-17
XxlJobLogDaoImpl.java
...ain/java/com/xxl/job/admin/dao/impl/XxlJobLogDaoImpl.java
+6
-9
IXxlJobService.java
...c/main/java/com/xxl/job/admin/service/IXxlJobService.java
+4
-4
XxlJobServiceImpl.java
...ava/com/xxl/job/admin/service/impl/XxlJobServiceImpl.java
+41
-57
XxlJobInfoMapper.xml
...in/src/main/resources/mybatis-mapper/XxlJobInfoMapper.xml
+9
-23
XxlJobLogMapper.xml
...min/src/main/resources/mybatis-mapper/XxlJobLogMapper.xml
+14
-14
jobinfo.index.ftl
...rc/main/webapp/WEB-INF/template/jobinfo/jobinfo.index.ftl
+1
-2
joblog.index.ftl
.../src/main/webapp/WEB-INF/template/joblog/joblog.index.ftl
+8
-8
jobinfo.index.1.js
xxl-job-admin/src/main/webapp/static/js/jobinfo.index.1.js
+6
-10
joblog.index.1.js
xxl-job-admin/src/main/webapp/static/js/joblog.index.1.js
+9
-25
XxlJobInfoTest.java
...in/src/test/java/com/xxl/job/dao/impl/XxlJobInfoTest.java
+4
-4
ExecutorBiz.java
...-core/src/main/java/com/xxl/job/core/biz/ExecutorBiz.java
+2
-3
ExecutorBizImpl.java
.../main/java/com/xxl/job/core/biz/impl/ExecutorBizImpl.java
+10
-17
TriggerParam.java
...rc/main/java/com/xxl/job/core/biz/model/TriggerParam.java
+12
-45
XxlJobExecutor.java
...c/main/java/com/xxl/job/core/executor/XxlJobExecutor.java
+9
-9
GlueFactory.java
...core/src/main/java/com/xxl/job/core/glue/GlueFactory.java
+11
-11
GlueLoader.java
...rc/main/java/com/xxl/job/core/glue/loader/GlueLoader.java
+2
-3
DbGlueLoader.java
.../java/com/xxl/job/core/glue/loader/impl/DbGlueLoader.java
+3
-3
GlueJobHandler.java
...in/java/com/xxl/job/core/handler/impl/GlueJobHandler.java
+4
-6
没有找到文件。
README.md
浏览文件 @
d66bdc88
...
@@ -738,6 +738,8 @@ Tips: 历史版本(V1.3.x)目前已经Release至稳定版本, 进入维护阶段
...
@@ -738,6 +738,8 @@ Tips: 历史版本(V1.3.x)目前已经Release至稳定版本, 进入维护阶段
-
4、规范系统配置数据,通过配置文件统一管理;
-
4、规范系统配置数据,通过配置文件统一管理;
-
5、执行器支持手动设置执行地址列表,提供开关切换使用注册地址还是手动设置的地址;
-
5、执行器支持手动设置执行地址列表,提供开关切换使用注册地址还是手动设置的地址;
-
6、执行器路由规则:第一个、循环、随机、顺序故障(默认)转移;
-
6、执行器路由规则:第一个、循环、随机、顺序故障(默认)转移;
-
7、底层扩展数据接口调整;
-
8、新建任务默认为非运行状态;
#### TODO LIST
#### TODO LIST
-
1、支持脚本JOB(源码或指定路径), 即shell/python/php等, 日志实时输出并支持在线监控;定制JobHandler实现;
-
1、支持脚本JOB(源码或指定路径), 即shell/python/php等, 日志实时输出并支持在线监控;定制JobHandler实现;
...
...
db/tables_xxl_job.sql
浏览文件 @
d66bdc88
...
@@ -147,8 +147,7 @@ CREATE TABLE XXL_JOB_QRTZ_LOCKS
...
@@ -147,8 +147,7 @@ CREATE TABLE XXL_JOB_QRTZ_LOCKS
CREATE
TABLE
`XXL_JOB_QRTZ_TRIGGER_INFO`
(
CREATE
TABLE
`XXL_JOB_QRTZ_TRIGGER_INFO`
(
`id`
int
(
11
)
NOT
NULL
AUTO_INCREMENT
,
`id`
int
(
11
)
NOT
NULL
AUTO_INCREMENT
,
`job_group`
int
(
11
)
NOT
NULL
COMMENT
'任务组(执行器ID)'
,
`job_group`
int
(
11
)
NOT
NULL
COMMENT
'执行器主键ID'
,
`job_name`
varchar
(
255
)
NOT
NULL
COMMENT
'任务名'
,
`job_cron`
varchar
(
128
)
NOT
NULL
COMMENT
'任务执行CRON'
,
`job_cron`
varchar
(
128
)
NOT
NULL
COMMENT
'任务执行CRON'
,
`job_desc`
varchar
(
255
)
NOT
NULL
,
`job_desc`
varchar
(
255
)
NOT
NULL
,
`add_time`
datetime
DEFAULT
NULL
,
`add_time`
datetime
DEFAULT
NULL
,
...
@@ -167,8 +166,8 @@ CREATE TABLE `XXL_JOB_QRTZ_TRIGGER_INFO` (
...
@@ -167,8 +166,8 @@ CREATE TABLE `XXL_JOB_QRTZ_TRIGGER_INFO` (
CREATE
TABLE
`XXL_JOB_QRTZ_TRIGGER_LOG`
(
CREATE
TABLE
`XXL_JOB_QRTZ_TRIGGER_LOG`
(
`id`
int
(
11
)
NOT
NULL
AUTO_INCREMENT
,
`id`
int
(
11
)
NOT
NULL
AUTO_INCREMENT
,
`job_group`
int
(
11
)
NOT
NULL
COMMENT
'
任务组
'
,
`job_group`
int
(
11
)
NOT
NULL
COMMENT
'
执行器主键ID
'
,
`job_
name`
varchar
(
255
)
NOT
NULL
COMMENT
'任务名
'
,
`job_
id`
int
(
11
)
NOT
NULL
COMMENT
'任务,主键ID
'
,
`executor_address`
varchar
(
255
)
DEFAULT
NULL
COMMENT
'执行器地址,本次执行的地址'
,
`executor_address`
varchar
(
255
)
DEFAULT
NULL
COMMENT
'执行器地址,本次执行的地址'
,
`executor_handler`
varchar
(
255
)
DEFAULT
NULL
COMMENT
'执行器任务handler'
,
`executor_handler`
varchar
(
255
)
DEFAULT
NULL
COMMENT
'执行器任务handler'
,
`executor_param`
varchar
(
255
)
DEFAULT
NULL
COMMENT
'executor_param'
,
`executor_param`
varchar
(
255
)
DEFAULT
NULL
COMMENT
'executor_param'
,
...
@@ -181,10 +180,9 @@ CREATE TABLE `XXL_JOB_QRTZ_TRIGGER_LOG` (
...
@@ -181,10 +180,9 @@ CREATE TABLE `XXL_JOB_QRTZ_TRIGGER_LOG` (
PRIMARY
KEY
(
`id`
)
PRIMARY
KEY
(
`id`
)
)
ENGINE
=
InnoDB
DEFAULT
CHARSET
=
utf8
;
)
ENGINE
=
InnoDB
DEFAULT
CHARSET
=
utf8
;
CREATE
TABLE
XXL_JOB_QRTZ_TRIGGER_LOGGLUE
(
CREATE
TABLE
`XXL_JOB_QRTZ_TRIGGER_LOGGLUE`
(
`id`
int
(
11
)
NOT
NULL
AUTO_INCREMENT
,
`id`
int
(
11
)
NOT
NULL
AUTO_INCREMENT
,
`job_group`
int
(
11
)
NOT
NULL
,
`job_id`
int
(
11
)
NOT
NULL
COMMENT
'任务,主键ID'
,
`job_name`
varchar
(
255
)
NOT
NULL
,
`glue_source`
text
,
`glue_source`
text
,
`glue_remark`
varchar
(
128
)
NOT
NULL
,
`glue_remark`
varchar
(
128
)
NOT
NULL
,
`add_time`
timestamp
NULL
DEFAULT
NULL
,
`add_time`
timestamp
NULL
DEFAULT
NULL
,
...
...
xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobCodeController.java
浏览文件 @
d66bdc88
...
@@ -63,7 +63,7 @@ public class JobCodeController {
...
@@ -63,7 +63,7 @@ public class JobCodeController {
xxlJobInfoDao
.
update
(
exists_jobInfo
);
xxlJobInfoDao
.
update
(
exists_jobInfo
);
// remove code backup more than 30
// remove code backup more than 30
xxlJobLogGlueDao
.
removeOld
(
exists_jobInfo
.
getId
(),
3
);
xxlJobLogGlueDao
.
removeOld
(
exists_jobInfo
.
getId
(),
3
0
);
return
ReturnT
.
SUCCESS
;
return
ReturnT
.
SUCCESS
;
}
}
...
...
xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobInfoController.java
浏览文件 @
d66bdc88
...
@@ -64,26 +64,26 @@ public class JobInfoController {
...
@@ -64,26 +64,26 @@ public class JobInfoController {
@RequestMapping
(
"/remove"
)
@RequestMapping
(
"/remove"
)
@ResponseBody
@ResponseBody
public
ReturnT
<
String
>
remove
(
int
jobGroup
,
String
jobName
)
{
public
ReturnT
<
String
>
remove
(
int
id
)
{
return
xxlJobService
.
remove
(
jobGroup
,
jobName
);
return
xxlJobService
.
remove
(
id
);
}
}
@RequestMapping
(
"/pause"
)
@RequestMapping
(
"/pause"
)
@ResponseBody
@ResponseBody
public
ReturnT
<
String
>
pause
(
int
jobGroup
,
String
jobName
)
{
public
ReturnT
<
String
>
pause
(
int
id
)
{
return
xxlJobService
.
pause
(
jobGroup
,
jobName
);
return
xxlJobService
.
pause
(
id
);
}
}
@RequestMapping
(
"/resume"
)
@RequestMapping
(
"/resume"
)
@ResponseBody
@ResponseBody
public
ReturnT
<
String
>
resume
(
int
jobGroup
,
String
jobName
)
{
public
ReturnT
<
String
>
resume
(
int
id
)
{
return
xxlJobService
.
resume
(
jobGroup
,
jobName
);
return
xxlJobService
.
resume
(
id
);
}
}
@RequestMapping
(
"/trigger"
)
@RequestMapping
(
"/trigger"
)
@ResponseBody
@ResponseBody
public
ReturnT
<
String
>
triggerJob
(
int
jobGroup
,
String
jobName
)
{
public
ReturnT
<
String
>
triggerJob
(
int
id
)
{
return
xxlJobService
.
triggerJob
(
jobGroup
,
jobName
);
return
xxlJobService
.
triggerJob
(
id
);
}
}
}
}
xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobLogController.java
浏览文件 @
d66bdc88
...
@@ -40,29 +40,33 @@ public class JobLogController {
...
@@ -40,29 +40,33 @@ public class JobLogController {
public
IXxlJobLogDao
xxlJobLogDao
;
public
IXxlJobLogDao
xxlJobLogDao
;
@RequestMapping
@RequestMapping
public
String
index
(
Model
model
,
String
jobGroup
,
String
jobName
)
{
public
String
index
(
Model
model
,
@RequestParam
(
required
=
false
,
defaultValue
=
"0"
)
Integer
jobId
)
{
//
任务组
//
执行器列表
List
<
XxlJobGroup
>
jobGroupList
=
xxlJobGroupDao
.
findAll
();
List
<
XxlJobGroup
>
jobGroupList
=
xxlJobGroupDao
.
findAll
();
model
.
addAttribute
(
"jobGroup"
,
jobGroup
);
model
.
addAttribute
(
"jobName"
,
jobName
);
model
.
addAttribute
(
"JobGroupList"
,
jobGroupList
);
model
.
addAttribute
(
"JobGroupList"
,
jobGroupList
);
// 任务
if
(
jobId
>
0
)
{
XxlJobInfo
jobInfo
=
xxlJobInfoDao
.
loadById
(
jobId
);
model
.
addAttribute
(
"jobInfo"
,
jobInfo
);
}
return
"joblog/joblog.index"
;
return
"joblog/joblog.index"
;
}
}
@RequestMapping
(
"/getJobsByGroup"
)
@RequestMapping
(
"/getJobsByGroup"
)
@ResponseBody
@ResponseBody
public
ReturnT
<
List
<
XxlJob
Log
>>
listJobByGroup
(
String
jobGroup
){
public
ReturnT
<
List
<
XxlJob
Info
>>
listJobByGroup
(
String
jobGroup
){
List
<
XxlJob
Log
>
list
=
xxlJobInfoDao
.
getJobsByGroup
(
jobGroup
);
List
<
XxlJob
Info
>
list
=
xxlJobInfoDao
.
getJobsByGroup
(
jobGroup
);
return
new
ReturnT
<
List
<
XxlJob
Log
>>(
list
);
return
new
ReturnT
<
List
<
XxlJob
Info
>>(
list
);
}
}
@RequestMapping
(
"/pageList"
)
@RequestMapping
(
"/pageList"
)
@ResponseBody
@ResponseBody
public
Map
<
String
,
Object
>
pageList
(
@RequestParam
(
required
=
false
,
defaultValue
=
"0"
)
int
start
,
public
Map
<
String
,
Object
>
pageList
(
@RequestParam
(
required
=
false
,
defaultValue
=
"0"
)
int
start
,
@RequestParam
(
required
=
false
,
defaultValue
=
"10"
)
int
length
,
@RequestParam
(
required
=
false
,
defaultValue
=
"10"
)
int
length
,
int
jobGroup
,
String
jobName
,
String
filterTime
)
{
int
jobGroup
,
int
jobId
,
String
filterTime
)
{
// parse param
// parse param
Date
triggerTimeStart
=
null
;
Date
triggerTimeStart
=
null
;
...
@@ -78,8 +82,8 @@ public class JobLogController {
...
@@ -78,8 +82,8 @@ public class JobLogController {
}
}
// page query
// page query
List
<
XxlJobLog
>
list
=
xxlJobLogDao
.
pageList
(
start
,
length
,
jobGroup
,
job
Name
,
triggerTimeStart
,
triggerTimeEnd
);
List
<
XxlJobLog
>
list
=
xxlJobLogDao
.
pageList
(
start
,
length
,
jobGroup
,
job
Id
,
triggerTimeStart
,
triggerTimeEnd
);
int
list_count
=
xxlJobLogDao
.
pageListCount
(
start
,
length
,
jobGroup
,
job
Name
,
triggerTimeStart
,
triggerTimeEnd
);
int
list_count
=
xxlJobLogDao
.
pageListCount
(
start
,
length
,
jobGroup
,
job
Id
,
triggerTimeStart
,
triggerTimeEnd
);
// package result
// package result
Map
<
String
,
Object
>
maps
=
new
HashMap
<
String
,
Object
>();
Map
<
String
,
Object
>
maps
=
new
HashMap
<
String
,
Object
>();
...
@@ -130,8 +134,8 @@ public class JobLogController {
...
@@ -130,8 +134,8 @@ public class JobLogController {
public
ReturnT
<
String
>
logKill
(
int
id
){
public
ReturnT
<
String
>
logKill
(
int
id
){
// base check
// base check
XxlJobLog
log
=
xxlJobLogDao
.
load
(
id
);
XxlJobLog
log
=
xxlJobLogDao
.
load
(
id
);
XxlJobInfo
jobInfo
=
xxlJobInfoDao
.
load
(
log
.
getJobGroup
(),
log
.
getJobName
());
XxlJobInfo
jobInfo
=
xxlJobInfoDao
.
load
ById
(
log
.
getJobId
());
if
(
log
==
null
||
jobInfo
==
null
)
{
if
(
jobInfo
==
null
)
{
return
new
ReturnT
<
String
>(
500
,
"参数异常"
);
return
new
ReturnT
<
String
>(
500
,
"参数异常"
);
}
}
if
(
ReturnT
.
SUCCESS_CODE
!=
log
.
getTriggerCode
())
{
if
(
ReturnT
.
SUCCESS_CODE
!=
log
.
getTriggerCode
())
{
...
@@ -146,7 +150,7 @@ public class JobLogController {
...
@@ -146,7 +150,7 @@ public class JobLogController {
e
.
printStackTrace
();
e
.
printStackTrace
();
return
new
ReturnT
<
String
>(
500
,
e
.
getMessage
());
return
new
ReturnT
<
String
>(
500
,
e
.
getMessage
());
}
}
ReturnT
<
String
>
runResult
=
executorBiz
.
kill
(
String
.
valueOf
(
log
.
getJobGroup
()),
log
.
getJobName
());
ReturnT
<
String
>
runResult
=
executorBiz
.
kill
(
jobInfo
.
getId
());
if
(
ReturnT
.
SUCCESS_CODE
==
runResult
.
getCode
())
{
if
(
ReturnT
.
SUCCESS_CODE
==
runResult
.
getCode
())
{
log
.
setHandleCode
(
ReturnT
.
FAIL_CODE
);
log
.
setHandleCode
(
ReturnT
.
FAIL_CODE
);
...
...
xxl-job-admin/src/main/java/com/xxl/job/admin/core/biz/AdminBizImpl.java
浏览文件 @
d66bdc88
...
@@ -32,17 +32,17 @@ public class AdminBizImpl implements AdminBiz {
...
@@ -32,17 +32,17 @@ public class AdminBizImpl implements AdminBiz {
// trigger success, to trigger child job, and avoid repeat trigger child job
// trigger success, to trigger child job, and avoid repeat trigger child job
String
childTriggerMsg
=
null
;
String
childTriggerMsg
=
null
;
if
(
ReturnT
.
SUCCESS_CODE
==
handleCallbackParam
.
getCode
()
&&
ReturnT
.
SUCCESS_CODE
!=
log
.
getHandleCode
())
{
if
(
ReturnT
.
SUCCESS_CODE
==
handleCallbackParam
.
getCode
()
&&
ReturnT
.
SUCCESS_CODE
!=
log
.
getHandleCode
())
{
XxlJobInfo
xxlJobInfo
=
XxlJobDynamicScheduler
.
xxlJobInfoDao
.
load
(
log
.
getJobGroup
(),
log
.
getJobName
());
XxlJobInfo
xxlJobInfo
=
XxlJobDynamicScheduler
.
xxlJobInfoDao
.
load
ById
(
log
.
getJobId
());
if
(
xxlJobInfo
!=
null
&&
StringUtils
.
isNotBlank
(
xxlJobInfo
.
getChildJobKey
()))
{
if
(
xxlJobInfo
!=
null
&&
StringUtils
.
isNotBlank
(
xxlJobInfo
.
getChildJobKey
()))
{
childTriggerMsg
=
"<hr>"
;
childTriggerMsg
=
"<hr>"
;
String
[]
childJobKeys
=
xxlJobInfo
.
getChildJobKey
().
split
(
","
);
String
[]
childJobKeys
=
xxlJobInfo
.
getChildJobKey
().
split
(
","
);
for
(
int
i
=
0
;
i
<
childJobKeys
.
length
;
i
++)
{
for
(
int
i
=
0
;
i
<
childJobKeys
.
length
;
i
++)
{
String
[]
jobKeyArr
=
childJobKeys
[
i
].
split
(
"_"
);
String
[]
jobKeyArr
=
childJobKeys
[
i
].
split
(
"_"
);
if
(
jobKeyArr
!=
null
&&
jobKeyArr
.
length
==
2
)
{
if
(
jobKeyArr
!=
null
&&
jobKeyArr
.
length
==
2
)
{
XxlJobInfo
childJobInfo
=
XxlJobDynamicScheduler
.
xxlJobInfoDao
.
load
(
Integer
.
valueOf
(
jobKeyArr
[
0
]),
jobKeyArr
[
1
]
);
XxlJobInfo
childJobInfo
=
XxlJobDynamicScheduler
.
xxlJobInfoDao
.
load
ById
(
Integer
.
valueOf
(
jobKeyArr
[
1
])
);
if
(
childJobInfo
!=
null
)
{
if
(
childJobInfo
!=
null
)
{
try
{
try
{
boolean
ret
=
XxlJobDynamicScheduler
.
triggerJob
(
childJobInfo
.
getJobName
(
),
String
.
valueOf
(
childJobInfo
.
getJobGroup
()));
boolean
ret
=
XxlJobDynamicScheduler
.
triggerJob
(
String
.
valueOf
(
childJobInfo
.
getId
()
),
String
.
valueOf
(
childJobInfo
.
getJobGroup
()));
// add msg
// add msg
childTriggerMsg
+=
MessageFormat
.
format
(
"<br> {0}/{1} 触发子任务成功, 子任务Key: {2}, status: {3}, 子任务描述: {4}"
,
childTriggerMsg
+=
MessageFormat
.
format
(
"<br> {0}/{1} 触发子任务成功, 子任务Key: {2}, status: {3}, 子任务描述: {4}"
,
...
...
xxl-job-admin/src/main/java/com/xxl/job/admin/core/jobbean/RemoteHttpJobBean.java
浏览文件 @
d66bdc88
...
@@ -35,12 +35,13 @@ public class RemoteHttpJobBean extends QuartzJobBean {
...
@@ -35,12 +35,13 @@ public class RemoteHttpJobBean extends QuartzJobBean {
protected
void
executeInternal
(
JobExecutionContext
context
)
protected
void
executeInternal
(
JobExecutionContext
context
)
throws
JobExecutionException
{
throws
JobExecutionException
{
JobKey
jobKey
=
context
.
getTrigger
().
getJobKey
();
JobKey
jobKey
=
context
.
getTrigger
().
getJobKey
();
Integer
jobId
=
Integer
.
valueOf
(
jobKey
.
getName
());
XxlJobInfo
jobInfo
=
XxlJobDynamicScheduler
.
xxlJobInfoDao
.
load
(
Integer
.
valueOf
(
jobKey
.
getGroup
()),
jobKey
.
getName
());
XxlJobInfo
jobInfo
=
XxlJobDynamicScheduler
.
xxlJobInfoDao
.
loadById
(
jobId
);
// save log
// save log
XxlJobLog
jobLog
=
new
XxlJobLog
();
XxlJobLog
jobLog
=
new
XxlJobLog
();
jobLog
.
setJobGroup
(
jobInfo
.
getJobGroup
());
jobLog
.
setJobGroup
(
jobInfo
.
getJobGroup
());
jobLog
.
setJob
Name
(
jobInfo
.
getJobName
());
jobLog
.
setJob
Id
(
jobInfo
.
getId
());
XxlJobDynamicScheduler
.
xxlJobLogDao
.
save
(
jobLog
);
XxlJobDynamicScheduler
.
xxlJobLogDao
.
save
(
jobLog
);
logger
.
debug
(
">>>>>>>>>>> xxl-job trigger start, jobId:{}"
,
jobLog
.
getId
());
logger
.
debug
(
">>>>>>>>>>> xxl-job trigger start, jobId:{}"
,
jobLog
.
getId
());
...
@@ -57,14 +58,13 @@ public class RemoteHttpJobBean extends QuartzJobBean {
...
@@ -57,14 +58,13 @@ public class RemoteHttpJobBean extends QuartzJobBean {
// trigger request
// trigger request
TriggerParam
triggerParam
=
new
TriggerParam
();
TriggerParam
triggerParam
=
new
TriggerParam
();
triggerParam
.
setJobGroup
(
String
.
valueOf
(
jobInfo
.
getJobGroup
()));
triggerParam
.
setJobId
(
jobInfo
.
getId
());
triggerParam
.
setJobName
(
jobInfo
.
getJobName
());
triggerParam
.
setExecutorHandler
(
jobInfo
.
getExecutorHandler
());
triggerParam
.
setExecutorHandler
(
jobInfo
.
getExecutorHandler
());
triggerParam
.
setExecutorParams
(
jobInfo
.
getExecutorParam
());
triggerParam
.
setExecutorParams
(
jobInfo
.
getExecutorParam
());
triggerParam
.
setGlueSwitch
((
jobInfo
.
getGlueSwitch
()==
0
)?
false
:
true
);
triggerParam
.
setGlueSwitch
((
jobInfo
.
getGlueSwitch
()==
0
)?
false
:
true
);
triggerParam
.
setLogAddress
(
adminAddressSet
);
triggerParam
.
setLogId
(
jobLog
.
getId
());
triggerParam
.
setLogId
(
jobLog
.
getId
());
triggerParam
.
setLogDateTim
(
jobLog
.
getTriggerTime
().
getTime
());
triggerParam
.
setLogDateTim
(
jobLog
.
getTriggerTime
().
getTime
());
triggerParam
.
setLogAddress
(
adminAddressSet
);
// parse address
// parse address
String
groupAddressInfo
=
"注册方式:"
;
String
groupAddressInfo
=
"注册方式:"
;
...
...
xxl-job-admin/src/main/java/com/xxl/job/admin/core/model/XxlJobInfo.java
浏览文件 @
d66bdc88
...
@@ -8,10 +8,9 @@ import java.util.Date;
...
@@ -8,10 +8,9 @@ import java.util.Date;
*/
*/
public
class
XxlJobInfo
{
public
class
XxlJobInfo
{
private
int
id
;
private
int
id
;
// 主键ID (JobKey.name)
private
int
jobGroup
;
// 任务组 (执行器ID)
private
int
jobGroup
;
// 执行器主键ID (JobKey.group)
private
String
jobName
;
// 任务名
private
String
jobCron
;
// 任务执行CRON表达式 【base on quartz】
private
String
jobCron
;
// 任务执行CRON表达式 【base on quartz】
private
String
jobDesc
;
private
String
jobDesc
;
...
@@ -50,14 +49,6 @@ public class XxlJobInfo {
...
@@ -50,14 +49,6 @@ public class XxlJobInfo {
this
.
jobGroup
=
jobGroup
;
this
.
jobGroup
=
jobGroup
;
}
}
public
String
getJobName
()
{
return
jobName
;
}
public
void
setJobName
(
String
jobName
)
{
this
.
jobName
=
jobName
;
}
public
String
getJobCron
()
{
public
String
getJobCron
()
{
return
jobCron
;
return
jobCron
;
}
}
...
...
xxl-job-admin/src/main/java/com/xxl/job/admin/core/model/XxlJobLog.java
浏览文件 @
d66bdc88
...
@@ -12,7 +12,7 @@ public class XxlJobLog {
...
@@ -12,7 +12,7 @@ public class XxlJobLog {
// job info
// job info
private
int
jobGroup
;
private
int
jobGroup
;
private
String
jobName
;
private
int
jobId
;
// execute info
// execute info
private
String
executorAddress
;
private
String
executorAddress
;
...
@@ -45,12 +45,12 @@ public class XxlJobLog {
...
@@ -45,12 +45,12 @@ public class XxlJobLog {
this
.
jobGroup
=
jobGroup
;
this
.
jobGroup
=
jobGroup
;
}
}
public
String
getJobName
()
{
public
int
getJobId
()
{
return
job
Name
;
return
job
Id
;
}
}
public
void
setJob
Name
(
String
jobName
)
{
public
void
setJob
Id
(
int
jobId
)
{
this
.
job
Name
=
jobName
;
this
.
job
Id
=
jobId
;
}
}
public
String
getExecutorAddress
()
{
public
String
getExecutorAddress
()
{
...
...
xxl-job-admin/src/main/java/com/xxl/job/admin/core/model/XxlJobLogGlue.java
浏览文件 @
d66bdc88
...
@@ -7,7 +7,7 @@ package com.xxl.job.admin.core.model;
...
@@ -7,7 +7,7 @@ package com.xxl.job.admin.core.model;
public
class
XxlJobLogGlue
{
public
class
XxlJobLogGlue
{
private
int
id
;
private
int
id
;
private
int
jobId
;
private
int
jobId
;
// 任务主键ID
private
String
glueSource
;
private
String
glueSource
;
private
String
glueRemark
;
private
String
glueRemark
;
private
String
addTime
;
private
String
addTime
;
...
...
xxl-job-admin/src/main/java/com/xxl/job/admin/core/schedule/XxlJobDynamicScheduler.java
浏览文件 @
d66bdc88
...
@@ -143,7 +143,9 @@ public final class XxlJobDynamicScheduler implements ApplicationContextAware, In
...
@@ -143,7 +143,9 @@ public final class XxlJobDynamicScheduler implements ApplicationContextAware, In
// fill job info
// fill job info
public
static
void
fillJobInfo
(
XxlJobInfo
jobInfo
)
{
public
static
void
fillJobInfo
(
XxlJobInfo
jobInfo
)
{
// TriggerKey : name + group
// TriggerKey : name + group
TriggerKey
triggerKey
=
TriggerKey
.
triggerKey
(
jobInfo
.
getJobName
(),
String
.
valueOf
(
jobInfo
.
getJobGroup
()));
String
group
=
String
.
valueOf
(
jobInfo
.
getJobGroup
());
String
name
=
String
.
valueOf
(
jobInfo
.
getId
());
TriggerKey
triggerKey
=
TriggerKey
.
triggerKey
(
name
,
group
);
try
{
try
{
Trigger
trigger
=
scheduler
.
getTrigger
(
triggerKey
);
Trigger
trigger
=
scheduler
.
getTrigger
(
triggerKey
);
...
@@ -177,7 +179,7 @@ public final class XxlJobDynamicScheduler implements ApplicationContextAware, In
...
@@ -177,7 +179,7 @@ public final class XxlJobDynamicScheduler implements ApplicationContextAware, In
// addJob 新增
// addJob 新增
@SuppressWarnings
(
"unchecked"
)
@SuppressWarnings
(
"unchecked"
)
public
static
boolean
addJob
(
String
job
Group
,
String
jobName
,
String
cronExpression
)
throws
SchedulerException
{
public
static
boolean
addJob
(
String
job
Name
,
String
jobGroup
,
String
cronExpression
)
throws
SchedulerException
{
// TriggerKey : name + group
// TriggerKey : name + group
TriggerKey
triggerKey
=
TriggerKey
.
triggerKey
(
jobName
,
jobGroup
);
TriggerKey
triggerKey
=
TriggerKey
.
triggerKey
(
jobName
,
jobGroup
);
JobKey
jobKey
=
new
JobKey
(
jobName
,
jobGroup
);
JobKey
jobKey
=
new
JobKey
(
jobName
,
jobGroup
);
...
...
xxl-job-admin/src/main/java/com/xxl/job/admin/core/thread/JobMonitorHelper.java
浏览文件 @
d66bdc88
...
@@ -57,7 +57,7 @@ public class JobMonitorHelper {
...
@@ -57,7 +57,7 @@ public class JobMonitorHelper {
// pass
// pass
}
}
if
(
ReturnT
.
FAIL_CODE
==
log
.
getTriggerCode
()||
ReturnT
.
FAIL_CODE
==
log
.
getHandleCode
())
{
if
(
ReturnT
.
FAIL_CODE
==
log
.
getTriggerCode
()||
ReturnT
.
FAIL_CODE
==
log
.
getHandleCode
())
{
XxlJobInfo
info
=
XxlJobDynamicScheduler
.
xxlJobInfoDao
.
load
(
log
.
getJobGroup
(),
log
.
getJobName
());
XxlJobInfo
info
=
XxlJobDynamicScheduler
.
xxlJobInfoDao
.
load
ById
(
log
.
getJobId
());
if
(
info
!=
null
&&
info
.
getAlarmEmail
()!=
null
&&
info
.
getAlarmEmail
().
trim
().
length
()>
0
)
{
if
(
info
!=
null
&&
info
.
getAlarmEmail
()!=
null
&&
info
.
getAlarmEmail
().
trim
().
length
()>
0
)
{
Set
<
String
>
emailSet
=
new
HashSet
<
String
>(
Arrays
.
asList
(
info
.
getAlarmEmail
().
split
(
","
)));
Set
<
String
>
emailSet
=
new
HashSet
<
String
>(
Arrays
.
asList
(
info
.
getAlarmEmail
().
split
(
","
)));
...
...
xxl-job-admin/src/main/java/com/xxl/job/admin/dao/IXxlJobInfoDao.java
浏览文件 @
d66bdc88
package
com
.
xxl
.
job
.
admin
.
dao
;
package
com
.
xxl
.
job
.
admin
.
dao
;
import
com.xxl.job.admin.core.model.XxlJobInfo
;
import
com.xxl.job.admin.core.model.XxlJobInfo
;
import
com.xxl.job.admin.core.model.XxlJobLog
;
import
java.util.List
;
import
java.util.List
;
...
@@ -18,11 +17,10 @@ public interface IXxlJobInfoDao {
...
@@ -18,11 +17,10 @@ public interface IXxlJobInfoDao {
public
int
save
(
XxlJobInfo
info
);
public
int
save
(
XxlJobInfo
info
);
public
XxlJobInfo
loadById
(
int
id
);
public
XxlJobInfo
loadById
(
int
id
);
public
XxlJobInfo
load
(
int
jobGroup
,
String
jobName
);
public
int
update
(
XxlJobInfo
item
);
public
int
update
(
XxlJobInfo
item
);
public
int
delete
(
int
jobGroup
,
String
jobName
);
public
int
delete
(
int
id
);
public
List
<
XxlJob
Log
>
getJobsByGroup
(
String
jobGroup
);
public
List
<
XxlJob
Info
>
getJobsByGroup
(
String
jobGroup
);
}
}
xxl-job-admin/src/main/java/com/xxl/job/admin/dao/IXxlJobLogDao.java
浏览文件 @
d66bdc88
...
@@ -11,8 +11,8 @@ import java.util.List;
...
@@ -11,8 +11,8 @@ import java.util.List;
*/
*/
public
interface
IXxlJobLogDao
{
public
interface
IXxlJobLogDao
{
public
List
<
XxlJobLog
>
pageList
(
int
offset
,
int
pagesize
,
int
jobGroup
,
String
jobName
,
Date
triggerTimeStart
,
Date
triggerTimeEnd
);
public
List
<
XxlJobLog
>
pageList
(
int
offset
,
int
pagesize
,
int
jobGroup
,
int
jobId
,
Date
triggerTimeStart
,
Date
triggerTimeEnd
);
public
int
pageListCount
(
int
offset
,
int
pagesize
,
int
jobGroup
,
String
jobName
,
Date
triggerTimeStart
,
Date
triggerTimeEnd
);
public
int
pageListCount
(
int
offset
,
int
pagesize
,
int
jobGroup
,
int
jobId
,
Date
triggerTimeStart
,
Date
triggerTimeEnd
);
public
XxlJobLog
load
(
int
id
);
public
XxlJobLog
load
(
int
id
);
...
@@ -20,6 +20,6 @@ public interface IXxlJobLogDao {
...
@@ -20,6 +20,6 @@ public interface IXxlJobLogDao {
public
int
updateTriggerInfo
(
XxlJobLog
xxlJobLog
);
public
int
updateTriggerInfo
(
XxlJobLog
xxlJobLog
);
public
int
updateHandleInfo
(
XxlJobLog
xxlJobLog
);
public
int
updateHandleInfo
(
XxlJobLog
xxlJobLog
);
public
int
delete
(
int
job
Group
,
String
jobName
);
public
int
delete
(
int
job
Id
);
}
}
xxl-job-admin/src/main/java/com/xxl/job/admin/dao/impl/XxlJobInfoDaoImpl.java
浏览文件 @
d66bdc88
package
com
.
xxl
.
job
.
admin
.
dao
.
impl
;
package
com
.
xxl
.
job
.
admin
.
dao
.
impl
;
import
com.xxl.job.admin.core.model.XxlJobInfo
;
import
com.xxl.job.admin.core.model.XxlJobInfo
;
import
com.xxl.job.admin.core.model.XxlJobLog
;
import
com.xxl.job.admin.dao.IXxlJobInfoDao
;
import
com.xxl.job.admin.dao.IXxlJobInfoDao
;
import
org.mybatis.spring.SqlSessionTemplate
;
import
org.mybatis.spring.SqlSessionTemplate
;
import
org.springframework.stereotype.Repository
;
import
org.springframework.stereotype.Repository
;
...
@@ -52,31 +51,18 @@ public class XxlJobInfoDaoImpl implements IXxlJobInfoDao {
...
@@ -52,31 +51,18 @@ public class XxlJobInfoDaoImpl implements IXxlJobInfoDao {
return
sqlSessionTemplate
.
selectOne
(
"XxlJobInfoMapper.loadById"
,
id
);
return
sqlSessionTemplate
.
selectOne
(
"XxlJobInfoMapper.loadById"
,
id
);
}
}
@Override
public
XxlJobInfo
load
(
int
jobGroup
,
String
jobName
)
{
HashMap
<
String
,
Object
>
params
=
new
HashMap
<
String
,
Object
>();
params
.
put
(
"jobGroup"
,
jobGroup
);
params
.
put
(
"jobName"
,
jobName
);
return
sqlSessionTemplate
.
selectOne
(
"XxlJobInfoMapper.load"
,
params
);
}
@Override
@Override
public
int
update
(
XxlJobInfo
item
)
{
public
int
update
(
XxlJobInfo
item
)
{
return
sqlSessionTemplate
.
update
(
"XxlJobInfoMapper.update"
,
item
);
return
sqlSessionTemplate
.
update
(
"XxlJobInfoMapper.update"
,
item
);
}
}
@Override
@Override
public
int
delete
(
int
jobGroup
,
String
jobName
)
{
public
int
delete
(
int
id
)
{
HashMap
<
String
,
Object
>
params
=
new
HashMap
<
String
,
Object
>();
return
sqlSessionTemplate
.
update
(
"XxlJobInfoMapper.delete"
,
id
);
params
.
put
(
"jobGroup"
,
jobGroup
);
params
.
put
(
"jobName"
,
jobName
);
return
sqlSessionTemplate
.
update
(
"XxlJobInfoMapper.delete"
,
params
);
}
}
@Override
@Override
public
List
<
XxlJob
Log
>
getJobsByGroup
(
String
jobGroup
)
{
public
List
<
XxlJob
Info
>
getJobsByGroup
(
String
jobGroup
)
{
return
sqlSessionTemplate
.
selectList
(
"XxlJobInfoMapper.getJobsByGroup"
,
jobGroup
);
return
sqlSessionTemplate
.
selectList
(
"XxlJobInfoMapper.getJobsByGroup"
,
jobGroup
);
}
}
...
...
xxl-job-admin/src/main/java/com/xxl/job/admin/dao/impl/XxlJobLogDaoImpl.java
浏览文件 @
d66bdc88
...
@@ -21,12 +21,12 @@ public class XxlJobLogDaoImpl implements IXxlJobLogDao {
...
@@ -21,12 +21,12 @@ public class XxlJobLogDaoImpl implements IXxlJobLogDao {
public
SqlSessionTemplate
sqlSessionTemplate
;
public
SqlSessionTemplate
sqlSessionTemplate
;
@Override
@Override
public
List
<
XxlJobLog
>
pageList
(
int
offset
,
int
pagesize
,
int
jobGroup
,
String
jobName
,
Date
triggerTimeStart
,
Date
triggerTimeEnd
)
{
public
List
<
XxlJobLog
>
pageList
(
int
offset
,
int
pagesize
,
int
jobGroup
,
int
jobId
,
Date
triggerTimeStart
,
Date
triggerTimeEnd
)
{
HashMap
<
String
,
Object
>
params
=
new
HashMap
<
String
,
Object
>();
HashMap
<
String
,
Object
>
params
=
new
HashMap
<
String
,
Object
>();
params
.
put
(
"offset"
,
offset
);
params
.
put
(
"offset"
,
offset
);
params
.
put
(
"pagesize"
,
pagesize
);
params
.
put
(
"pagesize"
,
pagesize
);
params
.
put
(
"jobGroup"
,
jobGroup
);
params
.
put
(
"jobGroup"
,
jobGroup
);
params
.
put
(
"job
Name"
,
jobName
);
params
.
put
(
"job
Id"
,
jobId
);
params
.
put
(
"triggerTimeStart"
,
triggerTimeStart
);
params
.
put
(
"triggerTimeStart"
,
triggerTimeStart
);
params
.
put
(
"triggerTimeEnd"
,
triggerTimeEnd
);
params
.
put
(
"triggerTimeEnd"
,
triggerTimeEnd
);
...
@@ -34,12 +34,12 @@ public class XxlJobLogDaoImpl implements IXxlJobLogDao {
...
@@ -34,12 +34,12 @@ public class XxlJobLogDaoImpl implements IXxlJobLogDao {
}
}
@Override
@Override
public
int
pageListCount
(
int
offset
,
int
pagesize
,
int
jobGroup
,
String
jobName
,
Date
triggerTimeStart
,
Date
triggerTimeEnd
)
{
public
int
pageListCount
(
int
offset
,
int
pagesize
,
int
jobGroup
,
int
jobId
,
Date
triggerTimeStart
,
Date
triggerTimeEnd
)
{
HashMap
<
String
,
Object
>
params
=
new
HashMap
<
String
,
Object
>();
HashMap
<
String
,
Object
>
params
=
new
HashMap
<
String
,
Object
>();
params
.
put
(
"offset"
,
offset
);
params
.
put
(
"offset"
,
offset
);
params
.
put
(
"pagesize"
,
pagesize
);
params
.
put
(
"pagesize"
,
pagesize
);
params
.
put
(
"jobGroup"
,
jobGroup
);
params
.
put
(
"jobGroup"
,
jobGroup
);
params
.
put
(
"job
Name"
,
jobName
);
params
.
put
(
"job
Id"
,
jobId
);
params
.
put
(
"triggerTimeStart"
,
triggerTimeStart
);
params
.
put
(
"triggerTimeStart"
,
triggerTimeStart
);
params
.
put
(
"triggerTimeEnd"
,
triggerTimeEnd
);
params
.
put
(
"triggerTimeEnd"
,
triggerTimeEnd
);
...
@@ -73,11 +73,8 @@ public class XxlJobLogDaoImpl implements IXxlJobLogDao {
...
@@ -73,11 +73,8 @@ public class XxlJobLogDaoImpl implements IXxlJobLogDao {
}
}
@Override
@Override
public
int
delete
(
int
jobGroup
,
String
jobName
)
{
public
int
delete
(
int
jobId
)
{
HashMap
<
String
,
Object
>
params
=
new
HashMap
<
String
,
Object
>();
return
sqlSessionTemplate
.
delete
(
"XxlJobLogMapper.delete"
,
jobId
);
params
.
put
(
"jobGroup"
,
jobGroup
);
params
.
put
(
"jobName"
,
jobName
);
return
sqlSessionTemplate
.
delete
(
"XxlJobLogMapper.delete"
,
params
);
}
}
}
}
xxl-job-admin/src/main/java/com/xxl/job/admin/service/IXxlJobService.java
浏览文件 @
d66bdc88
...
@@ -19,12 +19,12 @@ public interface IXxlJobService {
...
@@ -19,12 +19,12 @@ public interface IXxlJobService {
public
ReturnT
<
String
>
reschedule
(
XxlJobInfo
jobInfo
);
public
ReturnT
<
String
>
reschedule
(
XxlJobInfo
jobInfo
);
public
ReturnT
<
String
>
remove
(
int
jobGroup
,
String
jobName
);
public
ReturnT
<
String
>
remove
(
int
id
);
public
ReturnT
<
String
>
pause
(
int
jobGroup
,
String
jobName
);
public
ReturnT
<
String
>
pause
(
int
id
);
public
ReturnT
<
String
>
resume
(
int
jobGroup
,
String
jobName
);
public
ReturnT
<
String
>
resume
(
int
id
);
public
ReturnT
<
String
>
triggerJob
(
int
jobGroup
,
String
jobName
);
public
ReturnT
<
String
>
triggerJob
(
int
id
);
}
}
xxl-job-admin/src/main/java/com/xxl/job/admin/service/impl/XxlJobServiceImpl.java
浏览文件 @
d66bdc88
...
@@ -11,7 +11,6 @@ import com.xxl.job.admin.dao.IXxlJobLogGlueDao;
...
@@ -11,7 +11,6 @@ import com.xxl.job.admin.dao.IXxlJobLogGlueDao;
import
com.xxl.job.admin.service.IXxlJobService
;
import
com.xxl.job.admin.service.IXxlJobService
;
import
com.xxl.job.core.biz.model.ReturnT
;
import
com.xxl.job.core.biz.model.ReturnT
;
import
org.apache.commons.lang.StringUtils
;
import
org.apache.commons.lang.StringUtils
;
import
org.apache.commons.lang.time.FastDateFormat
;
import
org.quartz.CronExpression
;
import
org.quartz.CronExpression
;
import
org.quartz.SchedulerException
;
import
org.quartz.SchedulerException
;
import
org.slf4j.Logger
;
import
org.slf4j.Logger
;
...
@@ -20,7 +19,6 @@ import org.springframework.stereotype.Service;
...
@@ -20,7 +19,6 @@ import org.springframework.stereotype.Service;
import
javax.annotation.Resource
;
import
javax.annotation.Resource
;
import
java.text.MessageFormat
;
import
java.text.MessageFormat
;
import
java.util.Date
;
import
java.util.HashMap
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Map
;
...
@@ -98,53 +96,20 @@ public class XxlJobServiceImpl implements IXxlJobService {
...
@@ -98,53 +96,20 @@ public class XxlJobServiceImpl implements IXxlJobService {
if
(
childJobKeyArr
.
length
!=
2
)
{
if
(
childJobKeyArr
.
length
!=
2
)
{
return
new
ReturnT
<
String
>(
500
,
MessageFormat
.
format
(
"子任务Key({0})格式错误"
,
childJobKeyItem
));
return
new
ReturnT
<
String
>(
500
,
MessageFormat
.
format
(
"子任务Key({0})格式错误"
,
childJobKeyItem
));
}
}
XxlJobInfo
childJobInfo
=
xxlJobInfoDao
.
load
(
Integer
.
valueOf
(
childJobKeyArr
[
0
]),
childJobKeyArr
[
1
]
);
XxlJobInfo
childJobInfo
=
xxlJobInfoDao
.
load
ById
(
Integer
.
valueOf
(
childJobKeyArr
[
1
])
);
if
(
childJobInfo
==
null
)
{
if
(
childJobInfo
==
null
)
{
return
new
ReturnT
<
String
>(
500
,
MessageFormat
.
format
(
"子任务Key({0})无效"
,
childJobKeyItem
));
return
new
ReturnT
<
String
>(
500
,
MessageFormat
.
format
(
"子任务Key({0})无效"
,
childJobKeyItem
));
}
}
}
}
}
}
// generate jobName
// add in db
String
jobName
=
FastDateFormat
.
getInstance
(
"yyyyMMddHHmmssSSSS"
).
format
(
new
Date
());
xxlJobInfoDao
.
save
(
jobInfo
);
jobInfo
.
setJobName
(
jobName
);
int
jobId
=
jobInfo
.
getId
();
try
{
if
(
jobId
<
1
)
{
if
(
XxlJobDynamicScheduler
.
checkExists
(
jobName
,
String
.
valueOf
(
jobInfo
.
getJobGroup
())))
{
return
new
ReturnT
<
String
>(
500
,
"新增任务失败"
);
return
new
ReturnT
<
String
>(
500
,
"系统繁忙,请稍后重试"
);
}
}
catch
(
SchedulerException
e1
)
{
e1
.
printStackTrace
();
return
new
ReturnT
<
String
>(
500
,
"系统繁忙,请稍后重试"
);
}
// Backup to the database
/*XxlJobInfo jobInfo = new XxlJobInfo();
jobInfo.setJobGroup(jobGroup);
jobInfo.setJobName(jobName);
jobInfo.setJobCron(jobCron);
jobInfo.setJobDesc(jobDesc);
jobInfo.setAuthor(author);
jobInfo.setAlarmEmail(alarmEmail);
jobInfo.setExecutorHandler(executorHandler);
jobInfo.setExecutorParam(executorParam);
jobInfo.setGlueSwitch(glueSwitch);
jobInfo.setGlueSource(glueSource);
jobInfo.setGlueRemark(glueRemark);
jobInfo.setChildJobKey(childJobKey);*/
try
{
// add job 2 quartz
boolean
result
=
XxlJobDynamicScheduler
.
addJob
(
String
.
valueOf
(
jobInfo
.
getJobGroup
()),
jobName
,
jobInfo
.
getJobCron
());
if
(
result
)
{
xxlJobInfoDao
.
save
(
jobInfo
);
return
ReturnT
.
SUCCESS
;
}
else
{
return
new
ReturnT
<
String
>(
500
,
"新增任务失败"
);
}
}
catch
(
SchedulerException
e
)
{
logger
.
error
(
""
,
e
);
}
}
return
ReturnT
.
FAIL
;
return
ReturnT
.
SUCCESS
;
}
}
@Override
@Override
...
@@ -178,7 +143,7 @@ public class XxlJobServiceImpl implements IXxlJobService {
...
@@ -178,7 +143,7 @@ public class XxlJobServiceImpl implements IXxlJobService {
if
(
childJobKeyArr
.
length
!=
2
)
{
if
(
childJobKeyArr
.
length
!=
2
)
{
return
new
ReturnT
<
String
>(
500
,
MessageFormat
.
format
(
"子任务Key({0})格式错误"
,
childJobKeyItem
));
return
new
ReturnT
<
String
>(
500
,
MessageFormat
.
format
(
"子任务Key({0})格式错误"
,
childJobKeyItem
));
}
}
XxlJobInfo
childJobInfo
=
xxlJobInfoDao
.
load
(
Integer
.
valueOf
(
childJobKeyArr
[
0
]),
childJobKeyArr
[
1
]
);
XxlJobInfo
childJobInfo
=
xxlJobInfoDao
.
loadById
(
Integer
.
valueOf
(
childJobKeyArr
[
1
])
);
if
(
childJobInfo
==
null
)
{
if
(
childJobInfo
==
null
)
{
return
new
ReturnT
<
String
>(
500
,
MessageFormat
.
format
(
"子任务Key({0})无效"
,
childJobKeyItem
));
return
new
ReturnT
<
String
>(
500
,
MessageFormat
.
format
(
"子任务Key({0})无效"
,
childJobKeyItem
));
}
}
...
@@ -203,7 +168,7 @@ public class XxlJobServiceImpl implements IXxlJobService {
...
@@ -203,7 +168,7 @@ public class XxlJobServiceImpl implements IXxlJobService {
try
{
try
{
// fresh quartz
// fresh quartz
boolean
ret
=
XxlJobDynamicScheduler
.
rescheduleJob
(
String
.
valueOf
(
exists_jobInfo
.
getJobGroup
()),
exists_jobInfo
.
getJobName
(
),
exists_jobInfo
.
getJobCron
());
boolean
ret
=
XxlJobDynamicScheduler
.
rescheduleJob
(
String
.
valueOf
(
exists_jobInfo
.
getJobGroup
()),
String
.
valueOf
(
exists_jobInfo
.
getId
()
),
exists_jobInfo
.
getJobCron
());
if
(
ret
)
{
if
(
ret
)
{
xxlJobInfoDao
.
update
(
exists_jobInfo
);
xxlJobInfoDao
.
update
(
exists_jobInfo
);
return
ReturnT
.
SUCCESS
;
return
ReturnT
.
SUCCESS
;
...
@@ -217,14 +182,16 @@ public class XxlJobServiceImpl implements IXxlJobService {
...
@@ -217,14 +182,16 @@ public class XxlJobServiceImpl implements IXxlJobService {
}
}
@Override
@Override
public
ReturnT
<
String
>
remove
(
int
jobGroup
,
String
jobName
)
{
public
ReturnT
<
String
>
remove
(
int
id
)
{
XxlJobInfo
xxlJobInfo
=
xxlJobInfoDao
.
load
(
jobGroup
,
jobName
);
XxlJobInfo
xxlJobInfo
=
xxlJobInfoDao
.
loadById
(
id
);
String
group
=
String
.
valueOf
(
xxlJobInfo
.
getJobGroup
());
String
name
=
String
.
valueOf
(
xxlJobInfo
.
getId
());
try
{
try
{
XxlJobDynamicScheduler
.
removeJob
(
jobName
,
String
.
valueOf
(
jobGroup
)
);
XxlJobDynamicScheduler
.
removeJob
(
name
,
group
);
xxlJobInfoDao
.
delete
(
jobGroup
,
jobName
);
xxlJobInfoDao
.
delete
(
id
);
xxlJobLogDao
.
delete
(
jobGroup
,
jobName
);
xxlJobLogDao
.
delete
(
id
);
xxlJobLogGlueDao
.
deleteByJobId
(
xxlJobInfo
.
getId
()
);
xxlJobLogGlueDao
.
deleteByJobId
(
id
);
return
ReturnT
.
SUCCESS
;
return
ReturnT
.
SUCCESS
;
}
catch
(
SchedulerException
e
)
{
}
catch
(
SchedulerException
e
)
{
e
.
printStackTrace
();
e
.
printStackTrace
();
...
@@ -233,9 +200,13 @@ public class XxlJobServiceImpl implements IXxlJobService {
...
@@ -233,9 +200,13 @@ public class XxlJobServiceImpl implements IXxlJobService {
}
}
@Override
@Override
public
ReturnT
<
String
>
pause
(
int
jobGroup
,
String
jobName
)
{
public
ReturnT
<
String
>
pause
(
int
id
)
{
XxlJobInfo
xxlJobInfo
=
xxlJobInfoDao
.
loadById
(
id
);
String
group
=
String
.
valueOf
(
xxlJobInfo
.
getJobGroup
());
String
name
=
String
.
valueOf
(
xxlJobInfo
.
getId
());
try
{
try
{
XxlJobDynamicScheduler
.
pauseJob
(
jobName
,
String
.
valueOf
(
jobGroup
)
);
// jobStatus do not store
XxlJobDynamicScheduler
.
pauseJob
(
name
,
group
);
// jobStatus do not store
return
ReturnT
.
SUCCESS
;
return
ReturnT
.
SUCCESS
;
}
catch
(
SchedulerException
e
)
{
}
catch
(
SchedulerException
e
)
{
e
.
printStackTrace
();
e
.
printStackTrace
();
...
@@ -244,10 +215,19 @@ public class XxlJobServiceImpl implements IXxlJobService {
...
@@ -244,10 +215,19 @@ public class XxlJobServiceImpl implements IXxlJobService {
}
}
@Override
@Override
public
ReturnT
<
String
>
resume
(
int
jobGroup
,
String
jobName
)
{
public
ReturnT
<
String
>
resume
(
int
id
)
{
XxlJobInfo
xxlJobInfo
=
xxlJobInfoDao
.
loadById
(
id
);
String
group
=
String
.
valueOf
(
xxlJobInfo
.
getJobGroup
());
String
name
=
String
.
valueOf
(
xxlJobInfo
.
getId
());
try
{
try
{
XxlJobDynamicScheduler
.
resumeJob
(
jobName
,
String
.
valueOf
(
jobGroup
));
boolean
ret
=
false
;
return
ReturnT
.
SUCCESS
;
if
(
XxlJobDynamicScheduler
.
checkExists
(
name
,
group
))
{
ret
=
XxlJobDynamicScheduler
.
resumeJob
(
name
,
group
);
}
else
{
ret
=
XxlJobDynamicScheduler
.
addJob
(
name
,
group
,
xxlJobInfo
.
getJobCron
());
}
return
ret
?
ReturnT
.
SUCCESS
:
ReturnT
.
FAIL
;
}
catch
(
SchedulerException
e
)
{
}
catch
(
SchedulerException
e
)
{
e
.
printStackTrace
();
e
.
printStackTrace
();
return
ReturnT
.
FAIL
;
return
ReturnT
.
FAIL
;
...
@@ -255,9 +235,13 @@ public class XxlJobServiceImpl implements IXxlJobService {
...
@@ -255,9 +235,13 @@ public class XxlJobServiceImpl implements IXxlJobService {
}
}
@Override
@Override
public
ReturnT
<
String
>
triggerJob
(
int
jobGroup
,
String
jobName
)
{
public
ReturnT
<
String
>
triggerJob
(
int
id
)
{
XxlJobInfo
xxlJobInfo
=
xxlJobInfoDao
.
loadById
(
id
);
String
group
=
String
.
valueOf
(
xxlJobInfo
.
getJobGroup
());
String
name
=
String
.
valueOf
(
xxlJobInfo
.
getId
());
try
{
try
{
XxlJobDynamicScheduler
.
triggerJob
(
jobName
,
String
.
valueOf
(
jobGroup
)
);
XxlJobDynamicScheduler
.
triggerJob
(
name
,
group
);
return
ReturnT
.
SUCCESS
;
return
ReturnT
.
SUCCESS
;
}
catch
(
SchedulerException
e
)
{
}
catch
(
SchedulerException
e
)
{
e
.
printStackTrace
();
e
.
printStackTrace
();
...
...
xxl-job-admin/src/main/resources/mybatis-mapper/XxlJobInfoMapper.xml
浏览文件 @
d66bdc88
...
@@ -7,7 +7,6 @@
...
@@ -7,7 +7,6 @@
<result
column=
"id"
property=
"id"
/>
<result
column=
"id"
property=
"id"
/>
<result
column=
"job_group"
property=
"jobGroup"
/>
<result
column=
"job_group"
property=
"jobGroup"
/>
<result
column=
"job_name"
property=
"jobName"
/>
<result
column=
"job_cron"
property=
"jobCron"
/>
<result
column=
"job_cron"
property=
"jobCron"
/>
<result
column=
"job_desc"
property=
"jobDesc"
/>
<result
column=
"job_desc"
property=
"jobDesc"
/>
...
@@ -31,7 +30,6 @@
...
@@ -31,7 +30,6 @@
<sql
id=
"Base_Column_List"
>
<sql
id=
"Base_Column_List"
>
t.id,
t.id,
t.job_group,
t.job_group,
t.job_name,
t.job_cron,
t.job_cron,
t.job_desc,
t.job_desc,
t.add_time,
t.add_time,
...
@@ -74,11 +72,10 @@
...
@@ -74,11 +72,10 @@
</if>
</if>
</trim>
</trim>
</select>
</select>
<insert
id=
"save"
parameterType=
"com.xxl.job.admin.core.model.XxlJobInfo"
useGeneratedKeys=
"true"
keyProperty=
"id"
>
<insert
id=
"save"
parameterType=
"com.xxl.job.admin.core.model.XxlJobInfo"
useGeneratedKeys=
"true"
keyProperty=
"id"
>
INSERT INTO XXL_JOB_QRTZ_TRIGGER_INFO (
INSERT INTO XXL_JOB_QRTZ_TRIGGER_INFO (
job_group,
job_group,
job_name,
job_cron,
job_cron,
job_desc,
job_desc,
add_time,
add_time,
...
@@ -93,8 +90,7 @@
...
@@ -93,8 +90,7 @@
glue_remark,
glue_remark,
child_jobkey
child_jobkey
) VALUES (
) VALUES (
#{jobGroup},
#{jobGroup},
#{jobName},
#{jobCron},
#{jobCron},
#{jobDesc},
#{jobDesc},
NOW(),
NOW(),
...
@@ -109,9 +105,10 @@
...
@@ -109,9 +105,10 @@
#{glueRemark},
#{glueRemark},
#{childJobKey}
#{childJobKey}
);
);
<selectKey
resultType=
"java.lang.Integer"
order=
"AFTER"
keyProperty=
"id"
>
<!--<selectKey resultType="java.lang.Integer" order="AFTER" keyProperty="id">
SELECT LAST_INSERT_ID()
SELECT LAST_INSERT_ID()
</selectKey>
/*SELECT @@IDENTITY AS id*/
</selectKey>-->
</insert>
</insert>
<select
id=
"loadById"
parameterType=
"java.util.HashMap"
resultMap=
"XxlJobInfo"
>
<select
id=
"loadById"
parameterType=
"java.util.HashMap"
resultMap=
"XxlJobInfo"
>
...
@@ -119,13 +116,6 @@
...
@@ -119,13 +116,6 @@
FROM XXL_JOB_QRTZ_TRIGGER_INFO AS t
FROM XXL_JOB_QRTZ_TRIGGER_INFO AS t
WHERE t.id = #{id}
WHERE t.id = #{id}
</select>
</select>
<select
id=
"load"
parameterType=
"java.util.HashMap"
resultMap=
"XxlJobInfo"
>
SELECT
<include
refid=
"Base_Column_List"
/>
FROM XXL_JOB_QRTZ_TRIGGER_INFO AS t
WHERE t.job_group = #{jobGroup}
AND t.job_name = #{jobName}
</select>
<update
id=
"update"
parameterType=
"com.xxl.job.admin.core.model.XxlJobInfo"
>
<update
id=
"update"
parameterType=
"com.xxl.job.admin.core.model.XxlJobInfo"
>
UPDATE XXL_JOB_QRTZ_TRIGGER_INFO
UPDATE XXL_JOB_QRTZ_TRIGGER_INFO
...
@@ -142,17 +132,13 @@
...
@@ -142,17 +132,13 @@
glue_source = #{glueSource},
glue_source = #{glueSource},
glue_remark = #{glueRemark},
glue_remark = #{glueRemark},
child_jobkey = #{childJobKey}
child_jobkey = #{childJobKey}
WHERE job_group = #{jobGroup}
WHERE id = #{id}
AND job_name = #{jobName}
</update>
</update>
<delete
id=
"delete"
parameterType=
"java.util.HashMap"
>
<delete
id=
"delete"
parameterType=
"java.util.HashMap"
>
DELETE
DELETE
FROM
FROM XXL_JOB_QRTZ_TRIGGER_INFO
XXL_JOB_QRTZ_TRIGGER_INFO
WHERE id = #{id}
WHERE
job_group = #{jobGroup}
AND job_name = #{jobName}
</delete>
</delete>
<select
id=
"getJobsByGroup"
parameterType=
"java.util.HashMap"
resultMap=
"XxlJobInfo"
>
<select
id=
"getJobsByGroup"
parameterType=
"java.util.HashMap"
resultMap=
"XxlJobInfo"
>
...
...
xxl-job-admin/src/main/resources/mybatis-mapper/XxlJobLogMapper.xml
浏览文件 @
d66bdc88
...
@@ -5,10 +5,10 @@
...
@@ -5,10 +5,10 @@
<resultMap
id=
"XxlJobLog"
type=
"com.xxl.job.admin.core.model.XxlJobLog"
>
<resultMap
id=
"XxlJobLog"
type=
"com.xxl.job.admin.core.model.XxlJobLog"
>
<result
column=
"id"
property=
"id"
/>
<result
column=
"id"
property=
"id"
/>
<result
column=
"job_group"
property=
"jobGroup"
/>
<result
column=
"job_group"
property=
"jobGroup"
/>
<result
column=
"job_name"
property=
"jobName
"
/>
<result
column=
"job_id"
property=
"jobId
"
/>
<result
column=
"executor_address"
property=
"executorAddress"
/>
<result
column=
"executor_address"
property=
"executorAddress"
/>
<result
column=
"executor_handler"
property=
"executorHandler"
/>
<result
column=
"executor_handler"
property=
"executorHandler"
/>
<result
column=
"executor_param"
property=
"executorParam"
/>
<result
column=
"executor_param"
property=
"executorParam"
/>
...
@@ -26,7 +26,7 @@
...
@@ -26,7 +26,7 @@
<sql
id=
"Base_Column_List"
>
<sql
id=
"Base_Column_List"
>
t.id,
t.id,
t.job_group,
t.job_group,
t.job_
name
,
t.job_
id
,
t.executor_address,
t.executor_address,
t.executor_handler,
t.executor_handler,
t.executor_param,
t.executor_param,
...
@@ -45,8 +45,8 @@
...
@@ -45,8 +45,8 @@
<if
test=
"jobGroup != null and jobGroup != ''"
>
<if
test=
"jobGroup != null and jobGroup != ''"
>
AND t.job_group = #{jobGroup}
AND t.job_group = #{jobGroup}
</if>
</if>
<if
test=
"job
Name != null and jobName != ''
"
>
<if
test=
"job
Id gt 0
"
>
AND t.job_
name = #{jobName
}
AND t.job_
id = #{jobId
}
</if>
</if>
<if
test=
"triggerTimeStart != null"
>
<if
test=
"triggerTimeStart != null"
>
AND t.trigger_time
<![CDATA[ >= ]]>
#{triggerTimeStart}
AND t.trigger_time
<![CDATA[ >= ]]>
#{triggerTimeStart}
...
@@ -66,8 +66,8 @@
...
@@ -66,8 +66,8 @@
<if
test=
"jobGroup != null and jobGroup != ''"
>
<if
test=
"jobGroup != null and jobGroup != ''"
>
AND t.job_group = #{jobGroup}
AND t.job_group = #{jobGroup}
</if>
</if>
<if
test=
"job
Name != null and jobName != ''
"
>
<if
test=
"job
Id gt 0
"
>
AND t.job_
name = #{jobName
}
AND t.job_
id = #{jobId
}
</if>
</if>
<if
test=
"triggerTimeStart != null"
>
<if
test=
"triggerTimeStart != null"
>
AND t.trigger_time
<![CDATA[ >= ]]>
#{triggerTimeStart}
AND t.trigger_time
<![CDATA[ >= ]]>
#{triggerTimeStart}
...
@@ -88,13 +88,13 @@
...
@@ -88,13 +88,13 @@
<insert
id=
"save"
parameterType=
"com.xxl.job.admin.core.model.XxlJobLog"
useGeneratedKeys=
"true"
keyProperty=
"id"
>
<insert
id=
"save"
parameterType=
"com.xxl.job.admin.core.model.XxlJobLog"
useGeneratedKeys=
"true"
keyProperty=
"id"
>
INSERT INTO XXL_JOB_QRTZ_TRIGGER_LOG (
INSERT INTO XXL_JOB_QRTZ_TRIGGER_LOG (
`job_group`,
`job_group`,
`job_
name
`,
`job_
id
`,
`executor_address`,
`executor_address`,
`executor_handler`,
`executor_handler`,
`executor_param`
`executor_param`
) VALUES (
) VALUES (
#{jobGroup},
#{jobGroup},
#{job
Name
},
#{job
Id
},
#{executorAddress},
#{executorAddress},
#{executorHandler},
#{executorHandler},
#{executorParam}
#{executorParam}
...
@@ -127,8 +127,7 @@
...
@@ -127,8 +127,7 @@
<delete
id=
"delete"
>
<delete
id=
"delete"
>
delete from XXL_JOB_QRTZ_TRIGGER_LOG
delete from XXL_JOB_QRTZ_TRIGGER_LOG
WHERE job_group = #{jobGroup}
WHERE job_id = #{jobId}
AND job_name = #{jobName}
</delete>
</delete>
</mapper>
</mapper>
\ No newline at end of file
xxl-job-admin/src/main/webapp/WEB-INF/template/jobinfo/jobinfo.index.ftl
浏览文件 @
d66bdc88
...
@@ -51,7 +51,7 @@
...
@@ -51,7 +51,7 @@
<div
class=
"col-xs-4"
>
<div
class=
"col-xs-4"
>
<div
class=
"input-group"
>
<div
class=
"input-group"
>
<span
class=
"input-group-addon"
>
JobHandler
</span>
<span
class=
"input-group-addon"
>
JobHandler
</span>
<input
type=
"text"
class=
"form-control"
id=
"executorHandler"
value=
"${jobName}"
autocomplete=
"on"
>
<input
type=
"text"
class=
"form-control"
id=
"executorHandler"
autocomplete=
"on"
>
</div>
</div>
</div>
</div>
<div
class=
"col-xs-2"
>
<div
class=
"col-xs-2"
>
...
@@ -74,7 +74,6 @@
...
@@ -74,7 +74,6 @@
<tr>
<tr>
<th
name=
"id"
>
id
</th>
<th
name=
"id"
>
id
</th>
<th
name=
"jobGroup"
>
jobGroup
</th>
<th
name=
"jobGroup"
>
jobGroup
</th>
<th
name=
"jobName"
>
jobName
</th>
<th
name=
"childJobKey"
>
任务Key
</th>
<th
name=
"childJobKey"
>
任务Key
</th>
<th
name=
"jobDesc"
>
描述
</th>
<th
name=
"jobDesc"
>
描述
</th>
<th
name=
"jobCron"
>
Cron
</th>
<th
name=
"jobCron"
>
Cron
</th>
...
...
xxl-job-admin/src/main/webapp/WEB-INF/template/joblog/joblog.index.ftl
浏览文件 @
d66bdc88
...
@@ -35,19 +35,19 @@
...
@@ -35,19 +35,19 @@
<div
class=
"col-xs-3"
>
<div
class=
"col-xs-3"
>
<div
class=
"input-group"
>
<div
class=
"input-group"
>
<span
class=
"input-group-addon"
>
执行器
</span>
<span
class=
"input-group-addon"
>
执行器
</span>
<select
class=
"form-control"
id=
"jobGroup"
paramVal=
"
${jobGroup}
"
>
<select
class=
"form-control"
id=
"jobGroup"
paramVal=
"
<#if jobInfo?exists>${jobInfo.jobGroup}</#if>
"
>
<option
value=
"0"
selected
>
请选择
</option>
<option
value=
"0"
>
请选择
</option>
<
#
list
JobGroupList
as
group
>
<
#
list
JobGroupList
as
group
>
<option
value=
"${group.id}"
<#
if
jobGroup =
=
group
.
appName
&&
false
>
selected
</
#
if>
>${group.title}
</option>
<option
value=
"${group.id}"
>
${group.title}
</option>
</
#
list>
</
#
list>
</select>
</select>
</div>
</div>
</div>
</div>
<div
class=
"col-xs-3"
>
<div
class=
"col-xs-3"
>
<div
class=
"input-group"
>
<div
class=
"input-group"
>
<span
class=
"input-group-addon"
>
描述
</span>
<span
class=
"input-group-addon"
>
任务
</span>
<select
class=
"form-control"
id=
"job
Name"
paramVal=
"${jobName}
"
>
<select
class=
"form-control"
id=
"job
Id"
paramVal=
"<#if jobInfo?exists>${jobInfo.id}</#if>
"
>
<option
value=
""
>
请选择
</option>
<option
value=
"
0
"
>
请选择
</option>
</select>
</select>
</div>
</div>
</div>
</div>
...
@@ -76,8 +76,8 @@
...
@@ -76,8 +76,8 @@
<thead>
<thead>
<tr>
<tr>
<th
name=
"id"
>
id
</th>
<th
name=
"id"
>
id
</th>
<th
name=
"jobGroup"
>
任务组
</th>
<th
name=
"jobGroup"
>
执行器ID
</th>
<th
name=
"jobName"
>
任务名
</th>
<th
name=
"jobId"
>
任务ID
</th>
<th
name=
"executorAddress"
>
执行器地址
</th>
<th
name=
"executorAddress"
>
执行器地址
</th>
<th
name=
"executorHandler"
>
JobHandler
</th>
<th
name=
"executorHandler"
>
JobHandler
</th>
<th
name=
"executorParam"
>
任务参数
</th>
<th
name=
"executorParam"
>
任务参数
</th>
...
...
xxl-job-admin/src/main/webapp/static/js/jobinfo.index.1.js
浏览文件 @
d66bdc88
...
@@ -34,12 +34,11 @@ $(function() {
...
@@ -34,12 +34,11 @@ $(function() {
return
data
;
return
data
;
}
}
},
},
{
"data"
:
'jobName'
,
"visible"
:
false
},
{
{
"data"
:
'childJobKey'
,
"data"
:
'childJobKey'
,
"visible"
:
true
,
"visible"
:
true
,
"render"
:
function
(
data
,
type
,
row
)
{
"render"
:
function
(
data
,
type
,
row
)
{
var
jobKey
=
row
.
jobGroup
+
"_"
+
row
.
jobName
;
var
jobKey
=
row
.
jobGroup
+
"_"
+
row
.
id
;
return
jobKey
;
return
jobKey
;
}
}
},
},
...
@@ -76,7 +75,7 @@ $(function() {
...
@@ -76,7 +75,7 @@ $(function() {
"render"
:
function
(
data
,
type
,
row
)
{
"render"
:
function
(
data
,
type
,
row
)
{
if
(
'NORMAL'
==
data
)
{
if
(
'NORMAL'
==
data
)
{
return
'<small class="label label-success" ><i class="fa fa-clock-o"></i>'
+
data
+
'</small>'
;
return
'<small class="label label-success" ><i class="fa fa-clock-o"></i>'
+
data
+
'</small>'
;
}
else
if
(
'PAUSED'
==
data
){
}
else
if
(
'PAUSED'
==
data
||
'NONE'
==
data
){
return
'<small class="label label-default" title="暂停" ><i class="fa fa-clock-o"></i>'
+
data
+
'</small>'
;
return
'<small class="label label-default" title="暂停" ><i class="fa fa-clock-o"></i>'
+
data
+
'</small>'
;
}
else
if
(
'BLOCKED'
==
data
){
}
else
if
(
'BLOCKED'
==
data
){
return
'<small class="label label-default" title="阻塞[串行]" ><i class="fa fa-clock-o"></i>'
+
data
+
'</small>'
;
return
'<small class="label label-default" title="阻塞[串行]" ><i class="fa fa-clock-o"></i>'
+
data
+
'</small>'
;
...
@@ -91,11 +90,11 @@ $(function() {
...
@@ -91,11 +90,11 @@ $(function() {
var
pause_resume
=
""
;
var
pause_resume
=
""
;
if
(
'NORMAL'
==
row
.
jobStatus
)
{
if
(
'NORMAL'
==
row
.
jobStatus
)
{
pause_resume
=
'<button class="btn btn-primary btn-xs job_operate" type="job_pause" type="button">暂停</button> '
;
pause_resume
=
'<button class="btn btn-primary btn-xs job_operate" type="job_pause" type="button">暂停</button> '
;
}
else
if
(
'PAUSED'
==
row
.
jobStatus
){
}
else
if
(
'PAUSED'
==
row
.
jobStatus
||
'NONE'
==
row
.
jobStatus
){
pause_resume
=
'<button class="btn btn-primary btn-xs job_operate" type="job_resume" type="button">恢复</button> '
;
pause_resume
=
'<button class="btn btn-primary btn-xs job_operate" type="job_resume" type="button">恢复</button> '
;
}
}
// log url
// log url
var
logUrl
=
base_url
+
'/joblog?job
Group='
+
row
.
jobGroup
+
'&jobName='
+
row
.
jobName
;
var
logUrl
=
base_url
+
'/joblog?job
Id='
+
row
.
id
;
// log url
// log url
var
codeBtn
=
""
;
var
codeBtn
=
""
;
...
@@ -107,7 +106,6 @@ $(function() {
...
@@ -107,7 +106,6 @@ $(function() {
// html
// html
var
html
=
'<p id="'
+
row
.
id
+
'" '
+
var
html
=
'<p id="'
+
row
.
id
+
'" '
+
' jobGroup="'
+
row
.
jobGroup
+
'" '
+
' jobGroup="'
+
row
.
jobGroup
+
'" '
+
' jobName="'
+
row
.
jobName
+
'" '
+
' jobCron="'
+
row
.
jobCron
+
'" '
+
' jobCron="'
+
row
.
jobCron
+
'" '
+
' jobDesc="'
+
row
.
jobDesc
+
'" '
+
' jobDesc="'
+
row
.
jobDesc
+
'" '
+
' author="'
+
row
.
author
+
'" '
+
' author="'
+
row
.
author
+
'" '
+
...
@@ -188,16 +186,14 @@ $(function() {
...
@@ -188,16 +186,14 @@ $(function() {
return
;
return
;
}
}
var
jobGroup
=
$
(
this
).
parent
(
'p'
).
attr
(
"jobGroup"
);
var
id
=
$
(
this
).
parent
(
'p'
).
attr
(
"id"
);
var
jobName
=
$
(
this
).
parent
(
'p'
).
attr
(
"jobName"
);
ComConfirm
.
show
(
"确认"
+
typeName
+
"?"
,
function
(){
ComConfirm
.
show
(
"确认"
+
typeName
+
"?"
,
function
(){
$
.
ajax
({
$
.
ajax
({
type
:
'POST'
,
type
:
'POST'
,
url
:
url
,
url
:
url
,
data
:
{
data
:
{
"jobGroup"
:
jobGroup
,
"id"
:
id
"jobName"
:
jobName
},
},
dataType
:
"json"
,
dataType
:
"json"
,
success
:
function
(
data
){
success
:
function
(
data
){
...
...
xxl-job-admin/src/main/webapp/static/js/joblog.index.1.js
浏览文件 @
d66bdc88
$
(
function
()
{
$
(
function
()
{
// 任务组列表选中, 任务列表初始化和选中
// 任务组列表选中, 任务列表初始化和选中
var
ifParam
=
true
;
$
(
"#jobGroup"
).
on
(
"change"
,
function
()
{
$
(
"#jobGroup"
).
on
(
"change"
,
function
()
{
var
jobGroup
=
$
(
this
).
children
(
'option:selected'
).
val
();
var
jobGroup
=
$
(
this
).
children
(
'option:selected'
).
val
();
$
.
ajax
({
$
.
ajax
({
type
:
'POST'
,
type
:
'POST'
,
async
:
false
,
// async, avoid js invoke pagelist before job
Name
data init
async
:
false
,
// async, avoid js invoke pagelist before job
Id
data init
url
:
base_url
+
'/joblog/getJobsByGroup'
,
url
:
base_url
+
'/joblog/getJobsByGroup'
,
data
:
{
"jobGroup"
:
jobGroup
},
data
:
{
"jobGroup"
:
jobGroup
},
dataType
:
"json"
,
dataType
:
"json"
,
success
:
function
(
data
){
success
:
function
(
data
){
if
(
data
.
code
==
200
)
{
if
(
data
.
code
==
200
)
{
$
(
"#job
Name
"
).
html
(
'<option value="" >请选择</option>'
);
$
(
"#job
Id
"
).
html
(
'<option value="" >请选择</option>'
);
$
.
each
(
data
.
content
,
function
(
n
,
value
)
{
$
.
each
(
data
.
content
,
function
(
n
,
value
)
{
$
(
"#job
Name"
).
append
(
'<option value="'
+
value
.
jobName
+
'" >'
+
value
.
jobDesc
+
'</option>'
);
$
(
"#job
Id"
).
append
(
'<option value="'
+
value
.
id
+
'" >'
+
value
.
jobDesc
+
'</option>'
);
});
});
if
(
$
(
"#jobName"
).
attr
(
"paramVal"
)){
if
(
$
(
"#jobId"
).
attr
(
"paramVal"
)){
$
(
"#jobName"
).
find
(
"option[value='"
+
$
(
"#jobName"
).
attr
(
"paramVal"
)
+
"']"
).
attr
(
"selected"
,
true
);
$
(
"#jobId"
).
find
(
"option[value='"
+
$
(
"#jobId"
).
attr
(
"paramVal"
)
+
"']"
).
attr
(
"selected"
,
true
);
$
(
"#jobName"
).
attr
(
"paramVal"
)
}
}
}
else
{
}
else
{
ComAlertTec
.
show
(
data
.
msg
);
ComAlertTec
.
show
(
data
.
msg
);
...
@@ -29,7 +27,6 @@ $(function() {
...
@@ -29,7 +27,6 @@ $(function() {
if
(
$
(
"#jobGroup"
).
attr
(
"paramVal"
)){
if
(
$
(
"#jobGroup"
).
attr
(
"paramVal"
)){
$
(
"#jobGroup"
).
find
(
"option[value='"
+
$
(
"#jobGroup"
).
attr
(
"paramVal"
)
+
"']"
).
attr
(
"selected"
,
true
);
$
(
"#jobGroup"
).
find
(
"option[value='"
+
$
(
"#jobGroup"
).
attr
(
"paramVal"
)
+
"']"
).
attr
(
"selected"
,
true
);
$
(
"#jobGroup"
).
change
();
$
(
"#jobGroup"
).
change
();
$
(
"#jobGroup"
).
attr
(
""
)
}
}
// 过滤时间
// 过滤时间
...
@@ -70,7 +67,7 @@ $(function() {
...
@@ -70,7 +67,7 @@ $(function() {
data
:
function
(
d
)
{
data
:
function
(
d
)
{
var
obj
=
{};
var
obj
=
{};
obj
.
jobGroup
=
$
(
'#jobGroup'
).
val
();
obj
.
jobGroup
=
$
(
'#jobGroup'
).
val
();
obj
.
job
Name
=
$
(
'#jobName
'
).
val
();
obj
.
job
Id
=
$
(
'#jobId
'
).
val
();
obj
.
filterTime
=
$
(
'#filterTime'
).
val
();
obj
.
filterTime
=
$
(
'#filterTime'
).
val
();
obj
.
start
=
d
.
start
;
obj
.
start
=
d
.
start
;
obj
.
length
=
d
.
length
;
obj
.
length
=
d
.
length
;
...
@@ -82,21 +79,8 @@ $(function() {
...
@@ -82,21 +79,8 @@ $(function() {
//"scrollX": false,
//"scrollX": false,
"columns"
:
[
"columns"
:
[
{
"data"
:
'id'
,
"bSortable"
:
false
,
"visible"
:
false
},
{
"data"
:
'id'
,
"bSortable"
:
false
,
"visible"
:
false
},
{
{
"data"
:
'jobGroup'
,
"visible"
:
false
},
"data"
:
'jobGroup'
,
{
"data"
:
'jobId'
,
"visible"
:
false
},
"visible"
:
false
,
"bSortable"
:
false
,
"render"
:
function
(
data
,
type
,
row
)
{
var
groupMenu
=
$
(
"#jobGroup"
).
find
(
"option"
);
for
(
var
index
in
$
(
"#jobGroup"
).
find
(
"option"
))
{
if
(
$
(
groupMenu
[
index
]).
attr
(
'value'
)
==
data
)
{
return
$
(
groupMenu
[
index
]).
html
();
}
}
return
data
;
}
},
{
"data"
:
'jobName'
,
"visible"
:
false
},
{
"data"
:
'executorAddress'
,
"visible"
:
true
},
{
"data"
:
'executorAddress'
,
"visible"
:
true
},
{
{
"data"
:
'executorHandler'
,
"data"
:
'executorHandler'
,
...
...
xxl-job-admin/src/test/java/com/xxl/job/dao/impl/XxlJobInfoTest.java
浏览文件 @
d66bdc88
...
@@ -29,19 +29,19 @@ public class XxlJobInfoTest {
...
@@ -29,19 +29,19 @@ public class XxlJobInfoTest {
@Test
@Test
public
void
save_load
(){
public
void
save_load
(){
XxlJobInfo
info
=
new
XxlJobInfo
();
XxlJobInfo
info
=
new
XxlJobInfo
();
info
.
setJob
Name
(
"job_name"
);
info
.
setJob
Group
(
1
);
info
.
setJobCron
(
"jobCron"
);
info
.
setJobCron
(
"jobCron"
);
int
count
=
xxlJobInfoDao
.
save
(
info
);
int
count
=
xxlJobInfoDao
.
save
(
info
);
System
.
out
.
println
(
count
);
System
.
out
.
println
(
count
);
System
.
out
.
println
(
info
.
getId
());
System
.
out
.
println
(
info
.
getId
());
XxlJobInfo
item
=
xxlJobInfoDao
.
load
(
0
,
"job_name"
);
XxlJobInfo
item
=
xxlJobInfoDao
.
load
ById
(
2
);
System
.
out
.
println
(
item
);
System
.
out
.
println
(
item
);
}
}
@Test
@Test
public
void
update
(){
public
void
update
(){
XxlJobInfo
item
=
xxlJobInfoDao
.
load
(
0
,
"job_name"
);
XxlJobInfo
item
=
xxlJobInfoDao
.
load
ById
(
2
);
item
.
setJobCron
(
"jobCron2"
);
item
.
setJobCron
(
"jobCron2"
);
xxlJobInfoDao
.
update
(
item
);
xxlJobInfoDao
.
update
(
item
);
...
...
xxl-job-core/src/main/java/com/xxl/job/core/biz/ExecutorBiz.java
浏览文件 @
d66bdc88
...
@@ -16,11 +16,10 @@ public interface ExecutorBiz {
...
@@ -16,11 +16,10 @@ public interface ExecutorBiz {
/**
/**
* kill
* kill
* @param jobGroup
* @param jobId
* @param jobName
* @return
* @return
*/
*/
public
ReturnT
<
String
>
kill
(
String
jobGroup
,
String
jobName
);
public
ReturnT
<
String
>
kill
(
int
jobId
);
/**
/**
* log
* log
...
...
xxl-job-core/src/main/java/com/xxl/job/core/biz/impl/ExecutorBizImpl.java
浏览文件 @
d66bdc88
...
@@ -23,19 +23,15 @@ public class ExecutorBizImpl implements ExecutorBiz {
...
@@ -23,19 +23,15 @@ public class ExecutorBizImpl implements ExecutorBiz {
}
}
@Override
@Override
public
ReturnT
<
String
>
kill
(
String
jobGroup
,
String
jobName
)
{
public
ReturnT
<
String
>
kill
(
int
jobId
)
{
// generate jobKey
String
jobKey
=
jobGroup
.
concat
(
"_"
).
concat
(
jobName
);
// kill handlerThread, and create new one
// kill handlerThread, and create new one
JobThread
jobThread
=
XxlJobExecutor
.
loadJobThread
(
job
Key
);
JobThread
jobThread
=
XxlJobExecutor
.
loadJobThread
(
job
Id
);
if
(
jobThread
!=
null
)
{
if
(
jobThread
!=
null
)
{
IJobHandler
handler
=
jobThread
.
getHandler
();
IJobHandler
handler
=
jobThread
.
getHandler
();
jobThread
.
toStop
(
"人工手动终止"
);
jobThread
.
toStop
(
"人工手动终止"
);
jobThread
.
interrupt
();
jobThread
.
interrupt
();
XxlJobExecutor
.
removeJobThread
(
job
Key
);
XxlJobExecutor
.
removeJobThread
(
job
Id
);
return
ReturnT
.
SUCCESS
;
return
ReturnT
.
SUCCESS
;
}
}
...
@@ -53,11 +49,8 @@ public class ExecutorBizImpl implements ExecutorBiz {
...
@@ -53,11 +49,8 @@ public class ExecutorBizImpl implements ExecutorBiz {
@Override
@Override
public
ReturnT
<
String
>
run
(
TriggerParam
triggerParam
)
{
public
ReturnT
<
String
>
run
(
TriggerParam
triggerParam
)
{
// generate jobKey
String
jobKey
=
triggerParam
.
getJobGroup
().
concat
(
"_"
).
concat
(
triggerParam
.
getJobName
());
// load old thread
// load old thread
JobThread
jobThread
=
XxlJobExecutor
.
loadJobThread
(
jobKey
);
JobThread
jobThread
=
XxlJobExecutor
.
loadJobThread
(
triggerParam
.
getJobId
()
);
if
(!
triggerParam
.
isGlueSwitch
())
{
if
(!
triggerParam
.
isGlueSwitch
())
{
// bean model
// bean model
...
@@ -65,11 +58,11 @@ public class ExecutorBizImpl implements ExecutorBiz {
...
@@ -65,11 +58,11 @@ public class ExecutorBizImpl implements ExecutorBiz {
// valid handler instance
// valid handler instance
IJobHandler
jobHandler
=
XxlJobExecutor
.
loadJobHandler
(
triggerParam
.
getExecutorHandler
());
IJobHandler
jobHandler
=
XxlJobExecutor
.
loadJobHandler
(
triggerParam
.
getExecutorHandler
());
if
(
jobHandler
==
null
)
{
if
(
jobHandler
==
null
)
{
return
new
ReturnT
(
ReturnT
.
FAIL_CODE
,
"job handler for
jobKey=["
+
jobKey
+
"] not found."
);
return
new
ReturnT
(
ReturnT
.
FAIL_CODE
,
"job handler for
JobId=["
+
triggerParam
.
getJobId
()
+
"] not found."
);
}
}
if
(
jobThread
==
null
)
{
if
(
jobThread
==
null
)
{
jobThread
=
XxlJobExecutor
.
registJobThread
(
jobKey
,
jobHandler
);
jobThread
=
XxlJobExecutor
.
registJobThread
(
triggerParam
.
getJobId
()
,
jobHandler
);
}
else
{
}
else
{
// job handler update, kill old job thread
// job handler update, kill old job thread
if
(
jobThread
.
getHandler
()
!=
jobHandler
)
{
if
(
jobThread
.
getHandler
()
!=
jobHandler
)
{
...
@@ -78,7 +71,7 @@ public class ExecutorBizImpl implements ExecutorBiz {
...
@@ -78,7 +71,7 @@ public class ExecutorBizImpl implements ExecutorBiz {
jobThread
.
interrupt
();
jobThread
.
interrupt
();
// new thread, with new job handler
// new thread, with new job handler
jobThread
=
XxlJobExecutor
.
registJobThread
(
jobKey
,
jobHandler
);
jobThread
=
XxlJobExecutor
.
registJobThread
(
triggerParam
.
getJobId
()
,
jobHandler
);
}
}
}
}
}
else
{
}
else
{
...
@@ -86,11 +79,11 @@ public class ExecutorBizImpl implements ExecutorBiz {
...
@@ -86,11 +79,11 @@ public class ExecutorBizImpl implements ExecutorBiz {
// valid glueloader
// valid glueloader
if
(!
GlueFactory
.
isActive
())
{
if
(!
GlueFactory
.
isActive
())
{
return
new
ReturnT
(
ReturnT
.
FAIL_CODE
,
"glueLoader for
jobKey=["
+
jobKey
+
"] not found."
);
return
new
ReturnT
(
ReturnT
.
FAIL_CODE
,
"glueLoader for
JobId=["
+
triggerParam
.
getJobId
()
+
"] not found."
);
}
}
if
(
jobThread
==
null
)
{
if
(
jobThread
==
null
)
{
jobThread
=
XxlJobExecutor
.
registJobThread
(
jobKey
,
new
GlueJobHandler
(
triggerParam
.
getJobGroup
(),
triggerParam
.
getJobName
()));
jobThread
=
XxlJobExecutor
.
registJobThread
(
triggerParam
.
getJobId
(),
new
GlueJobHandler
(
triggerParam
.
getJobId
()));
}
else
{
}
else
{
// job handler update, kill old job thread
// job handler update, kill old job thread
if
(!(
jobThread
.
getHandler
()
instanceof
GlueJobHandler
))
{
if
(!(
jobThread
.
getHandler
()
instanceof
GlueJobHandler
))
{
...
@@ -99,7 +92,7 @@ public class ExecutorBizImpl implements ExecutorBiz {
...
@@ -99,7 +92,7 @@ public class ExecutorBizImpl implements ExecutorBiz {
jobThread
.
interrupt
();
jobThread
.
interrupt
();
// new thread, with new job handler
// new thread, with new job handler
jobThread
=
XxlJobExecutor
.
registJobThread
(
jobKey
,
new
GlueJobHandler
(
triggerParam
.
getJobGroup
(),
triggerParam
.
getJobName
()));
jobThread
=
XxlJobExecutor
.
registJobThread
(
triggerParam
.
getJobId
(),
new
GlueJobHandler
(
triggerParam
.
getJobId
()));
}
}
}
}
}
}
...
...
xxl-job-core/src/main/java/com/xxl/job/core/biz/model/TriggerParam.java
浏览文件 @
d66bdc88
...
@@ -9,42 +9,24 @@ import java.util.Set;
...
@@ -9,42 +9,24 @@ import java.util.Set;
public
class
TriggerParam
implements
Serializable
{
public
class
TriggerParam
implements
Serializable
{
private
static
final
long
serialVersionUID
=
42L
;
private
static
final
long
serialVersionUID
=
42L
;
private
String
action
;
private
int
jobId
;
private
String
jobGroup
;
private
String
jobName
;
private
String
executorHandler
;
private
String
executorHandler
;
private
String
executorParams
;
private
String
executorParams
;
private
boolean
glueSwitch
;
private
boolean
glueSwitch
;
private
Set
<
String
>
logAddress
;
private
int
logId
;
private
int
logId
;
private
long
logDateTim
;
private
long
logDateTim
;
public
String
getAction
()
{
private
Set
<
String
>
logAddress
;
return
action
;
}
public
void
setAction
(
String
action
)
{
this
.
action
=
action
;
}
public
String
getJobGroup
()
{
return
jobGroup
;
}
public
void
setJobGroup
(
String
jobGroup
)
{
this
.
jobGroup
=
jobGroup
;
}
public
String
getJobName
()
{
public
int
getJobId
()
{
return
job
Name
;
return
job
Id
;
}
}
public
void
setJob
Name
(
String
jobName
)
{
public
void
setJob
Id
(
int
jobId
)
{
this
.
job
Name
=
jobName
;
this
.
job
Id
=
jobId
;
}
}
public
String
getExecutorHandler
()
{
public
String
getExecutorHandler
()
{
...
@@ -71,14 +53,6 @@ public class TriggerParam implements Serializable{
...
@@ -71,14 +53,6 @@ public class TriggerParam implements Serializable{
this
.
glueSwitch
=
glueSwitch
;
this
.
glueSwitch
=
glueSwitch
;
}
}
public
Set
<
String
>
getLogAddress
()
{
return
logAddress
;
}
public
void
setLogAddress
(
Set
<
String
>
logAddress
)
{
this
.
logAddress
=
logAddress
;
}
public
int
getLogId
()
{
public
int
getLogId
()
{
return
logId
;
return
logId
;
}
}
...
@@ -95,18 +69,11 @@ public class TriggerParam implements Serializable{
...
@@ -95,18 +69,11 @@ public class TriggerParam implements Serializable{
this
.
logDateTim
=
logDateTim
;
this
.
logDateTim
=
logDateTim
;
}
}
@Override
public
Set
<
String
>
getLogAddress
()
{
public
String
toString
()
{
return
logAddress
;
return
"RequestModel{"
+
}
", action='"
+
action
+
'\''
+
", jobGroup='"
+
jobGroup
+
'\''
+
public
void
setLogAddress
(
Set
<
String
>
logAddress
)
{
", jobName='"
+
jobName
+
'\''
+
this
.
logAddress
=
logAddress
;
", executorHandler='"
+
executorHandler
+
'\''
+
", executorParams='"
+
executorParams
+
'\''
+
", glueSwitch="
+
glueSwitch
+
", logAddress="
+
logAddress
+
", logId="
+
logId
+
", logDateTim="
+
logDateTim
+
'}'
;
}
}
}
}
xxl-job-core/src/main/java/com/xxl/job/core/executor/XxlJobExecutor.java
浏览文件 @
d66bdc88
...
@@ -61,7 +61,7 @@ public class XxlJobExecutor implements ApplicationContextAware, ApplicationListe
...
@@ -61,7 +61,7 @@ public class XxlJobExecutor implements ApplicationContextAware, ApplicationListe
// job thread repository destory
// job thread repository destory
if
(
JobThreadRepository
.
size
()
>
0
)
{
if
(
JobThreadRepository
.
size
()
>
0
)
{
for
(
Map
.
Entry
<
String
,
JobThread
>
item:
JobThreadRepository
.
entrySet
())
{
for
(
Map
.
Entry
<
Integer
,
JobThread
>
item:
JobThreadRepository
.
entrySet
())
{
JobThread
jobThread
=
item
.
getValue
();
JobThread
jobThread
=
item
.
getValue
();
jobThread
.
toStop
(
"Web容器销毁终止"
);
jobThread
.
toStop
(
"Web容器销毁终止"
);
jobThread
.
interrupt
();
jobThread
.
interrupt
();
...
@@ -114,20 +114,20 @@ public class XxlJobExecutor implements ApplicationContextAware, ApplicationListe
...
@@ -114,20 +114,20 @@ public class XxlJobExecutor implements ApplicationContextAware, ApplicationListe
}
}
// ---------------------------------- job thread repository
// ---------------------------------- job thread repository
private
static
ConcurrentHashMap
<
String
,
JobThread
>
JobThreadRepository
=
new
ConcurrentHashMap
<
String
,
JobThread
>();
private
static
ConcurrentHashMap
<
Integer
,
JobThread
>
JobThreadRepository
=
new
ConcurrentHashMap
<
Integer
,
JobThread
>();
public
static
JobThread
registJobThread
(
String
jobkey
,
IJobHandler
handler
){
public
static
JobThread
registJobThread
(
int
jobId
,
IJobHandler
handler
){
JobThread
jobThread
=
new
JobThread
(
handler
);
JobThread
jobThread
=
new
JobThread
(
handler
);
jobThread
.
start
();
jobThread
.
start
();
logger
.
info
(
">>>>>>>>>>> xxl-job regist JobThread success, job
key:{}, handler:{}"
,
new
Object
[]{
jobkey
,
handler
});
logger
.
info
(
">>>>>>>>>>> xxl-job regist JobThread success, job
Id:{}, handler:{}"
,
new
Object
[]{
jobId
,
handler
});
JobThreadRepository
.
put
(
job
key
,
jobThread
);
// putIfAbsent | oh my god, map's put method return the old value!!!
JobThreadRepository
.
put
(
job
Id
,
jobThread
);
// putIfAbsent | oh my god, map's put method return the old value!!!
return
jobThread
;
return
jobThread
;
}
}
public
static
JobThread
loadJobThread
(
String
jobKey
){
public
static
JobThread
loadJobThread
(
int
jobId
){
JobThread
jobThread
=
JobThreadRepository
.
get
(
job
Key
);
JobThread
jobThread
=
JobThreadRepository
.
get
(
job
Id
);
return
jobThread
;
return
jobThread
;
}
}
public
static
void
removeJobThread
(
String
jobKey
){
public
static
void
removeJobThread
(
int
jobId
){
JobThreadRepository
.
remove
(
job
Key
);
JobThreadRepository
.
remove
(
job
Id
);
}
}
}
}
xxl-job-core/src/main/java/com/xxl/job/core/glue/GlueFactory.java
浏览文件 @
d66bdc88
...
@@ -112,11 +112,11 @@ public class GlueFactory implements ApplicationContextAware {
...
@@ -112,11 +112,11 @@ public class GlueFactory implements ApplicationContextAware {
// ----------------------------- load instance -----------------------------
// ----------------------------- load instance -----------------------------
// load new instance, prototype
// load new instance, prototype
public
IJobHandler
loadNewInstance
(
String
job_group
,
String
job_name
)
throws
Exception
{
public
IJobHandler
loadNewInstance
(
int
jobId
)
throws
Exception
{
if
(
job
_group
==
null
||
job_group
.
trim
().
length
()==
0
||
job_name
==
null
||
job_name
.
trim
().
length
()
==
0
)
{
if
(
job
Id
==
0
)
{
return
null
;
return
null
;
}
}
String
codeSource
=
glueLoader
.
load
(
job
_group
,
job_name
);
String
codeSource
=
glueLoader
.
load
(
job
Id
);
if
(
codeSource
!=
null
&&
codeSource
.
trim
().
length
()>
0
)
{
if
(
codeSource
!=
null
&&
codeSource
.
trim
().
length
()>
0
)
{
Class
<?>
clazz
=
groovyClassLoader
.
parseClass
(
codeSource
);
Class
<?>
clazz
=
groovyClassLoader
.
parseClass
(
codeSource
);
if
(
clazz
!=
null
)
{
if
(
clazz
!=
null
)
{
...
@@ -136,14 +136,14 @@ public class GlueFactory implements ApplicationContextAware {
...
@@ -136,14 +136,14 @@ public class GlueFactory implements ApplicationContextAware {
}
}
// // load instance, singleton
// // load instance, singleton
private
static
String
generateInstanceCacheKey
(
String
job_group
,
String
job_name
){
private
static
String
generateInstanceCacheKey
(
int
jobId
){
return
job_group
.
concat
(
"_"
).
concat
(
job_name
).
concat
(
"_instance"
);
return
String
.
valueOf
(
jobId
).
concat
(
"_instance"
);
}
}
public
IJobHandler
loadInstance
(
String
job_group
,
String
job_name
)
throws
Exception
{
public
IJobHandler
loadInstance
(
int
jobId
)
throws
Exception
{
if
(
job
_group
==
null
||
job_group
.
trim
().
length
()==
0
||
job_name
==
null
||
job_name
.
trim
().
length
()
==
0
)
{
if
(
job
Id
==
0
)
{
return
null
;
return
null
;
}
}
String
cacheInstanceKey
=
generateInstanceCacheKey
(
job
_group
,
job_name
);
String
cacheInstanceKey
=
generateInstanceCacheKey
(
job
Id
);
Object
cacheInstance
=
LocalCache
.
getInstance
().
get
(
cacheInstanceKey
);
Object
cacheInstance
=
LocalCache
.
getInstance
().
get
(
cacheInstanceKey
);
if
(
cacheInstance
!=
null
)
{
if
(
cacheInstance
!=
null
)
{
if
(!(
cacheInstance
instanceof
IJobHandler
))
{
if
(!(
cacheInstance
instanceof
IJobHandler
))
{
...
@@ -152,7 +152,7 @@ public class GlueFactory implements ApplicationContextAware {
...
@@ -152,7 +152,7 @@ public class GlueFactory implements ApplicationContextAware {
}
}
return
(
IJobHandler
)
cacheInstance
;
return
(
IJobHandler
)
cacheInstance
;
}
}
Object
instance
=
loadNewInstance
(
job
_group
,
job_name
);
Object
instance
=
loadNewInstance
(
job
Id
);
if
(
instance
!=
null
)
{
if
(
instance
!=
null
)
{
if
(!(
instance
instanceof
IJobHandler
))
{
if
(!(
instance
instanceof
IJobHandler
))
{
throw
new
IllegalArgumentException
(
">>>>>>>>>>> xxl-glue, loadInstance error, "
throw
new
IllegalArgumentException
(
">>>>>>>>>>> xxl-glue, loadInstance error, "
...
@@ -167,8 +167,8 @@ public class GlueFactory implements ApplicationContextAware {
...
@@ -167,8 +167,8 @@ public class GlueFactory implements ApplicationContextAware {
}
}
// ----------------------------- util -----------------------------
// ----------------------------- util -----------------------------
public
static
void
glue
(
String
job_group
,
String
job_name
,
String
...
params
)
throws
Exception
{
public
static
void
glue
(
int
jobId
,
String
...
params
)
throws
Exception
{
GlueFactory
.
glueFactory
.
loadInstance
(
job
_group
,
job_name
).
execute
(
params
);
GlueFactory
.
glueFactory
.
loadInstance
(
job
Id
).
execute
(
params
);
}
}
}
}
xxl-job-core/src/main/java/com/xxl/job/core/glue/loader/GlueLoader.java
浏览文件 @
d66bdc88
...
@@ -8,10 +8,9 @@ public interface GlueLoader {
...
@@ -8,10 +8,9 @@ public interface GlueLoader {
/**
/**
* load code source by name, ensure every load is the latest.
* load code source by name, ensure every load is the latest.
* @param job_group
* @param jobId
* @param job_name
* @return code source
* @return code source
*/
*/
public
String
load
(
String
job_group
,
String
job_name
);
public
String
load
(
int
jobId
);
}
}
xxl-job-core/src/main/java/com/xxl/job/core/glue/loader/impl/DbGlueLoader.java
浏览文件 @
d66bdc88
...
@@ -18,9 +18,9 @@ public class DbGlueLoader implements GlueLoader {
...
@@ -18,9 +18,9 @@ public class DbGlueLoader implements GlueLoader {
}
}
@Override
@Override
public
String
load
(
String
job_group
,
String
job_name
)
{
public
String
load
(
int
jobId
)
{
String
sql
=
"SELECT glue_source FROM XXL_JOB_QRTZ_TRIGGER_INFO WHERE
job_group = ? AND job_name
= ?"
;
String
sql
=
"SELECT glue_source FROM XXL_JOB_QRTZ_TRIGGER_INFO WHERE
id
= ?"
;
List
<
Map
<
String
,
Object
>>
result
=
DBUtil
.
query
(
dataSource
,
sql
,
new
String
[]{
job_group
,
job_name
});
List
<
Map
<
String
,
Object
>>
result
=
DBUtil
.
query
(
dataSource
,
sql
,
new
Object
[]{
jobId
});
if
(
result
!=
null
&&
result
.
size
()==
1
&&
result
.
get
(
0
)!=
null
&&
result
.
get
(
0
).
get
(
"glue_source"
)!=
null
)
{
if
(
result
!=
null
&&
result
.
size
()==
1
&&
result
.
get
(
0
)!=
null
&&
result
.
get
(
0
).
get
(
"glue_source"
)!=
null
)
{
return
(
String
)
result
.
get
(
0
).
get
(
"glue_source"
);
return
(
String
)
result
.
get
(
0
).
get
(
"glue_source"
);
}
}
...
...
xxl-job-core/src/main/java/com/xxl/job/core/handler/impl/GlueJobHandler.java
浏览文件 @
d66bdc88
...
@@ -9,16 +9,14 @@ import com.xxl.job.core.handler.IJobHandler;
...
@@ -9,16 +9,14 @@ import com.xxl.job.core.handler.IJobHandler;
*/
*/
public
class
GlueJobHandler
extends
IJobHandler
{
public
class
GlueJobHandler
extends
IJobHandler
{
private
String
job_group
;
private
int
jobId
;
private
String
job_name
;
public
GlueJobHandler
(
int
jobId
)
{
public
GlueJobHandler
(
String
job_group
,
String
job_name
)
{
this
.
jobId
=
jobId
;
this
.
job_group
=
job_group
;
this
.
job_name
=
job_name
;
}
}
@Override
@Override
public
void
execute
(
String
...
params
)
throws
Exception
{
public
void
execute
(
String
...
params
)
throws
Exception
{
GlueFactory
.
glue
(
job
_group
,
job_name
,
params
);
GlueFactory
.
glue
(
job
Id
,
params
);
}
}
}
}
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论