转载自刘茫茫看山

问题背景

某天我们的租户反馈数据库连接缺少必要的驱动,我们通过日志查看确实是缺少部分数据库的驱动,因为DolphinScheduler默认只带了Oracle和MySQL的驱动,并且需要将pom文件中的test模式去掉才可以在打包的时候引入。我们的任务量比较大,在3.0存在容错机制的情况下,重启Master和Worker时,任务会重复容错多次,对用户使用很不友好,对Yarn集群的压力也比较大,所以非必要不会重启服务,这就需要在不重启的前提下加载新的驱动包。

遇到的问题

当开始做的时候,想的过于简单,下面是Worker模块下的启动命令,libs目录后面加载的是*,所以我们认为程序肯定会自动加载jar。

但是当我们将jar放到对应的目录后,重启测试数据库连接,发现还是报了和之前一样的问题。

Could not load driverClass oracle.jdbc.driver.OracleDriver

我们需要了解java.class.path为什么没有将我们新添加的驱动包加载进去,于是我们找出了worker服务的进程id,并通过jinfo命令查看类路径的加载情况,发现java.calss.path对应的目录从*变成了jar包的绝对路径,我们新添加的jar的绝对路径没有在里面,所以不会读取驱动。

解决方法

我们最熟悉的类加载模式就是双亲委派机制,在类加载模式中存在一个ExtensioinClassloader类,它是java.lang.ClassLoader的子类,该类加载器负责加载Java的扩展库JAVA_HOME/jre/lib/ext/*.jar或者java.ext.dirs路径下的内容。

我们通过jinfo命令查看进程中的扩展目录,发现java.ext.dirs对应的值不是绝对路径,也就表示我们可以尝试通过将额外的驱动jar包放到扩展目录中加载。

这里以Oracle驱动为例,通过将Oracle驱动jar放到对应的扩展目录中,测试数据源连接情况,连接成功,希望可以给有需要的小伙伴提供有价值的参考。

本文由 白鲸开源 提供发布支持!

Dolphinscheduler不重启加载Oracle驱动的更多相关文章

  1. 如何在maven工程中加载oracle驱动

    maven中引入oracle驱动报错Missing artifact com.oracle:ojdbc14:jar:10.2.0.4.0 时间:2015年09月22日  浏览:9361次 在maven ...

  2. springboot无法加载oracle驱动终极解决

    .ctrl+shirt+s .找到 Maven: com.oracle:ojdbc6: .找到classes 下的路径C:\Users\Administrator\.m2\repository\com ...

  3. spring.boot 无法加载oracle驱动的可能原因

    .找到本地oracle安装目录下的ojdbc6.jar包,为了方便起见,复制到某盘的根目录(如F盘根目录),在cmd下进入F盘根目录(也就是ojdbc.jar复制的目录),同时我们需要查看ojdbc的 ...

  4. JDBC 学习笔记(四)—— JDBC 加载数据库驱动,获取数据库连接

    1. 加载数据库驱动 通常来说,JDBC 使用 Class 类的 forName() 静态方法来加载驱动,需要输入数据库驱动代表的字符串. 例如: 加载 MySQL 驱动: Class.forName ...

  5. 尝试加载 Oracle 客户端库时引发 BadImageFormatException。如果在安装 32 位 Oracle 客户端组件的情况下以 64 位模式运行,将出现此问题。

    从10G开始,Oracle提供了一个较为轻量级的客户包,叫做Instant Client. 将它安装好后,就不用再安装庞大的Oracle Client了. 这样一来,只要客户端下载Instant Cl ...

  6. 无软驱加载raid驱动安装windows2003及其他微软操作系统

    [转载]http://blog.zol.com.cn/2650/article_2649199.html [另一篇]http://www.blue1000.com/bkhtml/c159/2013-0 ...

  7. win10系统加载ahci驱动的操作方案(Win10之家)

    win10系统使用的过程中很多用户会想要加载ahci驱动,但是大部分用户根本不知道怎么操作加载ahci驱动,这样的话很多用户会遇到一些问题,那如果使用的过程中想要加载ahci驱动的话我们应该怎么操作呢 ...

  8. Intel Nehalem微架构Calpella平台机型Windows XP系统下如何开启AHCI硬盘工作模式(XP系统下如何加载AHCI驱动)

    问题描述用户来电表示使用IDE模式安装XP系统后开启AHCI模式会出现开机蓝屏重启的问题,咨询如何在XP下加载AHCI驱动,以便开启BIOS中AHCI选项来发挥硬盘的最佳性能   问题分析 Windo ...

  9. JDBC:加载数据库驱动、连接数据库(详细讲解)

    加载数据库驱动: 1)由于Java是一个纯面向对象语言,任何事物在其中都必须抽象成类或者类对象,数据库也不例外,JDBC同样也把数据库抽象成面向对象的结构: 2)JDBC将整个数据库驱动器在底层抽象成 ...

  10. 尝试加载 Oracle 客户端库时引发 BadImageFormatException

    尝试加载 Oracle 客户端库时引发 BadImageFormatException 工程师给计算机诊断,就像医生给病人诊断一样,很多同样的症状,可能是由多种截然不同的原因导致的.   最近进行C# ...

随机推荐

  1. Eclipse build js卡死 Eclipse 编译太卡,耗时太长解决

    Eclipse build js卡死 Eclipse 编译太卡,耗时太长解决 问题描述:编译停止在js编译中,原来是js的问题 1.首选项-javaScript-Validator-Errors/Wa ...

  2. Java邮件发送解决ssl及邮件中文乱码

    Java邮件发送解决ssl及邮件中文乱码 org.apache.commons.mail.EmailException: Sending the email to the following serv ...

  3. Java对象转Map<String,String>

    Java对象转Map<String,String> import org.springframework.beans.BeanUtils; import org.springframewo ...

  4. Lru-k在Rust中的实现及源码解析

    LRU-K 是一种缓存淘汰算法,旨在改进传统的LRU(Least Recently Used,最近最少使用)算法的性能.将其中高频的数据达到K次访问移入到另一个队列进行保护. 算法思想 LRU-K中的 ...

  5. Java面试知识点(一)多态

    多态概述 1. 定义 多态就是指程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程时并不确定,而是在程序运行期间才确定,即一个引用变量倒底会指向哪个类的实例对象,该引用变量发出的 ...

  6. sqoop导入导出到mysql,hbase,hive,hdfs系统,多表关联导出案例

    Sqoop工具1.协助 RDBMS 与 Hadoop 之间进行高效的大数据交流.把关系型数据库的数据导入到 Hadoop 与其相关的系统 (如HBase和Hive)同时也可以把数据从 Hadoop 系 ...

  7. 洛谷P1439

    这道题也给了我很多的思考,因为很久没有做过LIS和KLCS的题了 为什么能采用二分 因为f数组保存的是LCS长度为i时的最小末尾的值,可以证明f数组一定是单调的,并且是严格单调的 为什么要保存末尾最小 ...

  8. Java-Response对象设置响应消息

    功能:设置响应消息 1.设置响应行 格式:HTTP/1.1 200 OK 设置状态码:setStatus(int sc) 2.设置响应头:setHeader(String name,String va ...

  9. 网易数帆开源贡献获业界肯定,轻舟API网关获OSCAR尖峰开源技术创新奖

    2020年10月16日,由中国信息通信研究院主办的"2020开源产业大会"在北京线下与线上同步召开,主办方在会上公布了"OSCAR尖峰开源奖项"各个奖项的评选结 ...

  10. 当项目中使用到缓存,我们是选择 Redis 还是 Memcached ,为什么?

    举一些场景: 一.比如实现一个简单的日志收集功能或发送大量短信.邮件的功能,实现方式是先将数据收集到队列中,然后有一个定时任务去消耗队列,处理该做的事情. 直接使用 Redis 的 lpush,rpo ...