Java Web连接MariaDB Galera集群无法获取JDBC连接如何解决
解决方案
根因说明
你当前引入的是MariaDB官方驱动,但JNDI数据源配置中填写的是MySQL JDBC驱动类名,MariaDB驱动包中不存在该类,因此抛出类不存在异常。
具体修复步骤
- 第一步:修改Tomcat
context.xml中的数据源配置,将driverClassName参数的值替换为MariaDB 1.x版本对应的驱动类名org.mariadb.jdbc.Driver
修改后的资源配置参考如下:
<Resource auth="Container" driverClassName="org.mariadb.jdbc.Driver" maxIdle="100" maxTotal="100" name="jdbc/dbExample" password="dbpass" type="javax.sql.DataSource" url="jdbc:mariadb:sequential://192.1.1.12,192.1.1.13,192.1.1.14:3306/dbExample" username="dbuser"/>
- 第二步:确认MariaDB驱动包的加载路径
因为你使用的是Tomcat容器管理的JNDI数据源,数据源初始化在项目加载前执行,所以需要将mariadb-java-client-1.7.6.jar放入Tomcat安装目录的lib文件夹下,避免容器初始化数据源时无法找到驱动类。如果仅将依赖配置在项目pom中,驱动包只会打入项目WEB-INF/lib目录,容器初始化阶段无法加载。
可选方案(不推荐)
如果你坚持要保留com.mysql.jdbc.Driver的配置,可在pom中额外引入MySQL JDBC驱动依赖:
<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.49</version> </dependency>
但该方案会导致MariaDB特有的URL参数(如你配置的sequential集群模式)无法被正确识别,因此不推荐使用。
内容的提问来源于stack exchange,提问作者user3637971
相关产品推荐
相关产品推荐

