2013-04-04 12 views
7

Je me connecte à la base de données postgres en utilisant les services web java (axe apache) avec connexions JDBC pour obtenir le data.But soudainement dans la plupart des temps je suis obtenir une exception de org.postgresql.util.PSQLException: The connection attempt failed. et quelques fois cela fonctionne bien. Ici j'utilise beaucoup de déclarations préparées. Mon exemple de code estorg.postgresql.util.PSQLException: La tentative de connexion a échoué

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);} 
} 

trace de la pile de cette exception est

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 

J'ai vérifié les journaux de Postgres et je l'ai trouvé les énoncés suivants dans les différents cas

1.WARNING: travailleurs ont pris trop longtemps commencer; annulé.

2.Could pas refixer à mémoire partagée (clé = ...., adr = .....): 487.

3.could reçoivent pas de données client: il n'a pu être connexion parce que la machine cible l'a activement refusée.

4. EOF non attendu sur la connexion client.

s'il vous plaît aider me.thanks Avant

+2

Vous devez afficher la trace de pile d'exception * full *, car les exceptions imbriquées contiendront les détails du problème. Étant donné que vous n'utilisez pas de connexions groupées, je ne serai pas surpris si vous rencontrez des problèmes de max_connections, mais sans l'erreur complète, c'est difficile à dire. –

+0

Fermez-vous toutes les instructions et tous les résultats préparés? Dans un exemple donné la fermeture de ps2 et rs2 est cachée –

+0

J'ai mis à jour la question avec la trace de la pile à propos de l'exception et la dernière fois que j'ai oublié de poster les instructions de fermeture 'ps2' et' rs2'.J'ai fait dans l'application. –

Répondre

5

Le vrai problème est:

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

La connexion a été fermée lorsque Java a essayé de lire. Cela peut être causé par:

  • Le serveur PostgreSQL redémarre
  • Le serveur PostgreSQL vous connecté à être terminé
  • Le serveur PostgreSQL vous connecté à écraser
  • connexion réseau Dodgy
  • Badly pare-feu à état de comportement
  • Connexions inactives temporisation hors des tables de connexion NAT des pare-feu/routeurs NAT

... et probablement plus. Vérifiez les journaux du serveur PostgreSQL pour voir s'il y a quelque chose d'informatif là-bas; Envisagez également de faire un suivi de réseau avec un outil comme Wireshark.

+0

J'ai mis à jour ma question avec des déclarations dans les fichiers journaux de postgres –

Questions connexes