繁体   English   中英

Java App无法从PostgreSQL加载数据

[英]Java App Does Not Load Data from PostgreSQL

我的Java应用程序在本地运行良好,但是现在当我将其部署到EC2实例(Ubuntu 14,Tomcat 8,PostgreSQL 9.3)上时,出现以下错误(请参见下文)。 后端由不再属于团队的另一位开发人员编写。 基本上,一旦从下拉菜单中选择了一个值,它就需要显示一些数据。

我一直在Google上发疯,但没有找到解决方案。 我以为它可能与jdbc:postgresql://localhost:5432/dbName 我什至尝试插入实际IP而不是localhost但还是没有运气。 对我来说,连接数据库而不是代码似乎是一个问题。 如前所述,它在我的计算机上本地运行良好。

因为我不是Java专家,所以任何指导都将不胜感激。 谢谢你的帮助。

完整的错误日志如下:

java.lang.NullPointerException
com.app.data.ConnectionPool.freeConnection(ConnectionPool.java:52)
com.app.data.appDB.getData(appDB.java:155)
com.app.servlets.GetAppServlet.processRequest(GetAppServlet.java:42)
com.app.servlets.GetAppServlet.doGet(GetAppServlet.java:67)
javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
        at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607)
        at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:315)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:745)

根据您提供的内容,我的最佳猜测是,您提到的connection.close()方法是在finally块中调用的,该块中没有任何检查以查看connection是否为null

我想你的代码看起来像下面这样:

Connection connection = null;
try {
    connection = getDatabaseConnectionSomehow(...);
    // do stuff with database
}
finally {
    connectionPool.freeConnection(connection);
}

如果getDatabaseConnectionSomehow(...)的calll引发异常,则在进入finally块时, connection将为null 我上面提供的代码不会检查connection是否为null ,并且如果您的freeConnection方法在关闭连接之前也无法检查连接是否为null ,则会得到NullPointerException。

finally块中引发的异常将替换在相应try块中引发的任何异常。 因此,在您的情况下,您看不到真正的异常获取数据库连接,因为NullPointerException妨碍了您。

希望添加适当的空检查应该可以帮助您找出真正的问题所在。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM