You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Tomcat环境下PostgreSQL数据库连接返回Null问题求助

JDBC连接在Tomcat中返回Null但Main函数正常的原因排查

我在Java类的main函数中运行以下数据库连接代码时完全正常,但部署到Tomcat 9.0.96服务器触发时,conn始终为Null,进而抛出空指针异常。

连接代码

private Connection getConnection(String username, String password) { //creates the connection to server for a specific database
    Connection conn = null;
    String url = "jdbc:postgresql://<IP>/DormSystem"; // url of server, postgresql is the server type, IP is the server ip with the port its on and adds on the database specified
    try {
        // Connect to PostgreSQL database
        conn = DriverManager.getConnection(url, username, password); // actually connects using the url above and username and password for admin acc
        System.out.println("Connected to the PostgreSQL server successfully."); // console test to prove connection succeded
    } catch (SQLException e) {
        System.out.println(e.getMessage());
    }
    return conn;
}

服务器报错信息

HTTP Status 500 – Internal Server Error
Type Exception Report

Message Cannot invoke "java.sql.Connection.prepareStatement(String)" because "conn" is null

Description The server encountered an unexpected condition that prevented it from fulfilling the request.

Exception

java.lang.NullPointerException: Cannot invoke "java.sql.Connection.prepareStatement(String)" because "conn" is null
    Login.SQLInterfacing.CreateUser(SQLInterfacing.java:36)
    Login.CreateUserServel.doPost(CreateUserServel.java:36)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:555)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:623)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
Note The full stack trace of the root cause is available in the server logs.

Apache Tomcat/9.0.96

可能的原因

  • PostgreSQL驱动包未部署到Tomcat:本地main函数运行时驱动包在classpath中,但Web项目的WEB-INF/lib目录下没有放置PostgreSQL的JDBC驱动jar包,导致DriverManager找不到驱动类,连接失败。
  • 网络/防火墙限制:Tomcat服务器所在环境的防火墙阻止了对PostgreSQL服务器端口(默认5432)的访问,或者数据库IP在Tomcat服务器上无法连通。
  • Tomcat安全策略限制:Tomcat的安全管理器(catalina.policy)可能限制了Web应用发起网络连接的权限,需要检查并添加对应的权限配置。
  • 参数传递错误:在Tomcat环境中调用getConnection时传入的username或password为空值,或者URL中的<IP>填写错误(比如漏写端口、IP地址不正确)。
  • 异常信息不全:当前代码仅打印e.getMessage(),Tomcat的logs/catalina.out日志中会有完整的SQLException栈信息,查看完整异常能直接定位连接失败的具体原因。

内容的提问来源于stack exchange,提问作者mrjoeyrules

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 08:02:37