上篇留了个问题,前端配置中心不知道怎么配,由于xxljob官网只有mysql的脚本,这里我自己转成了oracle的建表脚本
1、下载官网的代码
xxljob官网代码下载链接
要注意下载master分支的代码:
doc:sql脚本目录
admin:主代码
core:maven依赖
samples:使用示例
2、根据官网中的mysql建表脚本自己转成oracle脚本,在数据库中导入这八张xxl-job的表
由于文件不知道怎么引,所以建表脚本就先不放了,有需要的可以留言
3、我用的是oracle数据库,所以需要导一下oracle驱动
修改master项目下原有的数据库配置如下:
master下的pom.xml
<!-- 数据库驱动 -->
<dependency>
<groupId>com.oracle.database.jdbc</groupId>
<artifactId>ojdbc6</artifactId>
<version>11.2.0.4</version>
</dependency>
4、此时启动admin项目,但是报错找不到from关键字,百度后发现还需要改个配置项
select 1 : 是mysql的语法
select * from dual : oracle 的语法
5、再次启动报命令未正确结束的错误
根据提示的mapper发现,sql语法需要更改,原来的底层mapper支持的是mysql的语法
a、表重命名去掉as
b、所有的 ’ 和 ; 需要改为空
6、按上面修改后重新启动后报无效字符和命令未正常结束
无效字符:
此时可以很明显看出来前面那个在建表的时候是有个id主键的,这里应该是原来mysql自增的语法,但是oracle的话需要更改为下面:
命令未正确结束:
limit明显是mysql的语法,oracle应该是用rownum
7、运行后还有个序列不存在的问题,需要在数据库中新增自增序列;
并在数据库中xxl_job_user设置默认的前端调度中心的登录用户和密码;
自增序列:
create sequence XXL_JOB_GROUP_SEQ
increment by 1
start with 1
minvalue 1
maxvalue 999999999;
设置默认用户密码: admin/123456
INSERT INTO xxl_job_user(id, username, password, role, permission) VALUES (1, 'admin', 'e10adc3949ba59abbe56e057f20f883e', 1, NULL);
commit;
8、运行xxl-job项目,浏览器输入http://localhost:8080/xxl-job-admin/ 可以打开任务调度中心
按照前篇文章创建执行器和任务,在本地demo-cmf项目中编写xxl-job定时任务,但是修改执行器和任务时报错,发现还有部分语法没有改好;(参考下面第五点的f,g点)
9、代码全部修改成功后,点击执行,报错,见下面第6点,修改后,项目正常启动,定时任务正常执行
总结:mysql版本转oracle版本的xxl-job项目
1、下载官网master分支项目
2、将doc目录下的sql改为支持oracle语法
3、修改application.properties内的数据库配置(url,username,password,driver-class-name),修改connection-test-query为SELECT * from dual
4、pom.xml文件增加ojdbc6依赖支持oracle驱动
5、项目的mybatis-mapper层的sql需要修改为oracle语法
a、表重命名去掉as
b、所有的 ’ 和 ; 需要改为空
c、mysql中id自增写法改为oracle中的使用序列自增的语法 (见上述第6,7点)
d、limit是mysql的语法改为oracle后用rownum关键字替代
e、设置初始化用户名和密码
f、oracle中没有DATE_ADD()改为numtodsinterval函数
SELECT t.id
FROM xxl_job_registry t
WHERE t.update_time <![CDATA[ < ]]> #{nowTime}+numtodsinterval(-#{timeout}, 'SECOND')
g、update语法中最好加上指定的jdbcType=VARCHAR类型
6、配置好后执行定时任务时报错:
java.net.MalformedURLException: no protocol: 192.168.5.78:1111/run
a、配置执行器时,机器地址需要加上http:// 上面报错就是因为没有指定协议
7、特别注意,下载的xxl-job-master项目中的xxl-job-core的版本和demo-cmf我的个人项目引入的xxl-job-core的版本必须保持一致,不然定时任务执行仍然会有问题;这里我用的是2.3.0版本
补充:可以把xxl-job项目通过clean、install的方式生产xxl-job-master项目的jar包,之后使用只需要使用cmd命令jar -jar 的方式启动就行了。