zoukankan      html  css  js  c++  java
  • 在Conenction Pool C3P0 中访问 PPAS

    为了结合C3P0和PPAS进行测试,写了如下代码:

    连接池部分:Connections.java

    import java.beans.PropertyVetoException;            
    import java.sql.Connection;            
    import com.mchange.v2.c3p0.ComboPooledDataSource;
    
    public class Connections {
        private static ComboPooledDataSource ds = new ComboPooledDataSource();
        static {        
            ds.setJdbcUrl("jdbc:edb://192.168.66.129:5444/edb");    
            ds.setUser("enterprisedb");    
            ds.setPassword("enterprisedb"); 
            ds.setAcquireIncrement(15);    
            ds.setInitialPoolSize(20);    
            ds.setMinPoolSize(10);    
            ds.setMaxPoolSize(500);    
            ds.setAcquireRetryAttempts(30);    
            ds.setMaxIdleTime(0);    
            ds.setCheckoutTimeout(0);    
                
            try {    
                ds.setDriverClass("com.edb.Driver");
            } catch (PropertyVetoException e) {    
                
            }    
            ds.setMaxStatements(0);    
        }        
                
        public static Connection getConnection() {        
            Connection conn = null;    
            try {    
                conn = ds.getConnection();
            } catch (Exception e) {    
                e.printStackTrace();
            }    
            return conn;    
        }        
    }            

    访问Connection: test02.java

    import java.sql.*;
    import java.io.*;
    import java.lang.Thread;
    
    public class test02{
     public static void main(String[] args)
     {
       try{
          for(;;){
              Connection con;
    
              con = Connections.getConnection();
              System.out.println("Got connection now!");
              Thread.sleep(240000);
    
              Statement stmt = con.createStatement() ; 
              System.out.println("Got Statement now!");
              Thread.sleep(240000);
      
              ResultSet rs = stmt.executeQuery("SELECT * FROM a5") ;  
              System.out.println("Got ResultSet now!");
              Thread.sleep(240000);
    
             int i=10;
    
             while(rs.next()){ 
                  i--;
                  if (i<0)
                      break;
     
                  System.out.println("Got Record now!");
                  Thread.sleep(5000);
    
                  String id = rs.getString("ID");
                  System.out.println("id is:"+id);   
             } 
    
             if(rs != null){
                 try{   
                      rs.close() ;   
                 }catch(SQLException e){   
                      e.printStackTrace() ;   
                 }   
             }  
    
            if(stmt != null){
                try{   
                   stmt.close() ;   
                }catch(SQLException e){   
                  e.printStackTrace() ;   
                }   
            }   
    
            if(con != null){
                try{   
                   con.close() ;   
                }catch(SQLException e){   
                   e.printStackTrace() ;   
                }   
            }
         }///end of for loop
        }catch(Exception exp){
           exp.printStackTrace();
        } /////end of whole try catch pair
     }/////////////end of main
    }//////////////////////end of class

    测试的结果如下:

    测试1 获得ResultSet后,切断Connection并保持这种切断状态。  

               可以正常显示所有的记录。 

    测试2 获得Statement后,切断Connection、2分钟后恢复连接,   

               可以正常显示所有的记录。

    测试3 获得Connection后,切断Connection、2分钟后恢复连接,  

               可以正常显示所有的记录。

    测试4    获得Connection后、切断连接,知道获得Statement、一直保持切断状态。然后再恢复连接 

    会发生如下错误: 

          com.edb.util.PSQLException: 

          at com.edb.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:815)

          at com.edb.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:541)

          at com.edb.jdbc2.AbstractJdbc2Statement.executeWithFlags

              (AbstractJdbc2Statement.java:444)

          at com.edb.jdbc2.AbstractJdbc2Statement.executeQuery

              (AbstractJdbc2Statement.java:275)

          at com.mchange.v2.c3p0.impl.NewProxyStatement.executeQuery

              (NewProxyStatement.java:397)

          at test02.main(test02.java:20)

          Caused by: java.net.SocketException:

          Software caused connection abort: recv failed

               at java.net.SocketInputStream.socketRead0(Native Method)

               at java.net.SocketInputStream.read(SocketInputStream.java:129)

               at com.edb.core.VisibleBufferedInputStream.readMore

                    (VisibleBufferedInputStream.java:146)

               at com.edb.core.VisibleBufferedInputStream.ensureBytes

                    (VisibleBufferedInputStream.java:115)

               at com.edb.core.VisibleBufferedInputStream.read(VisibleBufferedInputStream.java:74)

               at com.edb.core.PGStream.ReceiveChar(PGStream.java:298)

               at com.edb.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:2402)

               at com.edb.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:789)

               ... 5 more

  • 相关阅读:
    Xcode 4.1~4.6 + iOS 5、iOS 6免证书(iDP)开发+真机调试+生成IPA全攻略
    Java程序员快速入门Go语言
    企业站常用的点击后弹出下拉菜单导航
    企业站常用漂亮横向导航菜单
    点击弹出弹性下拉菜单效果
    很酷的伸缩导航菜单效果,可自定义样式和菜单项。
    导航条点击按钮切换效果
    不错的二级导航菜单特效
    商城常用产品分类导航条
    css实现鼠标经过导航文字偏位效果
  • 原文地址:https://www.cnblogs.com/gaojian/p/2648911.html
Copyright © 2011-2022 走看看