From eea9e601cf434710e51463b06b7eaef001f9ca1a Mon Sep 17 00:00:00 2001 From: tomsun28 Date: Sat, 19 Mar 2022 16:21:11 +0800 Subject: [PATCH] =?UTF-8?q?[collector]fix=20jdbc=20spi=E5=B9=B6=E5=8F=91?= =?UTF-8?q?=E5=8A=A0=E8=BD=BD=E6=AD=BB=E9=94=81=20(#40)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../collect/database/JdbcSpiLoader.java | 31 +++++++++++++++++++ .../main/resources/META-INF/spring.factories | 3 +- 2 files changed, 33 insertions(+), 1 deletion(-) create mode 100644 collector/src/main/java/com/usthe/collector/collect/database/JdbcSpiLoader.java diff --git a/collector/src/main/java/com/usthe/collector/collect/database/JdbcSpiLoader.java b/collector/src/main/java/com/usthe/collector/collect/database/JdbcSpiLoader.java new file mode 100644 index 0000000..32d80be --- /dev/null +++ b/collector/src/main/java/com/usthe/collector/collect/database/JdbcSpiLoader.java @@ -0,0 +1,31 @@ +package com.usthe.collector.collect.database; + +import lombok.extern.slf4j.Slf4j; +import org.springframework.boot.CommandLineRunner; +import org.springframework.core.annotation.Order; +import org.springframework.stereotype.Service; + +/** + * 预加载jdbc驱动包 避免spi并发加载造成死锁 + * @author tom + * @date 2022/3/19 15:39 + */ +@Service +@Slf4j +@Order(value = 0) +public class JdbcSpiLoader implements CommandLineRunner { + + + @Override + public void run(String... args) throws Exception { + log.info("start load jdbc drivers"); + try { + Class.forName("com.mysql.cj.jdbc.Driver"); + Class.forName("org.postgresql.Driver"); + Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); + } catch (Exception e) { + log.error("load jdbc error: {}", e.getMessage(), e); + } + log.info("end load jdbc drivers"); + } +} diff --git a/collector/src/main/resources/META-INF/spring.factories b/collector/src/main/resources/META-INF/spring.factories index 6f385a1..237ec72 100644 --- a/collector/src/main/resources/META-INF/spring.factories +++ b/collector/src/main/resources/META-INF/spring.factories @@ -6,4 +6,5 @@ com.usthe.collector.dispatch.MetricsCollectorQueue,\ com.usthe.collector.dispatch.WorkerPool,\ com.usthe.collector.dispatch.entrance.internal.CollectJobService,\ com.usthe.collector.dispatch.export.MetricsDataExporter,\ -com.usthe.collector.util.SpringContextHolder +com.usthe.collector.util.SpringContextHolder,\ +com.usthe.collector.collect.database.JdbcSpiLoader