Browse Source

规范项目目录,方便扩展多执行器;

xuxueli 8 years ago
parent
commit
85179937cc
28 changed files with 416 additions and 392 deletions
  1. 1 1
      NOTICE
  2. 1 1
      README.md
  3. 0 0
      doc/XXL-JOB-English-Documentation.md
  4. 21 16
      doc/XXL-JOB官方文档.md
  5. 0 0
      doc/db/tables_mysql(备份,请忽略).sql
  6. 220 220
      doc/db/tables_xxl_job.sql
  7. 1 2
      pom.xml
  8. 3 1
      xxl-job-core/src/main/java/com/xxl/job/core/executor/XxlJobExecutor.java
  9. 1 1
      xxl-job-core/src/main/java/com/xxl/job/core/log/XxlJobFileAppender.java
  10. 18 0
      xxl-job-executor-samples/pom.xml
  11. 38 38
      xxl-job-executor-samples/xxl-job-executor-sample-spring/pom.xml
  12. 38 38
      xxl-job-executor-samples/xxl-job-executor-sample-spring/src/main/java/com/xxl/job/executor/service/jobhandler/DemoJobHandler.java
  13. 0 0
      xxl-job-executor-samples/xxl-job-executor-sample-spring/src/main/java/com/xxl/job/executor/service/jobhandler/ShardingJobHandler.java
  14. 40 40
      xxl-job-executor-samples/xxl-job-executor-sample-spring/src/main/resources/applicationcontext-xxl-job.xml
  15. 3 3
      xxl-job-executor-samples/xxl-job-executor-sample-spring/src/main/resources/log4j.xml
  16. 1 1
      xxl-job-executor-samples/xxl-job-executor-sample-spring/src/main/resources/xxl-job-executor.properties
  17. 26 26
      xxl-job-executor-samples/xxl-job-executor-sample-spring/src/main/webapp/WEB-INF/web.xml
  18. 0 0
      xxl-job-executor-samples/xxl-job-executor-sample-spring/src/main/webapp/index.html
  19. 0 0
      xxl-job-executor-samples/xxl-job-executor-sample-spring/src/test/java/com/xxl/executor/test/DemoJobHandlerTest.java
  20. 2 2
      xxl-job-executor-samples/xxl-job-executor-sample-springboot/pom.xml
  21. 0 0
      xxl-job-executor-samples/xxl-job-executor-sample-springboot/src/main/java/com/xxl/job/executor/Application.java
  22. 0 0
      xxl-job-executor-samples/xxl-job-executor-sample-springboot/src/main/java/com/xxl/job/executor/core/config/XxlJobConfig.java
  23. 0 0
      xxl-job-executor-samples/xxl-job-executor-sample-springboot/src/main/java/com/xxl/job/executor/mvc/controller/IndexController.java
  24. 0 0
      xxl-job-executor-samples/xxl-job-executor-sample-springboot/src/main/java/com/xxl/job/executor/service/jobhandler/DemoJobHandler.java
  25. 0 0
      xxl-job-executor-samples/xxl-job-executor-sample-springboot/src/main/java/com/xxl/job/executor/service/jobhandler/ShardingJobHandler.java
  26. 1 1
      xxl-job-executor-samples/xxl-job-executor-sample-springboot/src/main/resources/application.properties
  27. 1 1
      xxl-job-executor-samples/xxl-job-executor-sample-springboot/src/main/resources/logback.xml
  28. 0 0
      xxl-job-executor-samples/xxl-job-executor-sample-springboot/src/test/java/com/xxl/job/executor/test/XxlJobExecutorExampleBootApplicationTests.java

+ 1 - 1
NOTICE View File

@@ -1,4 +1,4 @@
1
-Copyright 2015-2017/NOW xuxueli.
1
+Copyright (c) 2015-present, xuxueli.
2 2
 
3 3
 Dependencies:
4 4
 ================================================================

+ 1 - 1
README.md View File

@@ -38,7 +38,7 @@ XXL-JOB是一个轻量级分布式任务调度框架,其核心设计目标是
38 38
 
39 39
 ## Documentation
