解决项目集成xxl-job时,出现启动因获取不到数据源而卡住的问题。

一、问题描述

项目集成xxl-jbo的调度中心时,项目启动当执行到打印“init xxl-job admin scheduler success.”后,项目就卡住了无法执行下去。
在这里插入图片描述

二、排查问题

1.在JobScheduleHelper类下的第56行找到打印语句。
解决项目集成xxl-job时,出现启动因获取不到数据源而卡住的问题。_第1张图片
2.debuug下断点排查。当执行到了第73行时,执行不下去。
解决项目集成xxl-job时,出现启动因获取不到数据源而卡住的问题。_第2张图片
3.初步确定,在获取从数据源里数据库连接时卡住。往上排查,找到XxlJobAdminConfig类,是它提供的getAdminConfig方法。
解决项目集成xxl-job时,出现启动因获取不到数据源而卡住的问题。_第3张图片
4.加入断点,重启一次,查看数据。
解决项目集成xxl-job时,出现启动因获取不到数据源而卡住的问题。_第4张图片
解决项目集成xxl-job时,出现启动因获取不到数据源而卡住的问题。_第5张图片
可以看到这里的数据源使用springboot默认数据源hikari,而且是null。
当释放断点会程序会再次执行到这里,当释放4-5次后,数据出现变化了。
解决项目集成xxl-job时,出现启动因获取不到数据源而卡住的问题。_第6张图片
当此时,关掉断点,释放拦截后,程序可以正常的执行下去了。
如果不在getAdminConfig方法加断点,程序是一直获取不到数据源,也就一直卡着了!

三、解决问题

在一次试图禁止spring boot自动配置HikariDataSource的尝试中,问题得到解决。
在启动类加入如下注解

@SpringBootApplication(exclude={DataSourceAutoConfiguration.class})

加入注解后,程序可以正常执行,每次关闭程序时,可以看到HikariDataSource都被关闭。
解决项目集成xxl-job时,出现启动因获取不到数据源而卡住的问题。_第7张图片

你可能感兴趣的:(JAVA)