2013-04-04 29 views
7

Tôi đang kết nối với cơ sở dữ liệu Postgres sử dụng dịch vụ web java (apache trục) với JDBC kết nối để có được những data.But đột nhiên trong hầu hết các lần tôi ngoại trừ org.postgresql.util.PSQLException: The connection attempt failed. và một số lần hoạt động tốt. Ở đây tôi đang sử dụng nhiều câu lệnh chuẩn bị. mẫu mã của tôi làorg.postgresql.util.PSQLException: Nỗ lực kết nối thất bại

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

stack trace về ngoại lệ này là

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 

Tôi đã kiểm tra các bản ghi postgres và tôi tìm thấy những điều khoản sau đây trong trường hợp khác nhau

1.WARNING: worker mất quá nhiều thời gian để bắt đầu; đã hủy.

2.could không lắp lại vào bộ nhớ chia sẻ (key = ...., addr = .....): 487.

3.could không nhận được dữ liệu từ khách hàng: Không có kết nối có thể được thực hiện vì máy mục tiêu chủ động từ chối nó.

4. EOF bất ngờ trên kết nối máy khách.

xin vui lòng giúp me.Thanks Trước

+2

Bạn cần hiển thị dấu vết ngăn xếp ngoại lệ * đầy đủ *, vì (các) ngoại lệ lồng nhau sẽ chứa chi tiết của sự cố. Cho rằng bạn không sử dụng kết nối gộp, tôi sẽ không ngạc nhiên nếu bạn đang gặp vấn đề max_connections, nhưng không có lỗi đầy đủ nó khó nói. –

+0

Bạn có đóng tất cả các câu lệnh và kết quả đã chuẩn bị không? Trong một ví dụ đóng cửa của ps2 và rs2 là ẩn –

+0

Tôi cập nhật các câu hỏi với ngăn xếp dấu vết về trường hợp ngoại lệ và thời gian qua tôi quên để đăng các 'ps2' và' rs2' báo cáo đóng cửa.Tôi đã làm nó trong ứng dụng. –

Trả lời

5

Vấn đề thực sự là:

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

Kết nối đã được đóng cửa khi Java đã cố gắng để đọc từ nó. Điều này có thể được gây ra bởi:

  • server PostgreSQL được khởi động lại
  • Các PostgreSQL backend bạn được kết nối với bị chấm dứt
  • Các PostgreSQL backend bạn được kết nối với đâm
  • kết nối mạng Dodgy
  • Badly tường lửa trạng thái hoạt động
  • Kết nối không đúng thời gian trong bảng kết nối NAT của tường lửa/bộ định tuyến NAT

... và có thể nhiều hơn nữa. Kiểm tra nhật ký máy chủ PostgreSQL để xem có thông tin gì ở đó không; cũng xem xét thực hiện một số truy tìm mạng với một công cụ như Wireshark.

+0

Tôi đã cập nhật câu hỏi của mình với các câu lệnh trong các tệp nhật ký của postgres –

Các vấn đề liên quan