首页 | 源码下载 | 网站模板 | 网页特效 | 广告代码 | 网页素材 | 字体下载 | 书库 | 站长工具
会员投稿 投稿指南 RSS订阅
当前位置:主页>网络编程>java教程>资讯:配置Spring的Proxool数据源

配置Spring的Proxool数据源

www.jz123.cn  2009-10-20   来源:   IT专家网    责任编辑(袁袁)    我要投递新闻

 Proxool单独应用比较麻烦,毕竟自己实现的数据库连接池管理工具难免有不足之处,因此可以考虑与Spring结合,形成一个DataSource对象来操作数据库,这样比较简单灵活,可靠性也高。

  下面是在上文例子的基础上所改写的,环境如下:

  Spring 2.0

  proxool-0.9.1

  JDK1.5

  1、写Spring的配置文件

       syndsconfig.xml


<?xml version="1.0" encoding="UTF-8"?> 
<beans 
                xmlns="http://www.springframework.org/schema/beans" 
                xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance
                xsi:schemaLocation="http://www.springframework.org/schema/beans 
  http://www.springframework.org/schema/beans/spring-beans-2.0.xsd"> 

        <bean id="dataSource" 
                    class="org.logicalcobwebs.proxool.ProxoolDataSource"> 
                <property name="driver"> 
                        <value>oracle.jdbc.driver.OracleDriver</value> 
                </property> 
                <property name="driverUrl"> 
                        <value>jdbc:oracle:thin:@192.168.104.192:1521:tim</value> 
                </property> 
                <property name="user" value="tim"/> 
                <property name="password" value="tim_8968888"/> 
                <property name="alias" value="Pool_dbname"/> 
                <property name="maximumActiveTime" value="300000"/> 
                <property name="prototypeCount" value="0"/> 
                <property name="maximumConnectionCount" value="50"/> 
                <property name="minimumConnectionCount" value="2"/> 
                <property name="simultaneousBuildThrottle" value="50"/> 
                <property name="houseKeepingTestSql" value="select CURRENT_DATE"/> 
        </bean> 
</beans>

   2、写Spring的上下文环境管理工具


      import org.springframework.context.ApplicationContext;
  import org.springframework.context.support.ClassPathXmlApplicationContext;
  /**
  * Created by IntelliJ IDEA.
  *
  * @author leizhimin 2009-10-15 10:21:38
  */
  public class ApplicationContextUtil {
  private static ApplicationContext applicationContext;
  static {
  if (applicationContext == null)
  applicationContext = rebuildApplicationContext();
  }
  /**
  * 重新构建Spring应用上下文环境
  *
  * @return ApplicationContext
  */
  public static ApplicationContext rebuildApplicationContext() {
  return new ClassPathXmlApplicationContext("/syndsconfig.xml");
  }
  /**
  * 获取Spring应用上下文环境
  *
  * @return
  */
  public static ApplicationContext getApplicationContext() {
  return applicationContext;
  }
  /**
  * 简单的上下文环境测试
  */
  public static void main(String[] args) {
  rebuildApplicationContext();
  if (applicationContext == null) {
  System.out.println("ApplicationContext is null");
  } else {
  System.out.println("ApplicationContext is not null!");
  }
  }
  }

  3、写测试类


      import javax.sql.DataSource;
  import java.sql.Connection;
  import java.sql.ResultSet;
  import java.sql.Statement;
  /**
  * Created by IntelliJ IDEA.
  *
  * @author leizhimin 2009-10-10 17:59:47
  */
  public class TestProxool {
  public static String dburl = "jdbc:oracle:thin:@192.168.104.192:1521:tim";
  public static String user = "tim";
  public static String password = "tim_8968888";
  /**
  * JDBC方式测试
  *
  * @throws Exception
  */
  public static void test1() throws Exception {
  String testsql = "select * from village t where lastid = 346";
  //1:注册驱动类
  Class.forName("oracle.jdbc.driver.OracleDriver");
  //2:创建数据库连接
  // Connection conn = DriverManager.getConnection(dburl, user, password);
  DataSource ds = (DataSource) ApplicationContextUtil.getApplicationContext().getBean("dataSource");
  Connection conn = ds.getConnection();
  //3:创建执行SQL的对象
  Statement stmt = conn.createStatement();
  //4:执行SQL,并获取返回结果
  ResultSet rs = stmt.executeQuery(testsql);
  //5:处理返回结果,此处打印查询结果
  while (rs.next()) {
  System.out.print(rs.getLong("id") + "t");
  System.out.print(rs.getString("name") + "t");
  System.out.println();
  }
  //6:关闭数据库连接
  conn.close();
  }
  public static void main(String[] args) throws Exception {
  test1();
  }
  }

  控制台输出如下:


