From 7eebf5520f08482863670fefd7fca6273c14c088 Mon Sep 17 00:00:00 2001 From: fyw_wu Date: Mon, 29 Aug 2022 19:17:46 +0800 Subject: [PATCH 1/6] =?UTF-8?q?=E9=80=82=E9=85=8DOracle=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/db/tables_xxl_job.oracle.sql | 196 ++++++++++++++++ pom.xml | 13 +- xxl-job-admin/pom.xml | 213 ++++++++++-------- .../src/main/resources/application.properties | 22 +- .../mybatis-mapper/XxlJobGroupMapper.xml | 44 ++-- .../mybatis-mapper/XxlJobInfoMapper.xml | 45 ++-- .../mybatis-mapper/XxlJobLogGlueMapper.xml | 33 +-- .../mybatis-mapper/XxlJobLogMapper.xml | 104 +++++---- .../mybatis-mapper/XxlJobLogReportMapper.xml | 29 ++- .../mybatis-mapper/XxlJobRegistryMapper.xml | 27 ++- .../mybatis-mapper/XxlJobUserMapper.xml | 24 +- 11 files changed, 517 insertions(+), 233 deletions(-) create mode 100644 doc/db/tables_xxl_job.oracle.sql diff --git a/doc/db/tables_xxl_job.oracle.sql b/doc/db/tables_xxl_job.oracle.sql new file mode 100644 index 00000000..6c540326 --- /dev/null +++ b/doc/db/tables_xxl_job.oracle.sql @@ -0,0 +1,196 @@ +-- oracle 11g 测试通过 +/* +-- 清理脚本 +drop table xxl_job_info; +drop table xxl_job_log; +drop table xxl_job_log_report; +drop table xxl_job_logglue; +drop table xxl_job_registry; +drop table xxl_job_group; +drop table xxl_job_user; +drop table xxl_job_lock; + +drop sequence SEQ_XXL_JOB_COMMON_ID; +drop sequence SEQ_XXL_JOB_LOG_ID; +*/ + +create sequence SEQ_XXL_JOB_COMMON_ID + minvalue 10000001 + maxvalue 2147483647 + increment by 1 + cache 20 +cycle; + +create sequence SEQ_XXL_JOB_LOG_ID + minvalue 10000001 + maxvalue 99999999999999 + increment by 1 + cache 20 +cycle; + +create table xxl_job_info ( + id number(11) not null, -- AUTO_INCREMENT + job_group number(11) not null, + job_desc varchar2(255) not null, + add_time date default null, + update_time date default null, + author varchar2(64) default null, + alarm_email varchar2(255) default null, + schedule_type varchar2(50) default 'NONE' not null, + schedule_conf varchar2(128) default null, + misfire_strategy varchar2(50) default 'DO_NOTHING' not null, + executor_route_strategy varchar2(50) default null, + executor_handler varchar2(255) default null, + executor_param varchar2(512) default null, + executor_block_strategy varchar2(50) default null, + executor_timeout number(11) default '0' not null, + executor_fail_retry_count number(11) default '0' not null, + glue_type varchar2(50) not null, + glue_source clob, + glue_remark varchar2(128) default null, + glue_updatetime date default null, + child_jobid varchar2(255) default null, + trigger_status number(4) default '0' not null, + trigger_last_time number(13) default '0' not null, + trigger_next_time number(13) default '0' not null, + primary key (id) +); +comment on column xxl_job_info.job_group is '执行器主键ID'; +comment on column xxl_job_info.author is '作者'; +comment on column xxl_job_info.alarm_email is '报警邮件'; +comment on column xxl_job_info.schedule_type is '调度类型'; +comment on column xxl_job_info.schedule_conf is '调度配置,值含义取决于调度类型'; +comment on column xxl_job_info.misfire_strategy is '调度过期策略'; +comment on column xxl_job_info.executor_route_strategy is '执行器路由策略'; +comment on column xxl_job_info.executor_handler is '执行器任务handler'; +comment on column xxl_job_info.executor_param is '执行器任务参数'; +comment on column xxl_job_info.executor_block_strategy is '阻塞处理策略'; +comment on column xxl_job_info.executor_timeout is '任务执行超时时间,单位秒'; +comment on column xxl_job_info.executor_fail_retry_count is '失败重试次数'; +comment on column xxl_job_info.glue_type is 'GLUE类型'; +comment on column xxl_job_info.glue_source is 'GLUE源代码'; +comment on column xxl_job_info.glue_remark is 'GLUE备注'; +comment on column xxl_job_info.glue_updatetime is 'GLUE更新时间'; +comment on column xxl_job_info.child_jobid is '子任务ID,多个逗号分隔'; +comment on column xxl_job_info.trigger_status is '调度状态:0-停止,1-运行'; +comment on column xxl_job_info.trigger_last_time is '上次调度时间'; +comment on column xxl_job_info.trigger_next_time is '下次调度时间'; + + +create table xxl_job_log ( + id number(20) not null, -- AUTO_INCREMENT + job_group number(11) not null , + job_id number(11) not null , + executor_address varchar2(255) default null , + executor_handler varchar2(255) default null , + executor_param varchar2(512) default null , + executor_sharding_param varchar2(20) default null , + executor_fail_retry_count number(11) default '0' not null, + trigger_time date default null , + trigger_code number(11) not null, + trigger_msg clob , + handle_time date default null , + handle_code number(11) not null, + handle_msg clob , + alarm_status number(4) default '0' not null, + primary key (id) +); +create index i_trigger_time on xxl_job_log (trigger_time); +create index i_handle_code on xxl_job_log (handle_code); +comment on column xxl_job_log.job_group is '执行器主键ID'; +comment on column xxl_job_log.job_id is '任务,主键ID'; +comment on column xxl_job_log.executor_address is '执行器地址,本次执行的地址'; +comment on column xxl_job_log.executor_handler is '执行器任务handler'; +comment on column xxl_job_log.executor_param is '执行器任务参数'; +comment on column xxl_job_log.executor_sharding_param is '执行器任务分片参数,格式如 1/2'; +comment on column xxl_job_log.executor_fail_retry_count is '失败重试次数'; +comment on column xxl_job_log.trigger_time is '调度-时间'; +comment on column xxl_job_log.trigger_code is '调度-结果'; +comment on column xxl_job_log.trigger_msg is '调度-日志'; +comment on column xxl_job_log.handle_time is '执行-时间'; +comment on column xxl_job_log.handle_code is '执行-状态'; +comment on column xxl_job_log.handle_msg is '执行-日志'; +comment on column xxl_job_log.alarm_status is '告警状态:0-默认、1-无需告警、2-告警成功、3-告警失败'; + +create table xxl_job_log_report ( + id number(11) not null, -- AUTO_INCREMENT + trigger_day date default null, + running_count number(11) default '0' not null, + suc_count number(11) default '0' not null, + fail_count number(11) default '0' not null, + update_time date default null, + primary key (id) +); +create unique index i_trigger_day on xxl_job_log_report (trigger_day); +comment on column xxl_job_log_report.trigger_day is '调度-时间' ; +comment on column xxl_job_log_report.running_count is '运行中-日志数量' ; +comment on column xxl_job_log_report.suc_count is '执行成功-日志数量' ; +comment on column xxl_job_log_report.fail_count is '执行失败-日志数量' ; + +create table xxl_job_logglue ( + id number(11) not null, -- AUTO_INCREMENT + job_id number(11) not null, + glue_type varchar2(50) default null, + glue_source clob, + glue_remark varchar2(128) not null, + add_time date default null, + update_time date default null, + primary key (id) +); +comment on column xxl_job_logglue.job_id is '任务,主键ID'; +comment on column xxl_job_logglue.glue_type is 'GLUE类型'; +comment on column xxl_job_logglue.glue_source is 'GLUE源代码'; +comment on column xxl_job_logglue.glue_remark is 'GLUE备注'; + +create table xxl_job_registry ( + id number(11) not null, -- AUTO_INCREMENT + registry_group varchar2(50) not null, + registry_key varchar2(255) not null, + registry_value varchar2(255) not null, + update_time date default null, + primary key (id) +); +create index i_g_k_v on xxl_job_registry(registry_group, registry_key, registry_value); + +create table xxl_job_group ( + id number(11) not null, -- AUTO_INCREMENT + app_name varchar2(64) not null, + title varchar2(12) not null, + address_type number(4) default '0' not null, + address_list clob, + update_time date default null, + primary key (id) +); +comment on column xxl_job_group.app_name is '执行器AppName'; +comment on column xxl_job_group.title is '执行器名称'; +comment on column xxl_job_group.address_type is '执行器地址类型:0=自动注册、1=手动录入'; +comment on column xxl_job_group.address_list is '执行器地址列表,多地址逗号分隔'; + +create table xxl_job_user ( + id number(11) not null, -- AUTO_INCREMENT + username varchar2(50) not null, + password varchar2(50) not null, + role number(4) not null, + permission varchar2(255) default null, + primary key (id) +); +create unique index i_username on xxl_job_user(username); +comment on column xxl_job_user.username is '账号'; +comment on column xxl_job_user.password is '密码'; +comment on column xxl_job_user.role is '角色:0-普通用户、1-管理员'; +comment on column xxl_job_user.permission is '权限:执行器ID列表,多个逗号分割'; + +create table xxl_job_lock ( + lock_name varchar2(50) not null, + primary key (lock_name) +); +comment on column xxl_job_lock.lock_name is '锁名称'; + + +-- 初始化数据 +insert into xxl_job_group(id, app_name, title, address_type, address_list, update_time) values (1, 'xxl-job-executor-sample', '示例执行器', 0, NULL, to_date('2018-11-03 22:21:31', 'yyyy-mm-dd hh24:mi:ss') ); +insert into xxl_job_info(id, job_group, job_desc, add_time, update_time, author, alarm_email, schedule_type, schedule_conf, misfire_strategy, executor_route_strategy, executor_handler, executor_param, executor_block_strategy, executor_timeout, executor_fail_retry_count, glue_type, glue_source, glue_remark, glue_updatetime, child_jobid) values (1, 1, '测试任务1', to_date('2018-11-03 22:21:31', 'yyyy-mm-dd hh24:mi:ss'), to_date('2018-11-03 22:21:31', 'yyyy-mm-dd hh24:mi:ss'), 'XXL', '', 'CRON', '0 0 0 * * ? *', 'DO_NOTHING', 'FIRST', 'demoJobHandler', '', 'SERIAL_EXECUTION', 0, 0, 'BEAN', '', 'GLUE代码初始化', to_date('2018-11-03 22:21:31', 'yyyy-mm-dd hh24:mi:ss'), ''); +insert into xxl_job_user(id, username, password, role, permission) values (1, 'admin', 'e10adc3949ba59abbe56e057f20f883e', 1, NULL); +insert into xxl_job_lock ( lock_name) values ( 'schedule_lock'); + +commit; diff --git a/pom.xml b/pom.xml index 4b068b16..9593c49c 100644 --- a/pom.xml +++ b/pom.xml @@ -42,6 +42,8 @@ 3.2.1 3.4.0 3.0.1 + + 19.3.0.0 @@ -128,17 +130,6 @@ - - - oss - https://oss.sonatype.org/content/repositories/snapshots/ - - - oss - https://oss.sonatype.org/service/local/staging/deploy/maven2/ - - - \ No newline at end of file diff --git a/xxl-job-admin/pom.xml b/xxl-job-admin/pom.xml index b10941f6..a0e79b7f 100644 --- a/xxl-job-admin/pom.xml +++ b/xxl-job-admin/pom.xml @@ -1,113 +1,126 @@ - 4.0.0 - - com.xuxueli - xxl-job - 2.3.1 - - xxl-job-admin - jar + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + 4.0.0 + + com.xuxueli + xxl-job + 2.3.1 + + xxl-job-admin + jar - - - - org.springframework.boot - spring-boot-starter-parent - ${spring-boot.version} - pom - import - - - + + + + org.springframework.boot + spring-boot-starter-parent + ${spring-boot.version} + pom + import + + + - + - - - org.springframework.boot - spring-boot-starter-web - - - - org.springframework.boot - spring-boot-starter-test - test - + + + org.springframework.boot + spring-boot-starter-web + + + + org.springframework.boot + spring-boot-starter-test + test + - - - org.springframework.boot - spring-boot-starter-freemarker - + + + org.springframework.boot + spring-boot-starter-freemarker + - - - org.springframework.boot - spring-boot-starter-mail - + + + org.springframework.boot + spring-boot-starter-mail + - - - org.springframework.boot - spring-boot-starter-actuator - + + + org.springframework.boot + spring-boot-starter-actuator + - - - org.mybatis.spring.boot - mybatis-spring-boot-starter - ${mybatis-spring-boot-starter.version} - - - - mysql - mysql-connector-java - ${mysql-connector-java.version} - + + + org.mybatis.spring.boot + mybatis-spring-boot-starter + ${mybatis-spring-boot-starter.version} + + + + + + com.oracle.ojdbc + ojdbc8 + ${jdbc.oracle.version} + + + com.oracle.ojdbc + orai18n + ${jdbc.oracle.version} + - - - com.xuxueli - xxl-job-core - ${project.parent.version} - + + + com.xuxueli + xxl-job-core + ${project.parent.version} + - + - - - - org.springframework.boot - spring-boot-maven-plugin - ${spring-boot.version} - - - - repackage - - - - - - - com.spotify - docker-maven-plugin - 0.4.13 - - - ${project.artifactId}:${project.version} - ${project.basedir} - - - / - ${project.build.directory} - ${project.build.finalName}.jar - - - - - - + + + + org.springframework.boot + spring-boot-maven-plugin + ${spring-boot.version} + + + + repackage + + + + + + + com.spotify + docker-maven-plugin + 0.4.13 + + + ${project.artifactId}:${project.version} + ${project.basedir} + + + / + ${project.build.directory} + ${project.build.finalName}.jar + + + + + + diff --git a/xxl-job-admin/src/main/resources/application.properties b/xxl-job-admin/src/main/resources/application.properties index 8727b6c7..2e3298a6 100644 --- a/xxl-job-admin/src/main/resources/application.properties +++ b/xxl-job-admin/src/main/resources/application.properties @@ -18,15 +18,22 @@ spring.freemarker.charset=UTF-8 spring.freemarker.request-context-attribute=request spring.freemarker.settings.number_format=0.########## -### mybatis +### mybatis oracle mybatis.mapper-locations=classpath:/mybatis-mapper/*Mapper.xml #mybatis.type-aliases-package=com.xxl.job.admin.core.model +mybatis.configuration.jdbc-type-for-null=null -### xxl-job, datasource -spring.datasource.url=jdbc:mysql://127.0.0.1:3306/xxl_job?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai +### xxl-job, datasource mysql +#spring.datasource.url=jdbc:mysql://127.0.0.1:3306/xxl_job?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai +#spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver +#spring.datasource.username=dms2 +#spring.datasource.password=qw1112 + +### xxl-job, datasource oracle +spring.datasource.url=jdbc:oracle:thin:@//192.168.11.40:1521/crms +spring.datasource.driver-class-name=oracle.jdbc.OracleDriver spring.datasource.username=root -spring.datasource.password=root_pwd -spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver +spring.datasource.password=123456 ### datasource-pool spring.datasource.type=com.zaxxer.hikari.HikariDataSource @@ -37,7 +44,10 @@ spring.datasource.hikari.idle-timeout=30000 spring.datasource.hikari.pool-name=HikariCP spring.datasource.hikari.max-lifetime=900000 spring.datasource.hikari.connection-timeout=10000 -spring.datasource.hikari.connection-test-query=SELECT 1 +# MYSQL +#spring.datasource.hikari.connection-test-query=SELECT 1 FROM DUAL +# ORACLE +spring.datasource.hikari.connection-test-query=SELECT 1 FROM DUAL spring.datasource.hikari.validation-timeout=1000 ### xxl-job, email diff --git a/xxl-job-admin/src/main/resources/mybatis-mapper/XxlJobGroupMapper.xml b/xxl-job-admin/src/main/resources/mybatis-mapper/XxlJobGroupMapper.xml index 87299f88..7b3b0899 100644 --- a/xxl-job-admin/src/main/resources/mybatis-mapper/XxlJobGroupMapper.xml +++ b/xxl-job-admin/src/main/resources/mybatis-mapper/XxlJobGroupMapper.xml @@ -1,14 +1,14 @@ - - + - + @@ -23,29 +23,32 @@ - - INSERT INTO xxl_job_group ( `app_name`, `title`, `address_type`, `address_list`, `update_time`) - values ( #{appname}, #{title}, #{addressType}, #{addressList}, #{updateTime} ); + + + select SEQ_XXL_JOB_LOG_ID.NEXTVAL id from dual + + INSERT INTO xxl_job_group (id, app_name, title, address_type, address_list, update_time) + values (#{id}, #{appname}, #{title}, #{addressType}, #{addressList, jdbcType=CLOB, javaType=java.lang.String}, #{updateTime} ) UPDATE xxl_job_group - SET `app_name` = #{appname}, - `title` = #{title}, - `address_type` = #{addressType}, - `address_list` = #{addressList}, - `update_time` = #{updateTime} + SET app_name = #{appname}, + title = #{title}, + address_type = #{addressType}, + address_list = #{addressList, jdbcType=CLOB, javaType=java.lang.String}, + update_time = #{updateTime} WHERE id = #{id} @@ -56,13 +59,17 @@ + select * from ( + select * from ( + select A.*, rownum rn from ( + SELECT - FROM xxl_job_info AS t + FROM xxl_job_info t AND t.job_group = #{jobGroup} @@ -86,12 +90,15 @@ ORDER BY id DESC - LIMIT #{offset}, #{pagesize} + + ) A + ) where rn ]]> #{offset} + ) where rn #{offset} + #{pagesize} - + + + select SEQ_XXL_JOB_COMMON_ID.NEXTVAL id from dual + INSERT INTO xxl_job_info ( + id, job_group, job_desc, add_time, @@ -137,7 +148,8 @@ trigger_last_time, trigger_next_time ) VALUES ( - #{jobGroup}, + #{id}, + #{jobGroup}, #{jobDesc}, #{addTime}, #{updateTime}, @@ -153,23 +165,23 @@ #{executorTimeout}, #{executorFailRetryCount}, #{glueType}, - #{glueSource}, + #{glueSource, jdbcType=CLOB, javaType=java.lang.String}, #{glueRemark}, #{glueUpdatetime}, #{childJobId}, #{triggerStatus}, #{triggerLastTime}, #{triggerNextTime} - ); + ) @@ -191,7 +203,7 @@ executor_timeout = ${executorTimeout}, executor_fail_retry_count = ${executorFailRetryCount}, glue_type = #{glueType}, - glue_source = #{glueSource}, + glue_source = #{glueSource, jdbcType=CLOB, javaType=java.lang.String}, glue_remark = #{glueRemark}, glue_updatetime = #{glueUpdatetime}, child_jobid = #{childJobId}, @@ -209,7 +221,7 @@ @@ -220,12 +232,17 @@ diff --git a/xxl-job-admin/src/main/resources/mybatis-mapper/XxlJobLogGlueMapper.xml b/xxl-job-admin/src/main/resources/mybatis-mapper/XxlJobLogGlueMapper.xml index 2dd1a96a..0f20e744 100644 --- a/xxl-job-admin/src/main/resources/mybatis-mapper/XxlJobLogGlueMapper.xml +++ b/xxl-job-admin/src/main/resources/mybatis-mapper/XxlJobLogGlueMapper.xml @@ -7,7 +7,7 @@ - + @@ -23,22 +23,27 @@ t.update_time - + + + select SEQ_XXL_JOB_LOG_ID.NEXTVAL id from dual + INSERT INTO xxl_job_logglue ( - `job_id`, - `glue_type`, - `glue_source`, - `glue_remark`, - `add_time`, - `update_time` + id, + job_id, + glue_type, + glue_source, + glue_remark, + add_time, + update_time ) VALUES ( + #{id}, #{jobId}, #{glueType}, - #{glueSource}, + #{glueSource, jdbcType=CLOB, javaType=java.lang.String}, #{glueRemark}, #{addTime}, #{updateTime} - ); + ) @@ -46,7 +51,7 @@ @@ -56,16 +61,16 @@ WHERE id NOT in( SELECT id FROM( SELECT id FROM xxl_job_logglue - WHERE `job_id` = #{jobId} + WHERE job_id = #{jobId} ORDER BY update_time desc LIMIT 0, #{limit} ) t1 - ) AND `job_id` = #{jobId} + ) AND job_id = #{jobId} DELETE FROM xxl_job_logglue - WHERE `job_id` = #{jobId} + WHERE job_id = #{jobId} \ No newline at end of file diff --git a/xxl-job-admin/src/main/resources/mybatis-mapper/XxlJobLogMapper.xml b/xxl-job-admin/src/main/resources/mybatis-mapper/XxlJobLogMapper.xml index 4155f179..d141f7ce 100644 --- a/xxl-job-admin/src/main/resources/mybatis-mapper/XxlJobLogMapper.xml +++ b/xxl-job-admin/src/main/resources/mybatis-mapper/XxlJobLogMapper.xml @@ -17,11 +17,11 @@ - + - + @@ -45,8 +45,12 @@ SELECT - FROM xxl_job_log AS t + FROM xxl_job_log t WHERE t.id = #{id} - + + + select SEQ_XXL_JOB_LOG_ID.NEXTVAL id from dual + INSERT INTO xxl_job_log ( - `job_group`, - `job_id`, - `trigger_time`, - `trigger_code`, - `handle_code` + id, + job_group, + job_id, + trigger_time, + trigger_code, + handle_code ) VALUES ( + #{id}, #{jobGroup}, #{jobId}, #{triggerTime}, #{triggerCode}, #{handleCode} - ); + ) @@ -139,24 +151,24 @@ UPDATE xxl_job_log SET - `trigger_time`= #{triggerTime}, - `trigger_code`= #{triggerCode}, - `trigger_msg`= #{triggerMsg}, - `executor_address`= #{executorAddress}, - `executor_handler`=#{executorHandler}, - `executor_param`= #{executorParam}, - `executor_sharding_param`= #{executorShardingParam}, - `executor_fail_retry_count`= #{executorFailRetryCount} - WHERE `id`= #{id} + trigger_time= #{triggerTime}, + trigger_code= #{triggerCode}, + trigger_msg= #{triggerMsg, jdbcType=CLOB, javaType=java.lang.String}, + executor_address= #{executorAddress}, + executor_handler=#{executorHandler}, + executor_param= #{executorParam}, + executor_sharding_param= #{executorShardingParam}, + executor_fail_retry_count= #{executorFailRetryCount} + WHERE id= #{id} UPDATE xxl_job_log SET - `handle_time`= #{handleTime}, - `handle_code`= #{handleCode}, - `handle_msg`= #{handleMsg} - WHERE `id`= #{id} + handle_time= #{handleTime}, + handle_code= #{handleCode}, + handle_msg= #{handleMsg, jdbcType=CLOB, javaType=java.lang.String} + WHERE id= #{id} @@ -168,8 +180,8 @@ SELECT DATE_FORMAT(trigger_time,'%Y-%m-%d') triggerDay, COUNT(handle_code) triggerDayCount, - SUM(CASE WHEN (trigger_code in (0, 200) and handle_code = 0) then 1 else 0 end) as triggerDayCountRunning, - SUM(CASE WHEN handle_code = 200 then 1 else 0 end) as triggerDayCountSuc + SUM(CASE WHEN (trigger_code in (0, 200) and handle_code = 0) then 1 else 0 end) triggerDayCountRunning, + SUM(CASE WHEN handle_code = 200 then 1 else 0 end) triggerDayCountSuc FROM xxl_job_log WHERE trigger_time BETWEEN #{from} and #{to} GROUP BY triggerDay @@ -179,13 +191,16 @@ @@ -228,22 +245,27 @@ UPDATE xxl_job_log SET - `alarm_status` = #{newAlarmStatus} - WHERE `id`= #{logId} AND `alarm_status` = #{oldAlarmStatus} + alarm_status = #{newAlarmStatus} + WHERE id= #{logId} AND alarm_status = #{oldAlarmStatus} diff --git a/xxl-job-admin/src/main/resources/mybatis-mapper/XxlJobLogReportMapper.xml b/xxl-job-admin/src/main/resources/mybatis-mapper/XxlJobLogReportMapper.xml index 579d5f39..b042918b 100644 --- a/xxl-job-admin/src/main/resources/mybatis-mapper/XxlJobLogReportMapper.xml +++ b/xxl-job-admin/src/main/resources/mybatis-mapper/XxlJobLogReportMapper.xml @@ -19,18 +19,23 @@ t.fail_count - + + + select SEQ_XXL_JOB_LOG_ID.NEXTVAL id from dual + INSERT INTO xxl_job_log_report ( - `trigger_day`, - `running_count`, - `suc_count`, - `fail_count` + id, + trigger_day, + running_count, + suc_count, + fail_count ) VALUES ( + #{id}, #{triggerDay}, #{runningCount}, #{sucCount}, #{failCount} - ); + ) @@ -38,15 +43,15 @@ UPDATE xxl_job_log_report - SET `running_count` = #{runningCount}, - `suc_count` = #{sucCount}, - `fail_count` = #{failCount} - WHERE `trigger_day` = #{triggerDay} + SET running_count = #{runningCount}, + suc_count = #{sucCount}, + fail_count = #{failCount} + WHERE trigger_day = #{triggerDay} @@ -56,7 +61,7 @@ SUM(running_count) running_count, SUM(suc_count) suc_count, SUM(fail_count) fail_count - FROM xxl_job_log_report AS t + FROM xxl_job_log_report t \ No newline at end of file diff --git a/xxl-job-admin/src/main/resources/mybatis-mapper/XxlJobRegistryMapper.xml b/xxl-job-admin/src/main/resources/mybatis-mapper/XxlJobRegistryMapper.xml index 4cae667a..60c95c89 100644 --- a/xxl-job-admin/src/main/resources/mybatis-mapper/XxlJobRegistryMapper.xml +++ b/xxl-job-admin/src/main/resources/mybatis-mapper/XxlJobRegistryMapper.xml @@ -21,8 +21,8 @@ @@ -35,21 +35,24 @@ - + UPDATE xxl_job_registry - SET `update_time` = #{updateTime} - WHERE `registry_group` = #{registryGroup} - AND `registry_key` = #{registryKey} - AND `registry_value` = #{registryValue} + SET update_time = #{updateTime} + WHERE registry_group = #{registryGroup} + AND registry_key = #{registryKey} + AND registry_value = #{registryValue} - - INSERT INTO xxl_job_registry( `registry_group` , `registry_key` , `registry_value`, `update_time`) - VALUES( #{registryGroup} , #{registryKey} , #{registryValue}, #{updateTime}) + + + select SEQ_XXL_JOB_LOG_ID.NEXTVAL id from dual + + INSERT INTO xxl_job_registry(id, registry_group , registry_key , registry_value, update_time) + VALUES(#{id}, #{registryGroup} , #{registryKey} , #{registryValue}, #{updateTime}) diff --git a/xxl-job-admin/src/main/resources/mybatis-mapper/XxlJobUserMapper.xml b/xxl-job-admin/src/main/resources/mybatis-mapper/XxlJobUserMapper.xml index 9e09b4aa..f82c152a 100644 --- a/xxl-job-admin/src/main/resources/mybatis-mapper/XxlJobUserMapper.xml +++ b/xxl-job-admin/src/main/resources/mybatis-mapper/XxlJobUserMapper.xml @@ -20,8 +20,12 @@ SELECT - FROM xxl_job_user AS t + FROM xxl_job_user t WHERE t.username = #{username} - + + + select SEQ_XXL_JOB_LOG_ID.NEXTVAL id from dual + INSERT INTO xxl_job_user ( + id, username, password, role, permission ) VALUES ( + #{id}, #{username}, #{password}, #{role}, #{permission} - ); + ) From ccbfe0c273efb238138e47b48c45fafd4437ed66 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B8=85=E6=B2=B3=E6=9C=A8=E5=AD=90?= Date: Mon, 29 Aug 2022 11:30:57 +0000 Subject: [PATCH 2/6] update pom.xml. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 清河木子 --- pom.xml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/pom.xml b/pom.xml index 9593c49c..960e29d4 100644 --- a/pom.xml +++ b/pom.xml @@ -130,6 +130,16 @@ + + + oss + https://oss.sonatype.org/content/repositories/snapshots/ + + + oss + https://oss.sonatype.org/service/local/staging/deploy/maven2/ + + \ No newline at end of file From 1705585bcc475459a5fb798ab3a5a56a317154cf Mon Sep 17 00:00:00 2001 From: fyw_wu Date: Wed, 31 Aug 2022 10:10:11 +0800 Subject: [PATCH 3/6] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=A4=A7=E5=B0=8F?= =?UTF-8?q?=E5=86=99=E6=95=8F=E6=84=9F=E9=97=AE=E9=A2=98=E5=AF=BC=E8=87=B4?= =?UTF-8?q?=E7=94=9F=E6=88=90=E6=8A=A5=E8=A1=A8=E6=95=B0=E6=8D=AE=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/core/thread/JobLogReportHelper.java | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/xxl-job-admin/src/main/java/com/xxl/job/admin/core/thread/JobLogReportHelper.java b/xxl-job-admin/src/main/java/com/xxl/job/admin/core/thread/JobLogReportHelper.java index 2387a0c4..712e9c60 100644 --- a/xxl-job-admin/src/main/java/com/xxl/job/admin/core/thread/JobLogReportHelper.java +++ b/xxl-job-admin/src/main/java/com/xxl/job/admin/core/thread/JobLogReportHelper.java @@ -5,10 +5,7 @@ import com.xxl.job.admin.core.model.XxlJobLogReport; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.util.Calendar; -import java.util.Date; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.concurrent.TimeUnit; /** @@ -68,11 +65,16 @@ public class JobLogReportHelper { xxlJobLogReport.setSucCount(0); xxlJobLogReport.setFailCount(0); + // triggerCountMap Map triggerCountMap = XxlJobAdminConfig.getAdminConfig().getXxlJobLogDao().findLogReport(todayFrom, todayTo); - if (triggerCountMap!=null && triggerCountMap.size()>0) { - int triggerDayCount = triggerCountMap.containsKey("triggerDayCount")?Integer.valueOf(String.valueOf(triggerCountMap.get("triggerDayCount"))):0; - int triggerDayCountRunning = triggerCountMap.containsKey("triggerDayCountRunning")?Integer.valueOf(String.valueOf(triggerCountMap.get("triggerDayCountRunning"))):0; - int triggerDayCountSuc = triggerCountMap.containsKey("triggerDayCountSuc")?Integer.valueOf(String.valueOf(triggerCountMap.get("triggerDayCountSuc"))):0; + // Ignore the case of 'key' + TreeMap ignoreKeyCaseMap = new TreeMap<>(String.CASE_INSENSITIVE_ORDER); + ignoreKeyCaseMap.putAll(triggerCountMap); + + if (ignoreKeyCaseMap.size() > 0) { + int triggerDayCount = ignoreKeyCaseMap.containsKey("triggerDayCount") ? Integer.parseInt(String.valueOf(ignoreKeyCaseMap.get("triggerDayCount"))) : 0; + int triggerDayCountRunning = ignoreKeyCaseMap.containsKey("triggerDayCountRunning") ? Integer.parseInt(String.valueOf(ignoreKeyCaseMap.get("triggerDayCountRunning"))) : 0; + int triggerDayCountSuc = ignoreKeyCaseMap.containsKey("triggerDayCountSuc") ? Integer.parseInt(String.valueOf(ignoreKeyCaseMap.get("triggerDayCountSuc"))) : 0; int triggerDayCountFail = triggerDayCount - triggerDayCountRunning - triggerDayCountSuc; xxlJobLogReport.setRunningCount(triggerDayCountRunning); From 19758db97c948138fba1dd0cee423867b1885e41 Mon Sep 17 00:00:00 2001 From: fyw_wu Date: Wed, 31 Aug 2022 11:20:55 +0800 Subject: [PATCH 4/6] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=B8=BAoracle=E7=89=88s?= =?UTF-8?q?ql?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/resources/mybatis-mapper/XxlJobLogMapper.xml | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/xxl-job-admin/src/main/resources/mybatis-mapper/XxlJobLogMapper.xml b/xxl-job-admin/src/main/resources/mybatis-mapper/XxlJobLogMapper.xml index d141f7ce..4cd4950b 100644 --- a/xxl-job-admin/src/main/resources/mybatis-mapper/XxlJobLogMapper.xml +++ b/xxl-job-admin/src/main/resources/mybatis-mapper/XxlJobLogMapper.xml @@ -215,8 +215,8 @@ AND id NOT in( SELECT id FROM( - SELECT id FROM xxl_job_log t - + SELECT id, rownum rn FROM xxl_job_log t + AND t.job_group = #{jobGroup} @@ -225,8 +225,7 @@ ORDER BY t.trigger_time desc - LIMIT 0, #{clearBeforeNum} - ) t1 + ) where rn #{limit} ) From 05a5ab149b2eee5e2d8c667a3d5833ea84a24895 Mon Sep 17 00:00:00 2001 From: fyw_wu Date: Wed, 31 Aug 2022 11:23:51 +0800 Subject: [PATCH 5/6] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=B8=BAoracle=E7=89=88s?= =?UTF-8?q?ql?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/resources/mybatis-mapper/XxlJobLogGlueMapper.xml | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/xxl-job-admin/src/main/resources/mybatis-mapper/XxlJobLogGlueMapper.xml b/xxl-job-admin/src/main/resources/mybatis-mapper/XxlJobLogGlueMapper.xml index 0f20e744..54acf894 100644 --- a/xxl-job-admin/src/main/resources/mybatis-mapper/XxlJobLogGlueMapper.xml +++ b/xxl-job-admin/src/main/resources/mybatis-mapper/XxlJobLogGlueMapper.xml @@ -59,12 +59,11 @@ DELETE FROM xxl_job_logglue WHERE id NOT in( - SELECT id FROM( - SELECT id FROM xxl_job_logglue + SELECT id FROM ( + SELECT id, rownum rn FROM xxl_job_logglue WHERE job_id = #{jobId} ORDER BY update_time desc - LIMIT 0, #{limit} - ) t1 + ) where rn #{limit} ) AND job_id = #{jobId} From 60d930dcd504175ff75059ea6dd6a009f4ffb721 Mon Sep 17 00:00:00 2001 From: fyw_wu Date: Fri, 9 Sep 2022 14:28:25 +0800 Subject: [PATCH 6/6] =?UTF-8?q?oracle=E7=89=88=E6=9C=AC=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 40 +++++---- .../xxl/job/admin/XxlJobAdminApplication.java | 2 +- .../config/executor/XxlJobExecutorConfig.java | 78 +++++++++++++++++ .../interceptor/PermissionInterceptor.java | 6 +- .../src/main/resources/application.properties | 75 ---------------- .../src/main/resources/application.yml | 85 +++++++++++++++++++ .../{logback.xml => logback-spring.xml} | 4 +- 7 files changed, 190 insertions(+), 100 deletions(-) create mode 100644 xxl-job-admin/src/main/java/com/xxl/job/admin/config/executor/XxlJobExecutorConfig.java delete mode 100644 xxl-job-admin/src/main/resources/application.properties create mode 100644 xxl-job-admin/src/main/resources/application.yml rename xxl-job-admin/src/main/resources/{logback.xml => logback-spring.xml} (81%) diff --git a/pom.xml b/pom.xml index 960e29d4..acb61f8e 100644 --- a/pom.xml +++ b/pom.xml @@ -46,12 +46,6 @@ 19.3.0.0 - - - - - - GNU General Public License version 3 @@ -74,26 +68,30 @@ - + + + + + org.apache.maven.plugins + maven-source-plugin + ${maven-source-plugin.version} + + + package + + jar-no-fork + + + + + + + release - - - org.apache.maven.plugins - maven-source-plugin - ${maven-source-plugin.version} - - - package - - jar-no-fork - - - - org.apache.maven.plugins diff --git a/xxl-job-admin/src/main/java/com/xxl/job/admin/XxlJobAdminApplication.java b/xxl-job-admin/src/main/java/com/xxl/job/admin/XxlJobAdminApplication.java index fce10a81..179fb134 100644 --- a/xxl-job-admin/src/main/java/com/xxl/job/admin/XxlJobAdminApplication.java +++ b/xxl-job-admin/src/main/java/com/xxl/job/admin/XxlJobAdminApplication.java @@ -6,7 +6,7 @@ import org.springframework.boot.autoconfigure.SpringBootApplication; /** * @author xuxueli 2018-10-28 00:38:13 */ -@SpringBootApplication +@SpringBootApplication(scanBasePackages = {"com.xxl.job.admin", "com.desuo"}) public class XxlJobAdminApplication { public static void main(String[] args) { diff --git a/xxl-job-admin/src/main/java/com/xxl/job/admin/config/executor/XxlJobExecutorConfig.java b/xxl-job-admin/src/main/java/com/xxl/job/admin/config/executor/XxlJobExecutorConfig.java new file mode 100644 index 00000000..67306dc1 --- /dev/null +++ b/xxl-job-admin/src/main/java/com/xxl/job/admin/config/executor/XxlJobExecutorConfig.java @@ -0,0 +1,78 @@ +package com.xxl.job.admin.config.executor; + +import com.xxl.job.core.executor.impl.XxlJobSpringExecutor; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +/** + * xxl-job config + * + * @author xuxueli 2017-04-28 + */ +@Configuration +public class XxlJobExecutorConfig { + private Logger logger = LoggerFactory.getLogger(XxlJobExecutorConfig.class); + + @Value("${xxl.job.admin.addresses}") + private String adminAddresses; + + @Value("${xxl.job.accessToken}") + private String accessToken; + + @Value("${xxl.job.executor.appname}") + private String appname; + + @Value("${xxl.job.executor.address}") + private String address; + + @Value("${xxl.job.executor.ip}") + private String ip; + + @Value("${xxl.job.executor.port}") + private int port; + + @Value("${xxl.job.executor.logpath}") + private String logPath; + + @Value("${xxl.job.executor.logretentiondays}") + private int logRetentionDays; + + + @Bean + public XxlJobSpringExecutor xxlJobExecutor() { + logger.info(">>>>>>>>>>> xxl-job config init."); + XxlJobSpringExecutor xxlJobSpringExecutor = new XxlJobSpringExecutor(); + xxlJobSpringExecutor.setAdminAddresses(adminAddresses); + xxlJobSpringExecutor.setAppname(appname); + xxlJobSpringExecutor.setAddress(address); + xxlJobSpringExecutor.setIp(ip); + xxlJobSpringExecutor.setPort(port); + xxlJobSpringExecutor.setAccessToken(accessToken); + xxlJobSpringExecutor.setLogPath(logPath); + xxlJobSpringExecutor.setLogRetentionDays(logRetentionDays); + + return xxlJobSpringExecutor; + } + + /** + * 针对多网卡、容器内部署等情况,可借助 "spring-cloud-commons" 提供的 "InetUtils" 组件灵活定制注册IP; + * + * 1、引入依赖: + * + * org.springframework.cloud + * spring-cloud-commons + * ${version} + * + * + * 2、配置文件,或者容器启动变量 + * spring.cloud.inetutils.preferred-networks: 'xxx.xxx.xxx.' + * + * 3、获取IP + * String ip_ = inetUtils.findFirstNonLoopbackHostInfo().getIpAddress(); + */ + + +} \ No newline at end of file diff --git a/xxl-job-admin/src/main/java/com/xxl/job/admin/controller/interceptor/PermissionInterceptor.java b/xxl-job-admin/src/main/java/com/xxl/job/admin/controller/interceptor/PermissionInterceptor.java index ecb28114..29b36fbf 100644 --- a/xxl-job-admin/src/main/java/com/xxl/job/admin/controller/interceptor/PermissionInterceptor.java +++ b/xxl-job-admin/src/main/java/com/xxl/job/admin/controller/interceptor/PermissionInterceptor.java @@ -4,6 +4,7 @@ import com.xxl.job.admin.controller.annotation.PermissionLimit; import com.xxl.job.admin.core.model.XxlJobUser; import com.xxl.job.admin.core.util.I18nUtil; import com.xxl.job.admin.service.LoginService; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; import org.springframework.web.method.HandlerMethod; import org.springframework.web.servlet.AsyncHandlerInterceptor; @@ -20,13 +21,16 @@ import javax.servlet.http.HttpServletResponse; @Component public class PermissionInterceptor implements AsyncHandlerInterceptor { + @Value("${xxl.job.admin.permissionEnable:true}") + private boolean permissionEnable; + @Resource private LoginService loginService; @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { - if (!(handler instanceof HandlerMethod)) { + if (!permissionEnable || !(handler instanceof HandlerMethod)) { return true; // proceed with the next interceptor } diff --git a/xxl-job-admin/src/main/resources/application.properties b/xxl-job-admin/src/main/resources/application.properties deleted file mode 100644 index 2e3298a6..00000000 --- a/xxl-job-admin/src/main/resources/application.properties +++ /dev/null @@ -1,75 +0,0 @@ -### web -server.port=8080 -server.servlet.context-path=/xxl-job-admin - -### actuator -management.server.servlet.context-path=/actuator -management.health.mail.enabled=false - -### resources -spring.mvc.servlet.load-on-startup=0 -spring.mvc.static-path-pattern=/static/** -spring.resources.static-locations=classpath:/static/ - -### freemarker -spring.freemarker.templateLoaderPath=classpath:/templates/ -spring.freemarker.suffix=.ftl -spring.freemarker.charset=UTF-8 -spring.freemarker.request-context-attribute=request -spring.freemarker.settings.number_format=0.########## - -### mybatis oracle -mybatis.mapper-locations=classpath:/mybatis-mapper/*Mapper.xml -#mybatis.type-aliases-package=com.xxl.job.admin.core.model -mybatis.configuration.jdbc-type-for-null=null - -### xxl-job, datasource mysql -#spring.datasource.url=jdbc:mysql://127.0.0.1:3306/xxl_job?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai -#spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver -#spring.datasource.username=dms2 -#spring.datasource.password=qw1112 - -### xxl-job, datasource oracle -spring.datasource.url=jdbc:oracle:thin:@//192.168.11.40:1521/crms -spring.datasource.driver-class-name=oracle.jdbc.OracleDriver -spring.datasource.username=root -spring.datasource.password=123456 - -### datasource-pool -spring.datasource.type=com.zaxxer.hikari.HikariDataSource -spring.datasource.hikari.minimum-idle=10 -spring.datasource.hikari.maximum-pool-size=30 -spring.datasource.hikari.auto-commit=true -spring.datasource.hikari.idle-timeout=30000 -spring.datasource.hikari.pool-name=HikariCP -spring.datasource.hikari.max-lifetime=900000 -spring.datasource.hikari.connection-timeout=10000 -# MYSQL -#spring.datasource.hikari.connection-test-query=SELECT 1 FROM DUAL -# ORACLE -spring.datasource.hikari.connection-test-query=SELECT 1 FROM DUAL -spring.datasource.hikari.validation-timeout=1000 - -### xxl-job, email -spring.mail.host=smtp.qq.com -spring.mail.port=25 -spring.mail.username=xxx@qq.com -spring.mail.from=xxx@qq.com -spring.mail.password=xxx -spring.mail.properties.mail.smtp.auth=true -spring.mail.properties.mail.smtp.starttls.enable=true -spring.mail.properties.mail.smtp.starttls.required=true -spring.mail.properties.mail.smtp.socketFactory.class=javax.net.ssl.SSLSocketFactory - -### xxl-job, access token -xxl.job.accessToken=default_token - -### xxl-job, i18n (default is zh_CN, and you can choose "zh_CN", "zh_TC" and "en") -xxl.job.i18n=zh_CN - -## xxl-job, triggerpool max size -xxl.job.triggerpool.fast.max=200 -xxl.job.triggerpool.slow.max=100 - -### xxl-job, log retention days -xxl.job.logretentiondays=30 diff --git a/xxl-job-admin/src/main/resources/application.yml b/xxl-job-admin/src/main/resources/application.yml new file mode 100644 index 00000000..1e242905 --- /dev/null +++ b/xxl-job-admin/src/main/resources/application.yml @@ -0,0 +1,85 @@ +server: + port: 16025 + servlet: + context-path: / +spring: + application: + name: xxl-job-admin + datasource: + driver-class-name: oracle.jdbc.OracleDriver + hikari: + auto-commit: true + connection-test-query: SELECT 1 FROM DUAL + connection-timeout: 10000 + idle-timeout: 30000 + max-lifetime: 900000 + maximum-pool-size: 30 + minimum-idle: 10 + pool-name: HikariCP + validation-timeout: 1000 + type: com.zaxxer.hikari.HikariDataSource + url: jdbc:oracle:thin:@//192.168.11.40:1521/crms + password: qw1112 + username: dms2 + freemarker: + charset: UTF-8 + request-context-attribute: request + settings: + number_format: 0.########## + suffix: .ftl + templateLoaderPath: classpath:/templates/ + mail: + from: xxx@qq.com + host: smtp.qq.com + password: xxx + port: 25 + properties: + mail: + smtp: + auth: true + socketFactory: + class: javax.net.ssl.SSLSocketFactory + starttls: + enable: true + required: true + username: xxx@qq.com + mvc: + servlet: + load-on-startup: 0 + static-path-pattern: /static/** + web: + resources: + static-locations: classpath:/static/ +xxl: + job: + accessToken: default_token + admin: + addresses: http://127.0.0.1:${server.port}${server.servlet.context-path} + executor: + address: '' + appname: ${spring.application.name} + ip: '' + logpath: ${logging.file.path}/jobhandler + logretentiondays: 30 + port: 16024 + i18n: zh_CN + logretentiondays: 30 + triggerpool: + fast: + max: 200 + slow: + max: 100 +management: + health: + mail: + enabled: false + server: + base-path: /actuator +mybatis: + configuration: + jdbc-type-for-null: 'null' + mapper-locations: classpath:/mybatis-mapper/*Mapper.xml + +logging: + file: + path: /home/desuo/logs/${spring.application.name}/${server.port} \ No newline at end of file diff --git a/xxl-job-admin/src/main/resources/logback.xml b/xxl-job-admin/src/main/resources/logback-spring.xml similarity index 81% rename from xxl-job-admin/src/main/resources/logback.xml rename to xxl-job-admin/src/main/resources/logback-spring.xml index d4b08c24..c543bb82 100644 --- a/xxl-job-admin/src/main/resources/logback.xml +++ b/xxl-job-admin/src/main/resources/logback-spring.xml @@ -2,7 +2,7 @@ logback - + @@ -11,7 +11,7 @@ - ${log.path} + ${log.path}/xxl-job-admin.log ${log.path}.%d{yyyy-MM-dd}.zip