• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

在ConenctionPoolC3P0中访问PPAS

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

为了结合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


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C#打印webBrowser打开的页面发布时间:2022-07-14
下一篇:
C#上传生成新图片代码|C#生成图片代码发布时间:2022-07-14
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap