(Oracle功能篇) Oracle 数据库连接池

来源:互联网 发布:内蒙古大数据产业 编辑:程序博客网 时间:2024/06/18 05:47
使用:proxool-0.9.1.zip
http://ncu.dl.sourceforge.net/project/proxool/proxool/0.9.1/proxool-0.9.1.zip


相关代码:

package yerasel;    import java.sql.Connection;  import java.sql.DriverManager;  import java.sql.ResultSet;  import java.sql.ResultSetMetaData;    import java.sql.Statement;    import org.logicalcobwebs.proxool.configuration.JAXPConfigurator;    public class Test {        int beginIndex = 0; // 待取记录起始数      int endIndex = 10;  // 待取得记录终止跳      String MySQLdbTableName = "usrpsw";      String MySQLreq = "select * from " + MySQLdbTableName + " limit " + beginIndex + ", " + endIndex;            /**      * proxool方式测试      *       * @throws Exception      */      public void test2() throws Exception {          // Java应用中先要加载配置文件,否则谁知道你配置给谁用的          JAXPConfigurator                  .configure("proxool.xml", false);                                        // 1:注册驱动类,这次这个驱动已经不是Oracle的驱动了,是Proxool专用的驱动          Class.forName("org.logicalcobwebs.proxool.ProxoolDriver");          // 2:创建数据库连接,这个参数是一个字符串,是数据源的别名,在配置文件中配置的timalias,参数格式为:proxool.数据源的别名          Connection conn = DriverManager.getConnection("proxool.mysql");          for(int i = 0; i< 20; i++)               conn = DriverManager.getConnection("proxool.mysql");          // 3:创建执行SQL的对象          Statement stmt = conn.createStatement();          // 4:执行SQL,并获取返回结果          ResultSet res = stmt.executeQuery(MySQLreq);          // 5:处理返回结果,此处打印查询结果          ResultSetMetaData rsmd = res.getMetaData();          int columnCount = rsmd.getColumnCount();          int rowCount = 0;          while (res.next()) {              System.out.print(rowCount + " ");              rowCount++;              for (int j = 1; j <= columnCount; j++) {// 循环处理                  String strRes = res.getString(j);                  System.out.print(strRes + "|\t");              }              System.out.println();          }          // 6:关闭数据库连接          conn.close();      }        public static void main(String[] args) throws Exception {          Test obj = new Test();          obj.test2();      }    }  


编写相关的配置文件:

<?xml version="1.0" encoding="UTF-8"?>   <something-else-entirely>           <proxool>                   <alias>mysql</alias>                   <!--数据源的别名-->                   <driver-url>jdbc:mysql://127.0.0.1:3306/mysqlconn</driver-url>                   <!--url连接串-->                   <driver-class>com.mysql.jdbc.Driver</driver-class>                   <!--驱动类-->                   <driver-properties>                           <property name="user" value="root"/>                           <!--用户名-->                           <property name="password" value="123456"/>                           <!--密码-->                   </driver-properties>                   <!--最大连接数(默认5个),超过了这个连接数,再有请求时,就排在队列中等候,最大的等待请求数由maximum-new-connections决定 -->                   <maximum-connection-count>5</maximum-connection-count>                   <!--最小连接数(默认2个)-->                   <minimum-connection-count>1</minimum-connection-count>                   <!--proxool自动侦察各个连接状态的时间间隔(毫秒),侦察到空闲的连接就马上回收,超时的销毁 默认30秒-->                   <house-keeping-sleep-time>90000</house-keeping-sleep-time>                   <!--没有空闲连接可以分配而在队列中等候的最大请求数,超过这个请求数的用户连接就不会被接受-->                   <maximum-new-connections>6</maximum-new-connections>                   <!--最少保持的空闲连接数(默认2个)-->                   <prototype-count>5</prototype-count>                   <!--在使用之前测试-->                   <test-before-use>true</test-before-use>                   <!--用于保持连接的测试语句 -->                   <house-keeping-test-sql>show tables</house-keeping-test-sql>           </proxool>   </something-else-entirely>  


注意,在程序中发起了过多线程,目的就是检验线程限制是否有效。

数据库内容如下:


原创粉丝点击