40 40
 - [中文文档](https://github.com/xuxueli/xxl-job/blob/master/doc/XXL-JOB官方文档.md)
41
-- [Englis Documentation](https://github.com/xuxueli/xxl-job/blob/master/doc/XXL-JOB-Englis-Documentation.md)
41
+- [English Documentation](https://github.com/xuxueli/xxl-job/blob/master/doc/XXL-JOB-English-Documentation.md)
42 42
 
43 43
 
44 44
 ## Features

doc/XXL-JOB-Englis-Documentation.md → doc/XXL-JOB-English-Documentation.md View File


+ 21 - 16
doc/XXL-JOB官方文档.md View File

@@ -122,11 +122,11 @@ XXL-JOB是一个轻量级分布式任务调度框架,其核心设计目标是
122 122
 #### 技术交流
123 123
 
124 124
 - 腾讯QQ群(6):399758605
125
-- 腾讯QQ群(5):138274130    (群即将满,请加群6)
126
-- 腾讯QQ群(4):464762661    (群即将满,请加群6)
127
-- 腾讯QQ群(3):242151780    (群即将满,请加群6)
128
-- 腾讯QQ群(2):438249535    (群即将满,请加群6)
129
-- 腾讯QQ群(1):367260654    (群即将满,请加群6)
125
+- 腾讯QQ群(5):138274130
126
+- 腾讯QQ群(4):464762661
127
+- 腾讯QQ群(3):242151780
128
+- 腾讯QQ群(2):438249535
129
+- 腾讯QQ群(1):367260654
130 130
 
131 131
 ### 1.5 环境
132 132
 - JDK:1.7+
@@ -144,7 +144,7 @@ XXL-JOB是一个轻量级分布式任务调度框架,其核心设计目标是
144 144
 
145 145
 "调度数据库初始化SQL脚本" 位置为:
146 146
 
147
-    /xxl-job/db/tables_xxl_job.sql
147
+    /xxl-job/doc/db/tables_xxl_job.sql
148 148
 
149 149
 调度中心支持集群部署,集群情况下各节点务必连接同一个mysql实例;
150 150
 
@@ -155,8 +155,9 @@ XXL-JOB是一个轻量级分布式任务调度框架,其核心设计目标是
155 155
 
156 156
     xxl-job-admin:调度中心
157 157
     xxl-job-core:公共依赖
158
-    xxl-job-executor-example:执行器Example(可直接使用执行器Example,也可以将现有项目改造成执行器使用)
159
-    xxl-job-executor-springboot-example:执行器Example,springboot版本
158
+    xxl-job-executor:执行器Example项目
159
+        :xxl-job-executor-sample-spring:执行器Example,Spring版本(可直接使用执行器Example,也可以将现有项目改造成执行器使用)
160
+        :xxl-job-executor-sample-springboot:执行器Example,Springboot版本
160 161
 
161 162
 ### 2.3 配置部署“调度中心”
162 163
 
@@ -209,7 +210,7 @@ XXL-JOB是一个轻量级分布式任务调度框架,其核心设计目标是
209 210
 
210 211
 ### 2.4 配置部署“执行器项目”
211 212
 
212
-    “执行器”项目:xxl-job-executor-example (如新建执行器项目,可参考该Example执行器项目的配置步骤;)
213
+    “执行器”项目:xxl-job-executor-sample-spring (如新建执行器项目,可参考该Example执行器项目的配置步骤;)
213 214
     作用:负责接收“调度中心”的调度并执行;
214 215
     
215 216
 #### 步骤一:maven依赖
@@ -218,7 +219,7 @@ XXL-JOB是一个轻量级分布式任务调度框架,其核心设计目标是
218 219
 #### 步骤二:执行器配置
219 220
 执行器配置配置文件地址:
220 221
 
221
-    /xxl-job/xxl-job-executor-example/src/main/resources/xxl-job-executor.properties
222
+    /xxl-job/xxl-job-executor-samples/xxl-job-executor-sample-spring/src/main/resources/xxl-job-executor.properties
222 223
 
223 224
 执行器配置配置内容说明:
224 225
 
@@ -226,7 +227,7 @@ XXL-JOB是一个轻量级分布式任务调度框架,其核心设计目标是
226 227
     xxl.job.admin.addresses=http://127.0.0.1:8080/xxl-job-admin
227 228
     
228 229
     ### xxl-job executor address:执行器"AppName"和地址信息配置:AppName执行器心跳注册分组依据;地址信息用于"调度中心请求并触发任务"和"执行器注册"。执行器默认端口为9999,执行器IP默认为空表示自动获取IP,多网卡时可手动设置指定IP。单机部署多个执行器时,注意要配置不同执行器端口;
229
-    xxl.job.executor.appname=xxl-job-executor-example
230
+    xxl.job.executor.appname=xxl-job-executor-sample
230 231
     xxl.job.executor.ip=
231 232
     xxl.job.executor.port=9999
232 233
     
@@ -248,8 +249,8 @@ XXL-JOB是一个轻量级分布式任务调度框架,其核心设计目标是
248 249
 #### 步骤四:部署执行器项目:
249 250
 如果已经正确进行上述配置,可将执行器项目编译打部署,系统提供两个执行器example项目,选择其中一个即可,各自的部署方式如下。
250 251
 
251
-    xxl-job-executor-example:项目编译打包成WAR包,并部署到tomcat中。
252
-    xxl-job-executor-springboot-example:项目编译打包成springboot类型的可执行JAR包,命令启动即可;
252
+    xxl-job-executor-sample-spring:项目编译打包成WAR包,并部署到tomcat中。
253
+    xxl-job-executor-sample-springboot:项目编译打包成springboot类型的可执行JAR包,命令启动即可;
253 254
 
254 255
 至此“执行器”项目已经部署结束。
255 256
 
@@ -326,7 +327,7 @@ XXL-JOB是一个轻量级分布式任务调度框架,其核心设计目标是
326 327
     - 失败处理策略;调度失败时的处理策略;
327 328
         失败告警(默认):调度失败时,将会触发失败报警,如发送报警邮件;
328 329
         失败重试:调度失败时,将会主动进行一次失败重试调度,重试调度后仍然失败将会触发一失败告警。注意当任务以failover方式路由时,每次失败重试将会触发新一轮路由。
329
-    - 执行参数:任务执行所需的参数,多个参数时用逗号分隔,任务执行时将会把多个参数换成数组传入;
330
+    - 执行参数:任务执行所需的参数,多个参数时用逗号分隔,任务执行时将会把多个参数换成数组传入;
330 331
     - 报警邮件:任务调度失败时邮件通知的邮箱地址,支持配置多邮箱地址,配置多个邮箱地址时用逗号分隔;
331 332
     - 负责人:任务的负责人;
332 333
     
@@ -337,7 +338,7 @@ XXL-JOB是一个轻量级分布式任务调度框架,其核心设计目标是
337 338
     - 1、 新建一个继承com.xxl.job.core.handler.IJobHandler的Java类;
338 339
     - 2、 该类被Spring容器扫描为Bean实例,如加“@Component”注解;
339 340
     - 3、 添加 “@JobHander(value="自定义jobhandler名称")”注解,注解的value值为自定义的JobHandler名称,该名称对应的是调度中心新建任务的JobHandler属性的值。
340
-    (可参考xxl-job-executor-example项目中的DemoJobHandler,见下图)
341
+    (可参考Example执行器中的DemoJobHandler,见下图)
341 342
 
342 343
 ![输入图片说明](https://static.oschina.net/uploads/img/201607/23232347_oLlM.png "在这里输入图片标题")
343 344
 
@@ -495,7 +496,7 @@ try{
495 496
     - /db :“调度数据库”建表脚本
496 497
     - /xxl-job-admin :调度中心,项目源码
497 498
     - /xxl-job-core :公共Jar依赖
498
-    - /xxl-job-executor-example :执行器,Demo项目源码(大家可以在该项目上进行开发,也可以将现有项目改造生成执行器项目)
499
+    - /xxl-job-executor-samples :执行器,Example项目(大家可以在该项目上进行开发,也可以将现有项目改造生成执行器项目)
499 500
 
500 501
 #### 5.2 “调度数据库”配置
501 502
 XXL-JOB调度模块基于Quartz集群实现,其“调度数据库”是在Quartz的11张集群mysql表基础上扩展而成。
@@ -944,6 +945,10 @@ Tips: 历史版本(V1.3.x)目前已经Release至稳定版本, 进入维护阶段
944 945
 - 10、springboot版本执行器,升级至1.5.6.RELEASE版本;
945 946
 - 11、统一maven依赖版本管理;
946 947
 
948
+#### 6.18 版本 V1.8.2 特性[Coding]
949
+- 1、解决执行器回调URL不支持配置HTTPS时问题;
950
+- 2、规范项目目录,方便扩展多执行器;
951
+
947 952
 #### TODO LIST
948 953
 - 1、任务权限管理:执行器为粒度分配权限,核心操作校验权限;
949 954
 - 2、任务分片路由:分片采用一致性Hash算法计算出尽量稳定的分片顺序,即使注册机器存在波动也不会引起分批分片顺序大的波动;目前采用IP自然排序,可以满足需求,待定;

db/tables_mysql(备份,请忽略).sql → doc/db/tables_mysql(备份,请忽略).sql View File


db/tables_xxl_job.sql → doc/db/tables_xxl_job.sql View File

@@ -1,220 +1,220 @@
1
-
2
-CREATE TABLE XXL_JOB_QRTZ_JOB_DETAILS
3
-  (
4
-    SCHED_NAME VARCHAR(120) NOT NULL,
5
-    JOB_NAME  VARCHAR(200) NOT NULL,
6
-    JOB_GROUP VARCHAR(200) NOT NULL,
7
-    DESCRIPTION VARCHAR(250) NULL,
8
-    JOB_CLASS_NAME   VARCHAR(250) NOT NULL,
9
-    IS_DURABLE VARCHAR(1) NOT NULL,
10
-    IS_NONCONCURRENT VARCHAR(1) NOT NULL,
11
-    IS_UPDATE_DATA VARCHAR(1) NOT NULL,
12
-    REQUESTS_RECOVERY VARCHAR(1) NOT NULL,
13
-    JOB_DATA BLOB NULL,
14
-    PRIMARY KEY (SCHED_NAME,JOB_NAME,JOB_GROUP)
15
-);
16
-
17
-CREATE TABLE XXL_JOB_QRTZ_TRIGGERS
18
-  (
19
-    SCHED_NAME VARCHAR(120) NOT NULL,
20
-    TRIGGER_NAME VARCHAR(200) NOT NULL,
21
-    TRIGGER_GROUP VARCHAR(200) NOT NULL,
22
-    JOB_NAME  VARCHAR(200) NOT NULL,
23
-    JOB_GROUP VARCHAR(200) NOT NULL,
24
-    DESCRIPTION VARCHAR(250) NULL,
25
-    NEXT_FIRE_TIME BIGINT(13) NULL,
26
-    PREV_FIRE_TIME BIGINT(13) NULL,
27
-    PRIORITY INTEGER NULL,
28
-    TRIGGER_STATE VARCHAR(16) NOT NULL,
29
-    TRIGGER_TYPE VARCHAR(8) NOT NULL,
30
-    START_TIME BIGINT(13) NOT NULL,
31
-    END_TIME BIGINT(13) NULL,
32
-    CALENDAR_NAME VARCHAR(200) NULL,
33
-    MISFIRE_INSTR SMALLINT(2) NULL,
34
-    JOB_DATA BLOB NULL,
35
-    PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP),
36
-    FOREIGN KEY (SCHED_NAME,JOB_NAME,JOB_GROUP)
37
-        REFERENCES XXL_JOB_QRTZ_JOB_DETAILS(SCHED_NAME,JOB_NAME,JOB_GROUP)
38
-);
39
-
40
-CREATE TABLE XXL_JOB_QRTZ_SIMPLE_TRIGGERS
41
-  (
42
-    SCHED_NAME VARCHAR(120) NOT NULL,
43
-    TRIGGER_NAME VARCHAR(200) NOT NULL,
44
-    TRIGGER_GROUP VARCHAR(200) NOT NULL,
45
-    REPEAT_COUNT BIGINT(7) NOT NULL,
46
-    REPEAT_INTERVAL BIGINT(12) NOT NULL,
47
-    TIMES_TRIGGERED BIGINT(10) NOT NULL,
48
-    PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP),
49
-    FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)
50
-        REFERENCES XXL_JOB_QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)
51
-);
52
-
53
-CREATE TABLE XXL_JOB_QRTZ_CRON_TRIGGERS
54
-  (
55
-    SCHED_NAME VARCHAR(120) NOT NULL,
56
-    TRIGGER_NAME VARCHAR(200) NOT NULL,
57
-    TRIGGER_GROUP VARCHAR(200) NOT NULL,
58
-    CRON_EXPRESSION VARCHAR(200) NOT NULL,
59
-    TIME_ZONE_ID VARCHAR(80),
60
-    PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP),
61
-    FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)
62
-        REFERENCES XXL_JOB_QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)
63
-);
64
-
65
-CREATE TABLE XXL_JOB_QRTZ_SIMPROP_TRIGGERS
66
-  (          
67
-    SCHED_NAME VARCHAR(120) NOT NULL,
68
-    TRIGGER_NAME VARCHAR(200) NOT NULL,
69
-    TRIGGER_GROUP VARCHAR(200) NOT NULL,
70
-    STR_PROP_1 VARCHAR(512) NULL,
71
-    STR_PROP_2 VARCHAR(512) NULL,
72
-    STR_PROP_3 VARCHAR(512) NULL,
73
-    INT_PROP_1 INT NULL,
74
-    INT_PROP_2 INT NULL,
75
-    LONG_PROP_1 BIGINT NULL,
76
-    LONG_PROP_2 BIGINT NULL,
77
-    DEC_PROP_1 NUMERIC(13,4) NULL,
78
-    DEC_PROP_2 NUMERIC(13,4) NULL,
79
-    BOOL_PROP_1 VARCHAR(1) NULL,
80
-    BOOL_PROP_2 VARCHAR(1) NULL,
81
-    PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP),
82
-    FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) 
83
-    REFERENCES XXL_JOB_QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)
84
-);
85
-
86
-CREATE TABLE XXL_JOB_QRTZ_BLOB_TRIGGERS
87
-  (
88
-    SCHED_NAME VARCHAR(120) NOT NULL,
89
-    TRIGGER_NAME VARCHAR(200) NOT NULL,
90
-    TRIGGER_GROUP VARCHAR(200) NOT NULL,
91
-    BLOB_DATA BLOB NULL,
92
-    PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP),
93
-    FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)
94
-        REFERENCES XXL_JOB_QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)
95
-);
96
-
97
-CREATE TABLE XXL_JOB_QRTZ_CALENDARS
98
-  (
99
-    SCHED_NAME VARCHAR(120) NOT NULL,
100
-    CALENDAR_NAME  VARCHAR(200) NOT NULL,
101
-    CALENDAR BLOB NOT NULL,
102
-    PRIMARY KEY (SCHED_NAME,CALENDAR_NAME)
103
-);
104
-
105
-CREATE TABLE XXL_JOB_QRTZ_PAUSED_TRIGGER_GRPS
106
-  (
107
-    SCHED_NAME VARCHAR(120) NOT NULL,
108
-    TRIGGER_GROUP  VARCHAR(200) NOT NULL, 
109
-    PRIMARY KEY (SCHED_NAME,TRIGGER_GROUP)
110
-);
111
-
112
-CREATE TABLE XXL_JOB_QRTZ_FIRED_TRIGGERS
113
-  (
114
-    SCHED_NAME VARCHAR(120) NOT NULL,
115
-    ENTRY_ID VARCHAR(95) NOT NULL,
116
-    TRIGGER_NAME VARCHAR(200) NOT NULL,
117
-    TRIGGER_GROUP VARCHAR(200) NOT NULL,
118
-    INSTANCE_NAME VARCHAR(200) NOT NULL,
119
-    FIRED_TIME BIGINT(13) NOT NULL,
120
-    SCHED_TIME BIGINT(13) NOT NULL,
121
-    PRIORITY INTEGER NOT NULL,
122
-    STATE VARCHAR(16) NOT NULL,
123
-    JOB_NAME VARCHAR(200) NULL,
124
-    JOB_GROUP VARCHAR(200) NULL,
125
-    IS_NONCONCURRENT VARCHAR(1) NULL,
126
-    REQUESTS_RECOVERY VARCHAR(1) NULL,
127
-    PRIMARY KEY (SCHED_NAME,ENTRY_ID)
128
-);
129
-
130
-CREATE TABLE XXL_JOB_QRTZ_SCHEDULER_STATE
131
-  (
132
-    SCHED_NAME VARCHAR(120) NOT NULL,
133
-    INSTANCE_NAME VARCHAR(200) NOT NULL,
134
-    LAST_CHECKIN_TIME BIGINT(13) NOT NULL,
135
-    CHECKIN_INTERVAL BIGINT(13) NOT NULL,
136
-    PRIMARY KEY (SCHED_NAME,INSTANCE_NAME)
137
-);
138
-
139
-CREATE TABLE XXL_JOB_QRTZ_LOCKS
140
-  (
141
-    SCHED_NAME VARCHAR(120) NOT NULL,
142
-    LOCK_NAME  VARCHAR(40) NOT NULL, 
143
-    PRIMARY KEY (SCHED_NAME,LOCK_NAME)
144
-);
145
-
146
-
147
-
148
-CREATE TABLE `XXL_JOB_QRTZ_TRIGGER_INFO` (
149
-  `id` int(11) NOT NULL AUTO_INCREMENT,
150
-  `job_group` int(11) NOT NULL COMMENT '执行器主键ID',
151
-  `job_cron` varchar(128) NOT NULL COMMENT '任务执行CRON',
152
-  `job_desc` varchar(255) NOT NULL,
153
-  `add_time` datetime DEFAULT NULL,
154
-  `update_time` datetime DEFAULT NULL,
155
-  `author` varchar(64) DEFAULT NULL COMMENT '作者',
156
-  `alarm_email` varchar(255) DEFAULT NULL COMMENT '报警邮件',
157
-  `executor_route_strategy` varchar(50) DEFAULT NULL COMMENT '执行器路由策略',
158
-  `executor_handler` varchar(255) DEFAULT NULL COMMENT '执行器任务handler',
159
-  `executor_param` varchar(255) DEFAULT NULL COMMENT '执行器任务参数',
160
-  `executor_block_strategy` varchar(50) DEFAULT NULL COMMENT '阻塞处理策略',
161
-  `executor_fail_strategy` varchar(50) DEFAULT NULL COMMENT '失败处理策略',
162
-  `glue_type` varchar(50) NOT NULL COMMENT 'GLUE类型',
163
-  `glue_source` text COMMENT 'GLUE源代码',
164
-  `glue_remark` varchar(128) DEFAULT NULL COMMENT 'GLUE备注',
165
-  `glue_updatetime` datetime DEFAULT NULL COMMENT 'GLUE更新时间',
166
-  `child_jobkey` varchar(255) DEFAULT NULL COMMENT '子任务Key',
167
-  PRIMARY KEY (`id`)
168
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
169
-
170
-CREATE TABLE `XXL_JOB_QRTZ_TRIGGER_LOG` (
171
-  `id` int(11) NOT NULL AUTO_INCREMENT,
172
-  `job_group` int(11) NOT NULL COMMENT '执行器主键ID',
173
-  `job_id` int(11) NOT NULL COMMENT '任务,主键ID',
174
-  `glue_type` varchar(50) DEFAULT NULL COMMENT 'GLUE类型',
175
-  `executor_address` varchar(255) DEFAULT NULL COMMENT '执行器地址,本次执行的地址',
176
-  `executor_handler` varchar(255) DEFAULT NULL COMMENT '执行器任务handler',
177
-  `executor_param` varchar(255) DEFAULT NULL COMMENT 'executor_param',
178
-  `trigger_time` datetime DEFAULT NULL COMMENT '调度-时间',
179
-  `trigger_code` varchar(255) NOT NULL DEFAULT '0' COMMENT '调度-结果',
180
-  `trigger_msg` varchar(2048) DEFAULT NULL COMMENT '调度-日志',
181
-  `handle_time` datetime DEFAULT NULL COMMENT '执行-时间',
182
-  `handle_code` varchar(255) NOT NULL DEFAULT '0' COMMENT '执行-状态',
183
-  `handle_msg` varchar(2048) DEFAULT NULL COMMENT '执行-日志',
184
-  PRIMARY KEY (`id`)
185
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
186
-
187
-CREATE TABLE `XXL_JOB_QRTZ_TRIGGER_LOGGLUE` (
188
-  `id` int(11) NOT NULL AUTO_INCREMENT,
189
-  `job_id` int(11) NOT NULL COMMENT '任务,主键ID',
190
-  `glue_type` varchar(50) DEFAULT NULL COMMENT 'GLUE类型',
191
-  `glue_source` text COMMENT 'GLUE源代码',
192
-  `glue_remark` varchar(128) NOT NULL COMMENT 'GLUE备注',
193
-  `add_time` timestamp NULL DEFAULT NULL,
194
-  `update_time` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
195
-  PRIMARY KEY (`id`)
196
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
197
-
198
-CREATE TABLE XXL_JOB_QRTZ_TRIGGER_REGISTRY (
199
-  `id` int(11) NOT NULL AUTO_INCREMENT,
200
-  `registry_group` varchar(255) NOT NULL,
201
-  `registry_key` varchar(255) NOT NULL,
202
-  `registry_value` varchar(255) NOT NULL,
203
-  `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
204
-  PRIMARY KEY (`id`)
205
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
206
-
207
-CREATE TABLE `XXL_JOB_QRTZ_TRIGGER_GROUP` (
208
-  `id` int(11) NOT NULL AUTO_INCREMENT,
209
-  `app_name` varchar(64) NOT NULL COMMENT '执行器AppName',
210
-  `title` varchar(12) NOT NULL COMMENT '执行器名称',
211
-  `order` tinyint(4) NOT NULL DEFAULT '0' COMMENT '排序',
212
-  `address_type` tinyint(4) NOT NULL DEFAULT '0' COMMENT '执行器地址类型:0=自动注册、1=手动录入',
213
-  `address_list` varchar(200) DEFAULT NULL COMMENT '执行器地址列表,多地址逗号分隔',
214
-  PRIMARY KEY (`id`)
215
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
216
-
217
-INSERT INTO `XXL_JOB_QRTZ_TRIGGER_GROUP` ( `app_name`, `title`, `order`, `address_type`, `address_list`) values ( 'xxl-job-executor-example', '示例执行器', '1', '0', null);
218
-
219
-commit;
220
-
1
+
2
+CREATE TABLE XXL_JOB_QRTZ_JOB_DETAILS
3
+  (
4
+    SCHED_NAME VARCHAR(120) NOT NULL,
5
+    JOB_NAME  VARCHAR(200) NOT NULL,
6
+    JOB_GROUP VARCHAR(200) NOT NULL,
7
+    DESCRIPTION VARCHAR(250) NULL,
8
+    JOB_CLASS_NAME   VARCHAR(250) NOT NULL,
9
+    IS_DURABLE VARCHAR(1) NOT NULL,
10
+    IS_NONCONCURRENT VARCHAR(1) NOT NULL,
11
+    IS_UPDATE_DATA VARCHAR(1) NOT NULL,
12
+    REQUESTS_RECOVERY VARCHAR(1) NOT NULL,
13
+    JOB_DATA BLOB NULL,
14
+    PRIMARY KEY (SCHED_NAME,JOB_NAME,JOB_GROUP)
15
+);
16
+
17
+CREATE TABLE XXL_JOB_QRTZ_TRIGGERS
18
+  (
19
+    SCHED_NAME VARCHAR(120) NOT NULL,
20
+    TRIGGER_NAME VARCHAR(200) NOT NULL,
21
+    TRIGGER_GROUP VARCHAR(200) NOT NULL,
22
+    JOB_NAME  VARCHAR(200) NOT NULL,
23
+    JOB_GROUP VARCHAR(200) NOT NULL,
24
+    DESCRIPTION VARCHAR(250) NULL,
25
+    NEXT_FIRE_TIME BIGINT(13) NULL,
26
+    PREV_FIRE_TIME BIGINT(13) NULL,
27
+    PRIORITY INTEGER NULL,
28
+    TRIGGER_STATE VARCHAR(16) NOT NULL,
29
+    TRIGGER_TYPE VARCHAR(8) NOT NULL,
30
+    START_TIME BIGINT(13) NOT NULL,
31
+    END_TIME BIGINT(13) NULL,
32
+    CALENDAR_NAME VARCHAR(200) NULL,
33
+    MISFIRE_INSTR SMALLINT(2) NULL,
34
+    JOB_DATA BLOB NULL,
35
+    PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP),
36
+    FOREIGN KEY (SCHED_NAME,JOB_NAME,JOB_GROUP)
37
+        REFERENCES XXL_JOB_QRTZ_JOB_DETAILS(SCHED_NAME,JOB_NAME,JOB_GROUP)
38
+);
39
+
40
+CREATE TABLE XXL_JOB_QRTZ_SIMPLE_TRIGGERS
41
+  (
42
+    SCHED_NAME VARCHAR(120) NOT NULL,
43
+    TRIGGER_NAME VARCHAR(200) NOT NULL,
44
+    TRIGGER_GROUP VARCHAR(200) NOT NULL,
45
+    REPEAT_COUNT BIGINT(7) NOT NULL,
46
+    REPEAT_INTERVAL BIGINT(12) NOT NULL,
47
+    TIMES_TRIGGERED BIGINT(10) NOT NULL,
48
+    PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP),
49
+    FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)
50
+        REFERENCES XXL_JOB_QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)
51
+);
52
+
53
+CREATE TABLE XXL_JOB_QRTZ_CRON_TRIGGERS
54
+  (
55
+    SCHED_NAME VARCHAR(120) NOT NULL,
56
+    TRIGGER_NAME VARCHAR(200) NOT NULL,
57
+    TRIGGER_GROUP VARCHAR(200) NOT NULL,
58
+    CRON_EXPRESSION VARCHAR(200) NOT NULL,
59
+    TIME_ZONE_ID VARCHAR(80),
60
+    PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP),
61
+    FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)
62
+        REFERENCES XXL_JOB_QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)
63
+);
64
+
65
+CREATE TABLE XXL_JOB_QRTZ_SIMPROP_TRIGGERS
66
+  (          
67
+    SCHED_NAME VARCHAR(120) NOT NULL,
68
+    TRIGGER_NAME VARCHAR(200) NOT NULL,
69
+    TRIGGER_GROUP VARCHAR(200) NOT NULL,
70
+    STR_PROP_1 VARCHAR(512) NULL,
71
+    STR_PROP_2 VARCHAR(512) NULL,
72
+    STR_PROP_3 VARCHAR(512) NULL,
73
+    INT_PROP_1 INT NULL,
74
+    INT_PROP_2 INT NULL,
75
+    LONG_PROP_1 BIGINT NULL,
76
+    LONG_PROP_2 BIGINT NULL,
77
+    DEC_PROP_1 NUMERIC(13,4) NULL,
78
+    DEC_PROP_2 NUMERIC(13,4) NULL,
79
+    BOOL_PROP_1 VARCHAR(1) NULL,
80
+    BOOL_PROP_2 VARCHAR(1) NULL,
81
+    PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP),
82
+    FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) 
83
+    REFERENCES XXL_JOB_QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)
84
+);
85
+
86
+CREATE TABLE XXL_JOB_QRTZ_BLOB_TRIGGERS
87
+  (
88
+    SCHED_NAME VARCHAR(120) NOT NULL,
89
+    TRIGGER_NAME VARCHAR(200) NOT NULL,
90
+    TRIGGER_GROUP VARCHAR(200) NOT NULL,
91
+    BLOB_DATA BLOB NULL,
92
+    PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP),
93
+    FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)
94
+        REFERENCES XXL_JOB_QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)
95
+);
96
+
97
+CREATE TABLE XXL_JOB_QRTZ_CALENDARS
98
+  (
99
+    SCHED_NAME VARCHAR(120) NOT NULL,
100
+    CALENDAR_NAME  VARCHAR(200) NOT NULL,
101
+    CALENDAR BLOB NOT NULL,
102
+    PRIMARY KEY (SCHED_NAME,CALENDAR_NAME)
103
+);
104
+
105
+CREATE TABLE XXL_JOB_QRTZ_PAUSED_TRIGGER_GRPS
106
+  (
107
+    SCHED_NAME VARCHAR(120) NOT NULL,
108
+    TRIGGER_GROUP  VARCHAR(200) NOT NULL, 
109
+    PRIMARY KEY (SCHED_NAME,TRIGGER_GROUP)
110
+);
111
+
112
+CREATE TABLE XXL_JOB_QRTZ_FIRED_TRIGGERS
113
+  (
114
+    SCHED_NAME VARCHAR(120) NOT NULL,
115
+    ENTRY_ID VARCHAR(95) NOT NULL,
116
+    TRIGGER_NAME VARCHAR(200) NOT NULL,
117
+    TRIGGER_GROUP VARCHAR(200) NOT NULL,
118
+    INSTANCE_NAME VARCHAR(200) NOT NULL,
119
+    FIRED_TIME BIGINT(13) NOT NULL,
120
+    SCHED_TIME BIGINT(13) NOT NULL,
121
+    PRIORITY INTEGER NOT NULL,
122
+    STATE VARCHAR(16) NOT NULL,
123
+    JOB_NAME VARCHAR(200) NULL,
124
+    JOB_GROUP VARCHAR(200) NULL,
125
+    IS_NONCONCURRENT VARCHAR(1) NULL,
126
+    REQUESTS_RECOVERY VARCHAR(1) NULL,
127
+    PRIMARY KEY (SCHED_NAME,ENTRY_ID)
128
+);
129
+
130
+CREATE TABLE XXL_JOB_QRTZ_SCHEDULER_STATE
131
+  (
132
+    SCHED_NAME VARCHAR(120) NOT NULL,
133
+    INSTANCE_NAME VARCHAR(200) NOT NULL,
134
+    LAST_CHECKIN_TIME BIGINT(13) NOT NULL,
135
+    CHECKIN_INTERVAL BIGINT(13) NOT NULL,
136
+    PRIMARY KEY (SCHED_NAME,INSTANCE_NAME)
137
+);
138
+
139
+CREATE TABLE XXL_JOB_QRTZ_LOCKS
140
+  (
141
+    SCHED_NAME VARCHAR(120) NOT NULL,
142
+    LOCK_NAME  VARCHAR(40) NOT NULL, 
143
+    PRIMARY KEY (SCHED_NAME,LOCK_NAME)
144
+);
145
+
146
+
147
+
148
+CREATE TABLE `XXL_JOB_QRTZ_TRIGGER_INFO` (
149
+  `id` int(11) NOT NULL AUTO_INCREMENT,
150
+  `job_group` int(11) NOT NULL COMMENT '执行器主键ID',
151
+  `job_cron` varchar(128) NOT NULL COMMENT '任务执行CRON',
152
+  `job_desc` varchar(255) NOT NULL,
153
+  `add_time` datetime DEFAULT NULL,
154
+  `update_time` datetime DEFAULT NULL,
155
+  `author` varchar(64) DEFAULT NULL COMMENT '作者',
156
+  `alarm_email` varchar(255) DEFAULT NULL COMMENT '报警邮件',
157
+  `executor_route_strategy` varchar(50) DEFAULT NULL COMMENT '执行器路由策略',
158
+  `executor_handler` varchar(255) DEFAULT NULL COMMENT '执行器任务handler',
159
+  `executor_param` varchar(255) DEFAULT NULL COMMENT '执行器任务参数',
160
+  `executor_block_strategy` varchar(50) DEFAULT NULL COMMENT '阻塞处理策略',
161
+  `executor_fail_strategy` varchar(50) DEFAULT NULL COMMENT '失败处理策略',
162
+  `glue_type` varchar(50) NOT NULL COMMENT 'GLUE类型',
163
+  `glue_source` text COMMENT 'GLUE源代码',
164
+  `glue_remark` varchar(128) DEFAULT NULL COMMENT 'GLUE备注',
165
+  `glue_updatetime` datetime DEFAULT NULL COMMENT 'GLUE更新时间',
166
+  `child_jobkey` varchar(255) DEFAULT NULL COMMENT '子任务Key',
167
+  PRIMARY KEY (`id`)
168
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
169
+
170
+CREATE TABLE `XXL_JOB_QRTZ_TRIGGER_LOG` (
171
+  `id` int(11) NOT NULL AUTO_INCREMENT,
172
+  `job_group` int(11) NOT NULL COMMENT '执行器主键ID',
173
+  `job_id` int(11) NOT NULL COMMENT '任务,主键ID',
174
+  `glue_type` varchar(50) DEFAULT NULL COMMENT 'GLUE类型',
175
+  `executor_address` varchar(255) DEFAULT NULL COMMENT '执行器地址,本次执行的地址',
176
+  `executor_handler` varchar(255) DEFAULT NULL COMMENT '执行器任务handler',
177
+  `executor_param` varchar(255) DEFAULT NULL COMMENT 'executor_param',
178
+  `trigger_time` datetime DEFAULT NULL COMMENT '调度-时间',
179
+  `trigger_code` varchar(255) NOT NULL DEFAULT '0' COMMENT '调度-结果',
180
+  `trigger_msg` varchar(2048) DEFAULT NULL COMMENT '调度-日志',
181
+  `handle_time` datetime DEFAULT NULL COMMENT '执行-时间',
182
+  `handle_code` varchar(255) NOT NULL DEFAULT '0' COMMENT '执行-状态',
183
+  `handle_msg` varchar(2048) DEFAULT NULL COMMENT '执行-日志',
184
+  PRIMARY KEY (`id`)
185
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
186
+
187
+CREATE TABLE `XXL_JOB_QRTZ_TRIGGER_LOGGLUE` (
188
+  `id` int(11) NOT NULL AUTO_INCREMENT,
189
+  `job_id` int(11) NOT NULL COMMENT '任务,主键ID',
190
+  `glue_type` varchar(50) DEFAULT NULL COMMENT 'GLUE类型',
191
+  `glue_source` text COMMENT 'GLUE源代码',
192
+  `glue_remark` varchar(128) NOT NULL COMMENT 'GLUE备注',
193
+  `add_time` timestamp NULL DEFAULT NULL,
194
+  `update_time` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
195
+  PRIMARY KEY (`id`)
196
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
197
+
198
+CREATE TABLE XXL_JOB_QRTZ_TRIGGER_REGISTRY (
199
+  `id` int(11) NOT NULL AUTO_INCREMENT,
200
+  `registry_group` varchar(255) NOT NULL,
201
+  `registry_key` varchar(255) NOT NULL,
202
+  `registry_value` varchar(255) NOT NULL,
203
+  `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
204
+  PRIMARY KEY (`id`)
205
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
206
+
207
+CREATE TABLE `XXL_JOB_QRTZ_TRIGGER_GROUP` (
208
+  `id` int(11) NOT NULL AUTO_INCREMENT,
209
+  `app_name` varchar(64) NOT NULL COMMENT '执行器AppName',
210
+  `title` varchar(12) NOT NULL COMMENT '执行器名称',
211
+  `order` tinyint(4) NOT NULL DEFAULT '0' COMMENT '排序',
212
+  `address_type` tinyint(4) NOT NULL DEFAULT '0' COMMENT '执行器地址类型:0=自动注册、1=手动录入',
213
+  `address_list` varchar(200) DEFAULT NULL COMMENT '执行器地址列表,多地址逗号分隔',
214
+  PRIMARY KEY (`id`)
215
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
216
+
217
+INSERT INTO `XXL_JOB_QRTZ_TRIGGER_GROUP` ( `app_name`, `title`, `order`, `address_type`, `address_list`) values ( 'xxl-job-executor-sample', '示例执行器', '1', '0', null);
218
+
219
+commit;
220
+

+ 1 - 2
pom.xml View File

@@ -13,8 +13,7 @@
13 13
 	<modules>
14 14
 		<module>xxl-job-core</module>
15 15
 		<module>xxl-job-admin</module>
16
-		<module>xxl-job-executor-example</module>
17
-        <module>xxl-job-executor-springboot-example</module>
16
+		<module>xxl-job-executor-samples</module>
18 17
     </modules>
19 18
 
20 19
 	<properties>

+ 3 - 1
xxl-job-core/src/main/java/com/xxl/job/core/executor/XxlJobExecutor.java View File

@@ -71,7 +71,9 @@ public class XxlJobExecutor implements ApplicationContextAware {
71 71
         initAdminBizList(adminAddresses, accessToken);
72 72
 
73 73
         // init executor-jobHandlerRepository
74
-        initJobHandlerRepository(applicationContext);
74
+        if (applicationContext != null) {
75
+            initJobHandlerRepository(applicationContext);
76
+        }
75 77
 
76 78
         // init logpath
77 79
         if (logPath!=null && logPath.trim().length()>0) {

+ 1 - 1
xxl-job-core/src/main/java/com/xxl/job/core/log/XxlJobFileAppender.java View File

@@ -18,7 +18,7 @@ public class XxlJobFileAppender {
18 18
 	// for JobThread (support log for child thread of job handler)
19 19
 	//public static ThreadLocal<String> contextHolder = new ThreadLocal<String>();
20 20
 	public static final InheritableThreadLocal<String> contextHolder = new InheritableThreadLocal<String>();
21
-	public static final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
21
+	public static final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");	// TODO, concurrent issues
22 22
 	public static String logPath = "/data/applogs/xxl-job/jobhandler/";
23 23
 
24 24
 	/**

+ 18 - 0
xxl-job-executor-samples/pom.xml View File

@@ -0,0 +1,18 @@
1
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
2
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
3
+
4
+    <modelVersion>4.0.0</modelVersion>
5
+    <parent>
6
+        <groupId>com.xuxueli</groupId>
7
+        <artifactId>xxl-job</artifactId>
8
+        <version>1.8.2-SNAPSHOT</version>
9
+    </parent>
10
+    <artifactId>xxl-job-executor-samples</artifactId>
11
+    <packaging>pom</packaging>
12
+
13
+    <modules>
14
+        <module>xxl-job-executor-sample-spring</module>
15
+        <module>xxl-job-executor-sample-springboot</module>
16
+    </modules>
17
+
18
+</project>

xxl-job-executor-example/pom.xml → xxl-job-executor-samples/xxl-job-executor-sample-spring/pom.xml View File

@@ -1,39 +1,39 @@
1
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
2
-	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
3
-	<modelVersion>4.0.0</modelVersion>
4
-	<parent>
5
-		<groupId>com.xuxueli</groupId>
6
-		<artifactId>xxl-job</artifactId>
7
-		<version>1.8.2-SNAPSHOT</version>
8
-	</parent>
9
-	<artifactId>xxl-job-executor-example</artifactId>
10
-	<packaging>war</packaging>
11
-
12
-	<name>${project.artifactId}</name>
13
-	<description>Executor project for spring boot.</description>
14
-	<url>http://www.xuxueli.com/</url>
15
-
16
-	<dependencies>
17
-		<!-- spring-webmvc -->
18
-		<dependency>
19
-			<groupId>org.springframework</groupId>
20
-			<artifactId>spring-webmvc</artifactId>
21
-			<version>${spring.version}</version>
22
-		</dependency>
23
-
24
-		<!-- slf4j -->
25
-		<dependency>
26
-			<groupId>org.slf4j</groupId>
27
-			<artifactId>slf4j-log4j12</artifactId>
28
-			<version>${slf4j-api.version}</version>
29
-		</dependency>
30
-		
31
-		<!-- xxl-job-core -->
32
-		<dependency>
33
-			<groupId>com.xuxueli</groupId>
34
-			<artifactId>xxl-job-core</artifactId>
35
-			<version>${project.parent.version}</version>
36
-		</dependency>
37
-	</dependencies>
38
-
1
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
2
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
3
+	<modelVersion>4.0.0</modelVersion>
4
+	<parent>
5
+		<groupId>com.xuxueli</groupId>
6
+		<artifactId>xxl-job-executor-samples</artifactId>
7
+		<version>1.8.2-SNAPSHOT</version>
8
+	</parent>
9
+	<artifactId>xxl-job-executor-sample-spring</artifactId>
10
+	<packaging>war</packaging>
11
+
12
+	<name>${project.artifactId}</name>
13
+	<description>Executor project for spring boot.</description>
14
+	<url>http://www.xuxueli.com/</url>
15
+
16
+	<dependencies>
17
+		<!-- spring-webmvc -->
18
+		<dependency>
19
+			<groupId>org.springframework</groupId>
20
+			<artifactId>spring-webmvc</artifactId>
21
+			<version>${spring.version}</version>
22
+		</dependency>
23
+
24
+		<!-- slf4j -->
25
+		<dependency>
26
+			<groupId>org.slf4j</groupId>
27
+			<artifactId>slf4j-log4j12</artifactId>
28
+			<version>${slf4j-api.version}</version>
29
+		</dependency>
30
+		
31
+		<!-- xxl-job-core -->
32
+		<dependency>
33
+			<groupId>com.xuxueli</groupId>
34
+			<artifactId>xxl-job-core</artifactId>
35
+			<version>${project.parent.version}</version>
36
+		</dependency>
37
+	</dependencies>
38
+
39 39
 </project>

xxl-job-executor-example/src/main/java/com/xxl/job/executor/service/jobhandler/DemoJobHandler.java → xxl-job-executor-samples/xxl-job-executor-sample-spring/src/main/java/com/xxl/job/executor/service/jobhandler/DemoJobHandler.java View File

@@ -1,38 +1,38 @@
1
-package com.xxl.job.executor.service.jobhandler;
2
-
3
-import com.xxl.job.core.biz.model.ReturnT;
4
-import com.xxl.job.core.handler.IJobHandler;
5
-import com.xxl.job.core.handler.annotation.JobHander;
6
-import com.xxl.job.core.log.XxlJobLogger;
7
-import org.springframework.stereotype.Component;
8
-
9
-import java.util.concurrent.TimeUnit;
10
-
11
-
12
-/**
13
- * 任务Handler的一个Demo(Bean模式)
14
- * 
15
- * 开发步骤:
16
- * 1、新建一个继承com.xxl.job.core.handler.IJobHandler的Java类;
17
- * 2、该类被Spring容器扫描为Bean实例,如加“@Component”注解;
18
- * 3、添加 “@JobHander(value="自定义jobhandler名称")”注解,注解的value值为自定义的JobHandler名称,该名称对应的是调度中心新建任务的JobHandler属性的值。
19
- * 4、执行日志:需要通过 "XxlJobLogger.log" 打印执行日志;
20
- * 
21
- * @author xuxueli 2015-12-19 19:43:36
22
- */
23
-@JobHander(value="demoJobHandler")
24
-@Component
25
-public class DemoJobHandler extends IJobHandler {
26
-
27
-	@Override
28
-	public ReturnT<String> execute(String... params) throws Exception {
29
-		XxlJobLogger.log("XXL-JOB, Hello World.");
30
-		
31
-		for (int i = 0; i < 5; i++) {
32
-			XxlJobLogger.log("beat at:" + i);
33
-			TimeUnit.SECONDS.sleep(2);
34
-		}
35
-		return ReturnT.SUCCESS;
36
-	}
37
-	
38
-}
1
+package com.xxl.job.executor.service.jobhandler;
2
+
3
+import com.xxl.job.core.biz.model.ReturnT;
4
+import com.xxl.job.core.handler.IJobHandler;
5
+import com.xxl.job.core.handler.annotation.JobHander;
6
+import com.xxl.job.core.log.XxlJobLogger;
7
+import org.springframework.stereotype.Component;
8
+
9
+import java.util.concurrent.TimeUnit;
10
+
11
+
12
+/**
13
+ * 任务Handler的一个Demo(Bean模式)
14
+ * 
15
+ * 开发步骤:
16
+ * 1、新建一个继承com.xxl.job.core.handler.IJobHandler的Java类;
17
+ * 2、该类被Spring容器扫描为Bean实例,如加“@Component”注解;
18
+ * 3、添加 “@JobHander(value="自定义jobhandler名称")”注解,注解的value值为自定义的JobHandler名称,该名称对应的是调度中心新建任务的JobHandler属性的值。
19
+ * 4、执行日志:需要通过 "XxlJobLogger.log" 打印执行日志;
20
+ * 
21
+ * @author xuxueli 2015-12-19 19:43:36
22
+ */
23
+@JobHander(value="demoJobHandler")
24
+@Component
25
+public class DemoJobHandler extends IJobHandler {
26
+
27
+	@Override
28
+	public ReturnT<String> execute(String... params) throws Exception {
29
+		XxlJobLogger.log("XXL-JOB, Hello World.");
30
+		
31
+		for (int i = 0; i < 5; i++) {
32
+			XxlJobLogger.log("beat at:" + i);
33
+			TimeUnit.SECONDS.sleep(2);
34
+		}
35
+		return ReturnT.SUCCESS;
36
+	}
37
+	
38
+}

xxl-job-executor-example/src/main/java/com/xxl/job/executor/service/jobhandler/ShardingJobHandler.java → xxl-job-executor-samples/xxl-job-executor-sample-spring/src/main/java/com/xxl/job/executor/service/jobhandler/ShardingJobHandler.java View File


xxl-job-executor-example/src/main/resources/applicationcontext-xxl-job.xml → xxl-job-executor-samples/xxl-job-executor-sample-spring/src/main/resources/applicationcontext-xxl-job.xml View File

@@ -1,41 +1,41 @@
1
-<?xml version="1.0" encoding="UTF-8"?>
2
-<beans xmlns="http://www.springframework.org/schema/beans"
3
-       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4
-       xmlns:context="http://www.springframework.org/schema/context"
5
-       xsi:schemaLocation="http://www.springframework.org/schema/beans
6
-           http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
7
-           http://www.springframework.org/schema/context
8
-           http://www.springframework.org/schema/context/spring-context-3.0.xsd">
9
-
10
-	<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
11
-		<property name="fileEncoding" value="utf-8" />
12
-		<property name="locations">
13
-			<list>
14
-				<value>classpath*:xxl-job-executor.properties</value>
15
-			</list>
16
-		</property>
17
-	</bean>
18
-
19
-    <!-- ********************************* 基础配置 ********************************* -->
20
-
21
-	<!-- 配置01、JobHandler 扫描路径 -->
22
-	<context:component-scan base-package="com.xxl.job.executor.service.jobhandler" />
23
-
24
-	<!-- 配置02、执行器 -->
25
-	<bean id="xxlJobExecutor" class="com.xxl.job.core.executor.XxlJobExecutor" init-method="start" destroy-method="destroy" >
26
-		<!-- 执行器IP[选填],为空则自动获取 -->
27
-		<property name="ip" value="${xxl.job.executor.ip}" />
28
-		<!-- 执行器端口号[必须] -->
29
-		<property name="port" value="${xxl.job.executor.port}" />
30
-		<!-- 执行器AppName[选填],为空则关闭自动注册 -->
31
-        <property name="appName" value="${xxl.job.executor.appname}" />
32
-        <!-- 执行器注册中心地址[选填],为空则关闭自动注册 -->
33
-		<property name="adminAddresses" value="${xxl.job.admin.addresses}" />
34
-		<!-- 执行器日志路径[必填] -->
35
-		<property name="logPath" value="${xxl.job.executor.logpath}" />
36
-		<!-- 访问令牌,非空则进行匹配校验[选填] -->
37
-		<property name="accessToken" value="${xxl.job.accessToken}" />
38
-	</bean>
39
-
40
-
1
+<?xml version="1.0" encoding="UTF-8"?>
2
+<beans xmlns="http://www.springframework.org/schema/beans"
3
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4
+       xmlns:context="http://www.springframework.org/schema/context"
5
+       xsi:schemaLocation="http://www.springframework.org/schema/beans
6
+           http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
7
+           http://www.springframework.org/schema/context
8
+           http://www.springframework.org/schema/context/spring-context-3.0.xsd">
9
+
10
+	<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
11
+		<property name="fileEncoding" value="utf-8" />
12
+		<property name="locations">
13
+			<list>
14
+				<value>classpath*:xxl-job-executor.properties</value>
15
+			</list>
16
+		</property>
17
+	</bean>
18
+
19
+    <!-- ********************************* 基础配置 ********************************* -->
20
+
21
+	<!-- 配置01、JobHandler 扫描路径 -->
22
+	<context:component-scan base-package="com.xxl.job.executor.service.jobhandler" />
23
+
24
+	<!-- 配置02、执行器 -->
25
+	<bean id="xxlJobExecutor" class="com.xxl.job.core.executor.XxlJobExecutor" init-method="start" destroy-method="destroy" >
26
+		<!-- 执行器IP[选填],为空则自动获取 -->
27
+		<property name="ip" value="${xxl.job.executor.ip}" />
28
+		<!-- 执行器端口号[必须] -->
29
+		<property name="port" value="${xxl.job.executor.port}" />
30
+		<!-- 执行器AppName[选填],为空则关闭自动注册 -->
31
+        <property name="appName" value="${xxl.job.executor.appname}" />
32
+        <!-- 执行器注册中心地址[选填],为空则关闭自动注册 -->
33
+		<property name="adminAddresses" value="${xxl.job.admin.addresses}" />
34
+		<!-- 执行器日志路径[必填] -->
35
+		<property name="logPath" value="${xxl.job.executor.logpath}" />
36
+		<!-- 访问令牌,非空则进行匹配校验[选填] -->
37
+		<property name="accessToken" value="${xxl.job.accessToken}" />
38
+	</bean>
39
+
40
+
41 41
 </beans>

xxl-job-executor-example/src/main/resources/log4j.xml → xxl-job-executor-samples/xxl-job-executor-sample-spring/src/main/resources/log4j.xml View File

@@ -5,16 +5,16 @@
5 5
 	<appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
6 6
 		<param name="Target" value="System.out" />
7 7
 		<layout class="org.apache.log4j.PatternLayout">
8
-            <param name="ConversionPattern" value="%-d{yyyy-MM-dd HH:mm:ss} xxl-job-executor-example [%c]-[%t]-[%M]-[%L]-[%p] %m%n"/>
8
+            <param name="ConversionPattern" value="%-d{yyyy-MM-dd HH:mm:ss} xxl-job-executor-sample-spring [%c]-[%t]-[%M]-[%L]-[%p] %m%n"/>
9 9
 		</layout>
10 10
 	</appender>
11 11
 	
12 12
     <appender name="FILE" class="org.apache.log4j.DailyRollingFileAppender">
13
-        <param name="file" value="/data/applogs/xxl-job/xxl-job-executor-example.log"/>
13
+        <param name="file" value="/data/applogs/xxl-job/xxl-job-executor-sample-spring.log"/>
14 14
         <param name="append" value="true"/>
15 15
         <param name="encoding" value="UTF-8"/>
16 16
         <layout class="org.apache.log4j.PatternLayout">
17
-            <param name="ConversionPattern" value="%-d{yyyy-MM-dd HH:mm:ss} xxl-job-executor-example [%c]-[%t]-[%M]-[%L]-[%p] %m%n"/>
17
+            <param name="ConversionPattern" value="%-d{yyyy-MM-dd HH:mm:ss} xxl-job-executor-sample-spring [%c]-[%t]-[%M]-[%L]-[%p] %m%n"/>
18 18
         </layout>
19 19
     </appender>
20 20
 

xxl-job-executor-example/src/main/resources/xxl-job-executor.properties → xxl-job-executor-samples/xxl-job-executor-sample-spring/src/main/resources/xxl-job-executor.properties View File

@@ -2,7 +2,7 @@
2 2
 xxl.job.admin.addresses=http://127.0.0.1:8080/xxl-job-admin
3 3
 
4 4
 ### xxl-job executor address
5
-xxl.job.executor.appname=xxl-job-executor-example
5
+xxl.job.executor.appname=xxl-job-executor-sample
6 6
 xxl.job.executor.ip=
7 7
 xxl.job.executor.port=9999
8 8
 

xxl-job-executor-example/src/main/webapp/WEB-INF/web.xml → xxl-job-executor-samples/xxl-job-executor-sample-spring/src/main/webapp/WEB-INF/web.xml View File

@@ -1,27 +1,27 @@
1
-<?xml version="1.0" encoding="UTF-8"?>
2
-<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3
-	xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee"
4
-	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
5
-	id="WebApp_ID" version="2.5">
6
-	<context-param>
7
-	    <param-name>webAppRootKey</param-name>
8
-	    <param-value>xxl-job-client-demo</param-value>
9
-	</context-param>
10
-	
11
-	<context-param>
12
-		<param-name>contextConfigLocation</param-name>
13
-		<param-value>classpath*:applicationcontext-*.xml</param-value>
14
-	</context-param>
15
-
16
-	<listener>
17
-		<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
18
-	</listener>
19
-	<listener>
20
-		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
21
-	</listener>
22
-	
23
-	<welcome-file-list>
24
-		<welcome-file>index.html</welcome-file>
25
-	</welcome-file-list>
26
-	
1
+<?xml version="1.0" encoding="UTF-8"?>
2
+<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3
+	xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee"
4
+	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
5
+	id="WebApp_ID" version="2.5">
6
+	<context-param>
7
+	    <param-name>webAppRootKey</param-name>
8
+	    <param-value>xxl-job-executor-sample-spring</param-value>
9
+	</context-param>
10
+	
11
+	<context-param>
12
+		<param-name>contextConfigLocation</param-name>
13
+		<param-value>classpath*:applicationcontext-*.xml</param-value>
14
+	</context-param>
15
+
16
+	<listener>
17
+		<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
18
+	</listener>
19
+	<listener>
20
+		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
21
+	</listener>
22
+	
23
+	<welcome-file-list>
24
+		<welcome-file>index.html</welcome-file>
25
+	</welcome-file-list>
26
+	
27 27
 </web-app>

xxl-job-executor-example/src/main/webapp/index.html → xxl-job-executor-samples/xxl-job-executor-sample-spring/src/main/webapp/index.html View File


xxl-job-executor-example/src/test/java/com/xxl/executor/test/DemoJobHandlerTest.java → xxl-job-executor-samples/xxl-job-executor-sample-spring/src/test/java/com/xxl/executor/test/DemoJobHandlerTest.java View File


xxl-job-executor-springboot-example/pom.xml → xxl-job-executor-samples/xxl-job-executor-sample-springboot/pom.xml View File

@@ -5,10 +5,10 @@
5 5
     <modelVersion>4.0.0</modelVersion>
6 6
     <parent>
7 7
         <groupId>com.xuxueli</groupId>
8
-        <artifactId>xxl-job</artifactId>
8
+        <artifactId>xxl-job-executor-samples</artifactId>
9 9
         <version>1.8.2-SNAPSHOT</version>
10 10
     </parent>
11
-    <artifactId>xxl-job-executor-springboot-example</artifactId>
11
+    <artifactId>xxl-job-executor-sample-springboot</artifactId>
12 12
     <packaging>jar</packaging>
13 13
 
14 14
     <name>${project.artifactId}</name>

xxl-job-executor-springboot-example/src/main/java/com/xxl/job/executor/Application.java → xxl-job-executor-samples/xxl-job-executor-sample-springboot/src/main/java/com/xxl/job/executor/Application.java View File


xxl-job-executor-springboot-example/src/main/java/com/xxl/job/executor/core/config/XxlJobConfig.java → xxl-job-executor-samples/xxl-job-executor-sample-springboot/src/main/java/com/xxl/job/executor/core/config/XxlJobConfig.java View File


xxl-job-executor-springboot-example/src/main/java/com/xxl/job/executor/mvc/controller/IndexController.java → xxl-job-executor-samples/xxl-job-executor-sample-springboot/src/main/java/com/xxl/job/executor/mvc/controller/IndexController.java View File


xxl-job-executor-springboot-example/src/main/java/com/xxl/job/executor/service/jobhandler/DemoJobHandler.java → xxl-job-executor-samples/xxl-job-executor-sample-springboot/src/main/java/com/xxl/job/executor/service/jobhandler/DemoJobHandler.java View File


xxl-job-executor-springboot-example/src/main/java/com/xxl/job/executor/service/jobhandler/ShardingJobHandler.java → xxl-job-executor-samples/xxl-job-executor-sample-springboot/src/main/java/com/xxl/job/executor/service/jobhandler/ShardingJobHandler.java View File


xxl-job-executor-springboot-example/src/main/resources/application.properties → xxl-job-executor-samples/xxl-job-executor-sample-springboot/src/main/resources/application.properties View File

@@ -9,7 +9,7 @@ logging.config=classpath:logback.xml
9 9
 xxl.job.admin.addresses=http://127.0.0.1:8080/xxl-job-admin
10 10
 
11 11
 ### xxl-job executor address
12
-xxl.job.executor.appname=xxl-job-executor-example
12
+xxl.job.executor.appname=xxl-job-executor-sample
13 13
 xxl.job.executor.ip=
14 14
 xxl.job.executor.port=9998
15 15
 

xxl-job-executor-springboot-example/src/main/resources/logback.xml → xxl-job-executor-samples/xxl-job-executor-sample-springboot/src/main/resources/logback.xml View File

@@ -2,7 +2,7 @@
2 2
 <configuration debug="false" scan="true" scanPeriod="1 seconds">
3 3
 
4 4
     <contextName>logback</contextName>
5
-    <property name="log.path" value="/data/applogs/xxl-job/xxl-job-executor-example.log"/>
5
+    <property name="log.path" value="/data/applogs/xxl-job/xxl-job-executor-sample-springboot.log"/>
6 6
 
7 7
     <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
8 8
        <!-- <filter class="ch.qos.logback.classic.filter.ThresholdFilter" >

xxl-job-executor-springboot-example/src/test/java/com/xxl/job/executor/test/XxlJobExecutorExampleBootApplicationTests.java → xxl-job-executor-samples/xxl-job-executor-sample-springboot/src/test/java/com/xxl/job/executor/test/XxlJobExecutorExampleBootApplicationTests.java View File