2009-10-15 12:37:03 - INFO org.springframework.core.CollectionFactory - JDK 1.4+ collections available
  2009-10-15 12:37:03 - INFO org.springframework.beans.factory.xml.XmlBeanDefinitionReader - Loading XML bean definitions from class path resource [syndsconfig.xml]
  2009-10-15 12:37:04 - INFO org.springframework.context.support.ClassPathXmlApplicationContext - Bean factory for application context [org.springframework.context.support.ClassPathXmlApplicationContext;hashCode=9737354]: org.springframework.beans.factory.support.DefaultListableBeanFactory defining beans [dataSource]; root of BeanFactory hierarchy
  2009-10-15 12:37:04 - INFO org.springframework.context.support.ClassPathXmlApplicationContext - 1 beans defined in application context [org.springframework.context.support.ClassPathXmlApplicationContext;hashCode=9737354]
  2009-10-15 12:37:04 - INFO org.springframework.context.support.ClassPathXmlApplicationContext - Unable to locate MessageSource with name 'messageSource': using default [org.springframework.context.support.DelegatingMessageSource@10655dd]
  2009-10-15 12:37:04 - INFO org.springframework.context.support.ClassPathXmlApplicationContext - Unable to locate ApplicationEventMulticaster with name 'applicationEventMulticaster': using default [org.springframework.context.event.SimpleApplicationEventMulticaster@c8f6f8]
  2009-10-15 12:37:04 - INFO org.springframework.beans.factory.support.DefaultListableBeanFactory - Pre-instantiating singletons in factory [org.springframework.beans.factory.support.DefaultListableBeanFactory defining beans [dataSource]; root of BeanFactory hierarchy]
  5411 张一村
  5412 张二村
  5413 张三村
  5414 张四村
  5415 南原村
  5416 辛庄村
  5417 凡村
  5418 西阳村
  5419 人马村
  5420 前关村
  5421 后关村
  5422 赵村
  5423 水淆村
  5424 沟东村
  5425 陈村
  5426 窑店村
  5427 坡头村
  20588 大安头
  20589 涧里村
  20590 人马寨
  20591 白草村
  20592 窑院村
  20593 寺下村
  20594 反上村
  33651 小安头
  33652 五花岭
  33653 东沟
  33654 西沟
  33655 南沟
  33656 王村
  33657 营前
  33659 东阳
  33661 太阳
  33663 丰阳
  33665 宜村
  33667 窑头
  32225 石原村
  32226 庙上村
  32227 庙洼
  38739 丁管营
  38841 涧西
  2009-10-15 12:37:05 - INFO org.logicalcobwebs.proxool.Pool_dbname - Shutting down 'Pool_dbname' pool immediately [Shutdown Hook]
  2009-10-15 12:37:05 - INFO org.logicalcobwebs.proxool.PrototyperController - Stopping Prototyper thread
  2009-10-15 12:37:05 - INFO org.logicalcobwebs.proxool.HouseKeeperController - Stopping HouseKeeper thread
  Process finished with exit code 0

  info日志是log4j输出的。

  当然,可以在Spring中配置多个DataSource,都没问题的。

上一篇:Java 设计模式之 观察者模式(Observer) 下一篇:基础编程:Java快速排序实例详解

评论总数:0 [ 查看全部 ] 网友评论


关于我们隐私版权广告服务友情链接联系我们网站地图