在CentOS环境下,WebLogic连接数据库的常见问题主要集中在网络连通性、配置正确性、资源限制、驱动兼容性等方面。以下是系统化的排查与解决步骤:
确保WebLogic服务器与数据库服务器之间的网络可达,且防火墙允许对应端口的通信。
ping <数据库服务器IP>命令,若无法ping通,需检查网络配置(如路由、虚拟机网络模式)。sudo firewall-cmd --zone=public --add-port=<数据库端口>/tcp --permanent
sudo firewall-cmd --reload
例如,MySQL需开放3306端口,Oracle需开放1521端口。确保目标数据库服务已启动并正常运行。
sudo systemctl status postgresql
若未运行,启动服务:sudo systemctl start postgresql
sqlplus、mysql)在数据库服务器上本地登录,确认数据库可正常访问。WebLogic需对应数据库的JDBC驱动才能建立连接,驱动需放置在WebLogic域的lib目录(如/opt/weblogic/user_projects/domains/base_domain/lib/)下。
mysql-connector-java-8.0.xx.jar、Oracle的ojdbc8.jar)。通过WebLogic控制台确认数据源配置的正确性,重点检查以下项:
MyDataSource)、JNDI名称(如jdbc/MyDataSource,需与应用程序中的lookup名称一致)。jdbc:mysql://<数据库服务器IP>:3306/<数据库名>,Oracle为jdbc:oracle:thin:@<数据库服务器IP>:1521:<SID>)、用户名/密码(需具备数据库访问权限)。初始容量(如5)、最大容量(如50),避免连接池耗尽;启用测试保留连接(Test Reserved Connections)、测试创建连接(Test Created Connections),并指定测试表(如SELECT 1 FROM DUAL)。WebLogic和数据库的日志文件包含连接失败的详细原因,需重点查看:
/opt/weblogic/user_projects/domains/base_domain/servers/AdminServer/logs/目录下,主要查看AdminServer.log(记录启动与运行错误)、server_name.out(标准输出与错误)。/var/log/mysql/error.log、Oracle的$ORACLE_HOME/network/log/listener.log,查看是否有拒绝连接、权限不足等记录。java.sql.SQLException: Access denied for user 'weblogic'@'weblogic_server_ip',说明数据库用户权限不足。Connection对象在使用完毕后调用close()方法(建议使用try-with-resources语句)。可通过WebLogic控制台的“连接池”→“诊断”→“连接泄漏分析”启用泄漏检测。Inactive connection timeout(默认120秒,可设置为300秒)或JTA的Timeout Seconds(默认30秒,可设置为60秒)。CREATE USER 'weblogic'@'%' IDENTIFIED BY 'weblogic1234';
GRANT ALL PRIVILEGES ON <数据库名>.* TO 'weblogic'@'%';
FLUSH PRIVILEGES;
Oracle中执行:CREATE USER weblogic IDENTIFIED BY weblogic1234;
GRANT CONNECT, RESOURCE TO weblogic;
通过以上步骤,可系统解决CentOS上WebLogic连接数据库的常见问题。若问题仍未解决,建议提供具体的错误日志信息,以便进一步分析。