Docker环境下Tomcat容器连接PostgreSQL容器失败问题咨询
问题排查与修复方案
核心错误根源
你当前的数据库连接配置混用了PostgreSQL与SQL Server的参数,导致驱动加载逻辑异常,触发类缺失报错:
- JDBC URL前缀错误:
jdbc:sqlserver://是SQL Server专属连接协议,PostgreSQL的正确前缀为jdbc:postgresql:// - 驱动类名错误:PostgreSQL官方JDBC驱动的正确类名是
org.postgresql.Driver,你填写的net.postgresql.Driver不存在,系统误加载了SQL Server的jtds驱动,触发了其依赖的jcifs类缺失报错 - 固定IP不可靠:Docker容器重启后内网IP会自动变更,你创建的专用Docker网络自带DNS解析,直接用PostgreSQL的容器名作为访问地址即可,无需写死IP
修复后的connection.xml配置
<?xml version="1.0" encoding="UTF-8"?> <Context path="/resto" docBase="/usr/local/exploded" antiJARlocking="true" > <!-- If you're using Confluence 5.7 or below; change maxTotal to maxActive --> <Resource name="jdbc/postgres" auth="Container" type="javax.sql.DataSource" username="resto" password="resto#test" driverClassName="org.postgresql.Driver" url="jdbc:postgresql://<替换为你的PostgreSQL容器名>:5432/Resto" maxTotal="25" maxIdle="10" validationQuery="select 1" /> </Context>
修正配置后无需额外添加jtds、jcifs相关依赖,系统不会再加载SQL Server专属类,类缺失报错会自动消失
额外校验项
- 确认Tomcat容器的
WEB-INF/lib目录下已放入匹配JDK版本的PostgreSQL JDBC驱动jar包 - 确认两个容器都已加入你创建的专用Docker网络,可执行
docker network inspect <你的网络名>查看网络成员列表 - 确认PostgreSQL的
pg_hba.conf配置已允许Tomcat所在网段的访问请求
内容的提问来源于stack exchange,提问作者tryhard
相关产品推荐
相关产品推荐

