确保目标数据库(如MySQL、Oracle)已启动并运行。在Ubuntu终端使用以下命令检查服务状态:
sudo systemctl status mysql # MySQL示例
sudo systemctl status postgresql # PostgreSQL示例
若未启动,执行sudo systemctl start mysql启动服务。
ping <数据库服务器IP>确认WebLogic服务器能访问数据库服务器。ufw,执行以下命令开放端口(以MySQL的3306端口为例):sudo ufw allow 3306/tcp
sudo ufw reload
若使用iptables,需添加对应规则并保存。mysql-connector-java-8.0.xx.jar、Oracle的ojdbc8.jar)。lib目录(默认路径为/opt/weblogic/server/lib)。http://<WebLogic_IP>:7001/console),导航至Environment → Data Sources,确认以下信息:
jdbc:mysql://<数据库IP>:3306/<数据库名>,Oracle为jdbc:oracle:thin:@<数据库IP>:1521:<SID>)。web.xml)中的<res-ref-name>一致。使用数据库管理员账号登录数据库,检查WebLogic连接用户的权限:
-- MySQL示例
CREATE USER 'weblogic'@'%' IDENTIFIED BY 'weblogic1234'; -- 允许远程访问
GRANT ALL PRIVILEGES ON your_database.* TO 'weblogic'@'%'; -- 授予数据库权限
FLUSH PRIVILEGES;
-- Oracle示例
CREATE USER weblogic IDENTIFIED BY weblogic1234;
GRANT CONNECT, RESOURCE TO weblogic;
确保用户拥有访问目标数据库的权限。
Initial Capacity(初始连接数)、Max Capacity(最大连接数)(如从10调整为50)。Inactive Connection Timeout(无效连接超时时间,如100秒),避免长时间占用连接。Diagnostics标签下,启用Enable Connection Leak Profiling和Enable Connection Profiling,通过日志定位未关闭的连接(日志中会提示A JDBC pool connection leak was detected)。/opt/weblogic/user_projects/domains/<域名>/servers/<服务器名>/logs/,查看server.log中的错误信息(如java.sql.SQLException: Connection refused)。/var/log/mysql/error.log,Oracle日志位于$ORACLE_BASE/diag/rdbms/<SID>/<SID>/trace/alert_<SID>.log,从中获取连接失败的详细原因。若日志提示连接泄漏,检查应用程序代码,确保Connection、Statement、ResultSet对象在使用后正确关闭(使用try-with-resources或finally块):
// 正确示例
try (Connection conn = dataSource.getConnection();
PreparedStatement pstmt = conn.prepareStatement("SELECT * FROM table");
ResultSet rs = pstmt.executeQuery()) {
// 处理结果集
} catch (SQLException e) {
e.printStackTrace();
}
避免因未关闭连接导致连接池资源耗尽。