知识大全 Proxool 0.9.1的配置与应用

Posted 语句

篇首语:君不见长松卧壑困风霜,时来屹立扶明堂。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Proxool 0.9.1的配置与应用相关的知识,希望对你有一定的参考价值。

Proxool 0.9.1的配置与应用  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  Proxool老牌的数据库连接池了 褒贬不一 性能上还行 目前最新版本是 相对之前版本的配置有些变动 这里以MySQL 为例做一个简单数据库连接池配置

  环境

  MySQL x

  JDK

  Proxool

  一 配置文件

  proxool xml

  <?xml version= encoding= UTF ?>

  <something else entirely>

  <proxool>

  <alias>ds</alias>

  <! 数据源的别名 >

  <driver url>jdbc:mysql:// : /testdb?useUnicode=true&characterEncoding=utf &autoReconnect=true&zeroDateTimeBehavior=convertToNull</driver url>

  <! url连接串 >

  <driver class> mysql jdbc Driver</driver class>

  <! 驱动类 >

  <driver properties>

  <property name= user value= v />

  <! 用户名 >

  <property name= password value= v />

  <! 密码 >

  </driver properties>

  <! 是指在任一时刻 可以(同时)建立的最大连接数 也就是说 就是已经请求的 但还没可用的新连接数量 >

  <simultaneous build throttle> </simultaneous build throttle>

  <! 最大连接数(默认 个) 超过了这个连接数 再有请求时 就排在队列中等候 最大的等待请求数由maximum new connections决定 >

  <maximum connection count> </maximum connection count>

  <! 最小连接数(默认 个) >

  <minimum connection count> </minimum connection count>

  <! proxool自动侦察各个连接状态的时间间隔(毫秒) 侦察到空闲的连接就马上回收 超时的销毁 默认 秒 >

  <house keeping sleep time> </house keeping sleep time>

  <! 最少保持的空闲连接数(默认 个) >

  <prototype count> </prototype count>

  <! 在使用之前测试 >

  <test before use>true</test before use>

  <! 用于保持连接的测试语句 >

  <house keeping test sql>select </house keeping test sql>

  </proxool>

  </something else entirely>

  粗体部分是变化部分 上面有详细说明!

  二 测试类

  package lavasoft;

  import mons logging Log;

  import mons logging LogFactory;

  import logicalcobwebs proxool ProxoolException;

  import logicanfiguration JAXPConfigurator;

  import java io FileNotFoundException;

  import java io IOException;

  import java sql *;

  import java util List;

  import java util Properties;

  /**

  * 简单的JDBC工具

  *

  * @author leizhimin : :

  */

  public class MyDB

  private static final Log log = LogFactory getLog(MyDB class);

  private static final boolean useDBPool = true;    //是否使用数据库连接池

  private static String dburl = null;

  private static String user = null;

  private static String password = null;

  private static Properties props = new Properties();

  static

  init();

  

  public static void init()

  if (useDBPool)

  try

  nfigure( proxool xml false);

  //                                nfigure( src/proxool xml false);

   catch (ProxoolException e)

  e printStackTrace();

  

  return;

  

  try

  //                        props load(new FileInputStream( /jdbc properties ));

  props load(MyDB class getResourceAsStream( /jdbc properties ));

   catch (IOException e)

  log error( #ERROR# :系统加载sysconfig properties配置文件异常 请检查! e);

  

  dburl = props getProperty( jdbc url );

  user = props getProperty( jdbc username ) trim();

  password = props getProperty( jdbc password ) trim();

  System out println(dburl);

  System out println(user);

  System out println(password);

  //注册驱动类

  try

  Class forName(props getProperty( jdbc driver ));

   catch (ClassNotFoundException e)

  log error( #ERROR# :加载数据库驱动异常 请检查! e);

  throw new RuntimeException(e);

  

  

  public static void main(String[] args) throws FileNotFoundException

  for (int i = ; i < ; i++)

  Connection conn = getConnection();

  System out println(conn == null ? 没连上 : 连上了 );

  //                        System out println( );

  //                closeConnection(conn);

  

  

  /**

  * 创建一个数据库连接

  *

  * @return 一个数据库连接

  */

  public static Connection getConnection()

  Connection conn = null;

  //根据连接池配置创建数据库连接

  if (useDBPool)

  try

  conn = DriverManager getConnection( proxool ds );

   catch (SQLException e)

  log error( #ERROR# :无法从数据库连接池获取到数据库连接! );

  throw new RuntimeException(e);

  

  return conn;

  

  //根据JDBC配置创建数据库连接

  try

  conn = DriverManager getConnection(dburl user password);

   catch (SQLException e)

  log error( #ERROR# :创建数据库连接发生异常 请检查! e);

  throw new RuntimeException(e);

  

  return conn;

  

  /**

  * 在一个数据库连接上执行一个静态SQL语句查询

  *

  * @param conn            数据库连接

  * @param staticSql 静态SQL语句字符串

  * @return 返回查询结果集ResultSet对象

  */

  public static ResultSet executeQuery(Connection conn String staticSql)

  ResultSet rs = null;

  try

  //创建执行SQL的对象

  Statement stmt = conn createStatement();

  //执行SQL 并获取返回结果

  rs = stmt executeQuery(staticSql);

   catch (SQLException e)

  log error( #ERROR# :执行SQL语句出错 请检查!\\n + staticSql e);

  throw new RuntimeException(e);

  

  return rs;

  

  /**

  * 在一个数据库连接上执行一个静态SQL语句

  *

  * @param conn            数据库连接

  * @param staticSql 静态SQL语句字符串

  */

  public static void executeSQL(Connection conn String staticSql)

  try

  //创建执行SQL的对象

  Statement stmt = conn createStatement();

  //执行SQL 并获取返回结果

  stmt execute(staticSql);

   catch (SQLException e)

  log error( #ERROR# :执行SQL语句出错 请检查!\\n + staticSql e);

  throw new RuntimeException(e);

  

  

  /**

  * 在一个数据库连接上执行一批静态SQL语句

  *

  * @param conn        数据库连接

  * @param sqlList 静态SQL语句字符串集合

  */

  public static void executeBatchSQL(Connection conn List<String> sqlList)

  try

  //创建执行SQL的对象

  Statement stmt = conn createStatement();

  for (String sql : sqlList)

  stmt addBatch(sql);

  

  //执行SQL 并获取返回结果

  stmt executeBatch();

   catch (SQLException e)

  log error( #ERROR# :执行批量SQL语句出错 请检查! e);

  

  

  public static void closeConnection(Connection conn)

  if (conn == null) return;

  try

  if (!conn isClosed())

  //关闭数据库连接

  conn close();

  

   catch (SQLException e)

  log error( #ERROR# :关闭数据库连接发生异常 请检查! e);

  throw new RuntimeException(e);

  

  

  

  运行结果

  [INFO] : : [ logicalcobwebs proxool ProxoolFacade] Proxool ( Aug : )

  连上了

  连上了

  连上了

  连上了

  连上了

  [INFO] : : [ logicalcobwebs proxool ds] Shutting down ds pool immediately [Shutdown Hook]

  [INFO] : : [ logicalcobwebs proxool ConnectionPool] Waiting until Thu Feb : : CST for all connections to bee inactive (active count is )

  [WARN] : : [ logicalcobwebs proxool ConnectionPool] Shutdown waited for milliseconds for all the connections to bee inactive but the active count is still Shutting down anyway

  [INFO] : : [ logicalcobwebs proxool PrototyperController] Stopping Prototyper thread

  [INFO] : : [ logicalcobwebs proxool HouseKeeperController] Stopping HouseKeeper thread

  Process finished with exit code

  Proxool提供的配置方式很多 这里进选择最常用的xml方式 另外的方式也很简单 可以参看官方文档

  

  

  三 Proxool很扯蛋的问题 找不到配置文件

  proxool的配置文件加载做的比较差劲 通过两个类来加载配置文件

   logicanfiguration PropertyConfigurator

   logicanfiguration ServletConfigurator

   logicanfiguration XMLConfigurator

   logicanfiguration JAXPConfigurator

   logicanfiguration AvalonConfigurator

  这几个类加载配置文件时候 常常会提示找不到配置文件 其原因是proxool在读取CLASSPATH下路径有问题 经常看到一种情况就是 在开发环境IDE环境下面测试通过 在打包后脱离IDE环境独立运行时候就提示找不到配置文件 这里有一个简单的解决方法就是不要使用文件名指定配置文件 而是通过读取CLASSPATH下的配置文件流 形成字节流传递给配置工具类来实现 比如

  public static void init()

  //初始化数据库连接配置参数

  InputStream in = MyDB class getResourceAsStream( /proxool xml );

  Reader reader = null;

  try

  reader = new InputStreamReader(in GBK );

   catch (UnsupportedEncodingException e)

  e printStackTrace();

  

  try

  nfigure(reader false);

   catch (ProxoolException e)

  e printStackTrace();

  

  

cha138/Article/program/Java/hx/201311/25682

相关参考

知识大全 Proxool连接池相关介绍

Proxool连接池相关介绍  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Proxool连接池

知识大全 Spring IOC配置与应用

SpringIOC配置与应用  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!   &nbs

知识大全 监控Proxool连接池的活动连接变化情况

监控Proxool连接池的活动连接变化情况  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  研究了

知识大全 Spring 数据源配置与应用

Spring数据源配置与应用  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Spring数据源配

池塘底充式增氧设施的配置与应用

一、材料与方法1.试验设施底充式增氧设备包括罗茨鼓风机、动力设备、镀锌钢管、微孔管、PVC管、阀门、定时开关等,配有水质检测仪器。主管道采用镀锌钢管或PVC管,直径75毫米。充气管道为微孔管或PVC管

池塘底充式增氧设施的配置与应用

一、材料与方法1.试验设施底充式增氧设备包括罗茨鼓风机、动力设备、镀锌钢管、微孔管、PVC管、阀门、定时开关等,配有水质检测仪器。主管道采用镀锌钢管或PVC管,直径75毫米。充气管道为微孔管或PVC管

知识大全 PHP 应用程序配置模式

PHP应用程序配置模式  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  本文举例说明了创建可配置P

知识大全 Struts配置讲解Web应用

Struts配置讲解Web应用  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Web应用的发布描

知识大全 配置Struts 2应用程序的安全功能

配置Struts2应用程序的安全功能  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &n

知识大全 使用jetty配置 开发web应用

   一直以来使用jetty作为我的web开发配置服务器开始的时候和所有的初学者一样使用tomcat作为开发服务器可用着用着感觉tomcat越来越繁琐以及庞大后来用了jb