java - 组织.postgresql.util.PSQLException : The connection attempt failed

标签 java web-services postgresql jdbc

我正在使用带有 JDBC 连接的 java Web 服务(apache 轴)连接到 postgres 数据库以获取数据。但是在大多数时候我突然得到一个org.postgresql.util.PSQLException 异常:连接尝试失败。 有时它工作正常。在这里,我使用了许多准备好的语句。我的示例代码是

Connection connection=null;
try
{
    Class.forName(driver);
    connection = DriverManager.getConnection(url, username, password);
    ps1=connection.prepareStatement("select * from emp");
    rs1=ps1.executeQuery();
    while(rs1.next())
    {            
        ps2=connection.prepareStatement("select * from dept where dept_no="+rs1.getInt("dept_no"));
        rs2=ps2.executeQuery();
        while(rs2.next())
        {
            ................
            ................
        }
    }
}
catch(Exception e)
{
    System.out.println("Exception occurred is"+e.getMessage());            
}
finally
{
    try{if(rs1!=null)rs1.close();}catch(Exception e){ System.out.println("*1closing error--->"+e);}
    try{if(ps1!=null)ps1.close();}catch(Exception e){ System.out.println("**1closing error--->"+e);}
    try{if(rs2!=null)rs2.close();}catch(Exception e){ System.out.println("*2closing error--->"+e);}
    try{if(ps2!=null)ps2.close();}catch(Exception e){ System.out.println("**2closing error--->"+e);}
    try{if(connection!=null)connection.close();}catch(Exception e){ System.out.println("***closing error--->"+e);}
}

关于这个异常的堆栈跟踪是

org.postgresql.util.PSQLException: The connection attempt failed.
    at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:137)
    at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:66)
    at org.postgresql.jdbc2.AbstractJdbc2Connection.<init>(AbstractJdbc2Connection.java:124)
    at org.postgresql.jdbc3.AbstractJdbc3Connection.<init>(AbstractJdbc3Connection.java:30)
    at org.postgresql.jdbc3.Jdbc3Connection.<init>(Jdbc3Connection.java:24)
    at org.postgresql.Driver.makeConnection(Driver.java:386)
    at org.postgresql.Driver.connect(Driver.java:260)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at com.codon.service.WareHouseServer.get_picks(WareHouseServer.java:7415)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.apache.axis.providers.java.RPCProvider.invokeMethod(RPCProvider.java:397)
    at org.apache.axis.providers.java.RPCProvider.processMessage(RPCProvider.java:186)
    at org.apache.axis.providers.java.JavaProvider.invoke(JavaProvider.java:323)
    at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32)
    at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)
    at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83)
    at org.apache.axis.handlers.soap.SOAPService.invoke(SOAPService.java:454)
    at org.apache.axis.server.AxisServer.invoke(AxisServer.java:281)
    at org.apache.axis.transport.http.AxisServlet.doPost(AxisServlet.java:699)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
    at org.apache.axis.transport.http.AxisServletBase.service(AxisServletBase.java:327)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:857)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
    at java.lang.Thread.run(Unknown Source)
Caused by: java.net.SocketException: Connection reset
    at java.net.SocketInputStream.read(Unknown Source)
    at org.postgresql.core.VisibleBufferedInputStream.readMore(VisibleBufferedInputStream.java:135)
    at org.postgresql.core.VisibleBufferedInputStream.ensureBytes(VisibleBufferedInputStream.java:104)
    at org.postgresql.core.VisibleBufferedInputStream.read(VisibleBufferedInputStream.java:73)
    at org.postgresql.core.PGStream.ReceiveChar(PGStream.java:259)
    at org.postgresql.core.v3.ConnectionFactoryImpl.doAuthentication(ConnectionFactoryImpl.java:254)
    at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:95)
    ... 37 more

我查看了postgres的日志,发现在不同的情况下都有如下语句

1.警告:工作人员启动时间太长;已取消。

2.无法重新连接到共享内存(key=...., addr=.....):487.

3.could not receive data from client: 无法建立连接,因为目标机器主动拒绝。

4.客户端连接出现意外的 EOF。

请帮助我。提前致谢

最佳答案

真正的问题是:

Caused by: java.net.SocketException: Connection reset
    at java.net.SocketInputStream.read

当 Java 试图从中读取时连接被关闭。这可能是由于:

  • 正在重启 PostgreSQL 服务器
  • 您连接到的 PostgreSQL 后端被终止
  • 您连接到崩溃的 PostgreSQL 后端
  • 不可靠的网络连接
  • 行为不当的状态防火墙
  • NAT 防火墙/路由器的 NAT 连接表的空闲连接超时

...可能还有更多。检查 PostgreSQL 服务器日志,看看那里是否有任何信息;还可以考虑使用 Wireshark 等工具进行一些网络跟踪。

关于java - 组织.postgresql.util.PSQLException : The connection attempt failed,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15806083/

相关文章:

java - 如何处理应用程序运行时数据库关闭时发生的 MySQL CommunicationException

java - 如何使用spring批处理在postgresql中执行存储过程?

java - Webjars 定位器不适用于基于 XML 的 Spring MVC 4.2.x 配置?

java - 如何更改Spring Cloud GCP的依赖版本

json - 带有 Jackson 2.2 的 Spring MVC : "HttpMediaTypeNotAcceptableException: Could not find acceptable representation"

web-services - 在 Apache CXF 中动态设置启用 MTOM 的属性

php - Heroku PHP pgconnect - 用户密码验证失败

sql - 是否可以通过 SQL SELECT 语句更改数据库?

java - ServiceTracker何时取消获取ServiceReference?

java - JAX-WS Webservice 类初始化 block