配置java连接池 tomcat方式、Spring方式配置的比较(修正版)

一、首先配置连接池
1、tomcat下配置连接池
  *>在tomcat下的context.xml配置连接池代码    

< Resource
      
name ="jdbc/sqlserver"                   //连接池名称
      type
="javax.sql.DataSource"   
      password
="syl6413"
         driverClassName
="com.microsoft.sqlserver.jdbc.SQLServerDriver"
      maxIdle
="5"
      maxWait
="5000"
      username
="sa"
      url
="jdbc:sqlserver://192.168.0.9:1433; DatabaseName=disasterSystem"
      maxActive
="10" />

Resource标签中的每个属性的含义在下表中表示:


  • name="jdbc/sqlserver"   创建一个可以从Context(程序的逻辑名)访问的JNDI data source。 java:comp/env是所有的Tomcat下的Context的前缀(完整路径 java:comp/env/jdbc/sqlserver)。Web应用程序可以使用这个Context来lookup the data source。
  • auth="Container"   auth属性是用来指定是由Tomcat代替应用程序执行验证任务(auth="Container") 或者由应用程序自身进行验证(auth="Application"

  • type="javax.sql.DataSource"    type属性用来指定lookup返回的数据类型为"javax.sql.DataSource",它同 时也表明Tomcat容器将代替应用程序执行登录数据库的身份验证任务。

  • maxActive   在连接池中active connection的最大数目,0代表无数。

  • maxIdle   在连接池中空闲连接数目的上限,一旦达到这个限制,Tomcat将开始清理这些 连接。-1代表无限。

  • maxWait    Tomcat Manager  等待数据库响应的最长时间限制,一旦超过了这个限制, Manager将返回一个异常。-1表示可以永远等待。

  • username=“Test”   数据库账户用户名

  • password=“Test”   数据库账户密码

  • driverClassName=""   数据库驱动,Tomcat/DBCP根据这个属性来加载相应的驱动

  • url=""   JDBC url

  

  *>tomcat连接池中配置web.xml代码

<!--  DataSource  -->
< resource-ref >
        
< description > SQLServer2005 Datasource disasterSystem </ description >
         
< res-ref-name > jdbc/sqlserver </ res-ref-name >
        
< res-type > javax.sql.DataSource </ res-type >
        
< res-auth > Container </ res-auth >
</ resource-ref >
    *>在Spring配置tomcat连接池的JNDI代码
< bean  id ="dataSource"  class ="org.springframework.jndi.JndiObjectFactoryBean" >
         
< property  name ="jndiName"  value ="java:comp/env/jdbc/sqlserver" >
      
</ property >
</ bean >
    自此tomcat连接池已配置完毕,若不用Spring管理连接池,也可以不配Spring,这样即可以在程序中使用tomcat连接池了.若使用Spring来统一管理连接池,也就是统一SessionFactory,配置方式如下:    
< bean  id ="sessionFactory"
        class
="org.springframework.orm.hibernate3.LocalSessionFactoryBean" >

        
< property  name ="dataSource" >
            
< ref  bean ="dataSource"   />
        
</ property >
        
< property  name ="hibernateProperties" >
            
< props >
                
< prop  key ="hibernate.dialect" >
                    org.hibernate.dialect.SQLServerDialect
                
</ prop >
                
< prop  key ="hibernate.connection.autocommit" > true </ prop >
                
<!--  显示sql语句  -->
                
< prop  key ="hibernate.show_sql" > true </ prop >
                
<!--  解决提交乱码问题  -->
                
< prop  key ="connection.useUnicode" > true </ prop >
                
< prop  key ="connection.characterEncoding" > utf-8 </ prop >
                
<!--  格式化sql语句  -->
                
< prop  key ="hibernate.format_sql" > true </ prop >
                
< prop  key ="hibernate.order_updates" > true </ prop >
                
<!--  事务自动管理  -->
                
< prop  key ="hibernate.connection.release_mode" >
                    after_transaction
                
</ prop >
            
</ props >
        
</ property >

        
< property  name ="mappingResources" >
            
< list ></ list >
        
</ property >
    
</ bean >
 2、tomcat下配置连接池
    Spring不通过用tomcat中配置的JNDI来连接,但是它也是通过用commons.dbcp.jar连接池来管理的,也可以通过其他的开源连接池工具如:C3P0等。配置又分为两种,具体代码如下:
    *>一种是直接配置applicationContext.xml    
< bean  id ="dataSource"  class ="org.apache.commons.dbcp.BasicDataSource" >
        
< property  name ="driverClassName"  value ="oracle.jdbc.driver.OracleDriver" >
        
</ property >
        
< property  name ="url"  value ="jdbc:oracle:thin:@localhost:1521:SJY" >
        
</ property >
        
< property  name ="username"  value ="**" ></ property >
        
< property  name ="password"  value ="**" ></ property >
</ bean >
    *>另一种是通过perportise配置文件:datasource.properties再通过applicationContext.xml得到
        datasource.properties代码:        
datasource.driverClassName = com.microsoft.sqlserver.jdbc.SQLServerDriver
datasource.url
= jdbc:sqlserver: // 192.168.0.9:1433;DatabaseName=disasterSystem
datasource.username = sa
datasource.password
= syl6413
datasource.maxActive
= 10
datasource.maxIdle
= 5
datasource.maxWait
= 5000
datasource.defaultAutoCommit
= true
        applicationContext.xml代码:             
< bean  id ="placeholderConfig"  class ="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer" >
        
< property  name ="location" >
        
< value > classpath:/datasource.properties </ value >
        
</ property >
    
</ bean >
    
< bean  id ="dataSource"  class ="org.apache.commons.dbcp.BasicDataSource" >
        
< property  name ="driverClassName" >
        
< value > ${datasource.driverClassName} </ value >
        
</ property >
        
< property  name ="url" >
         
< value > ${datasource.url} </ value >
            
</ property >
            
< property  name ="username" >
                 
< value > ${datasource.username} </ value >
            
</ property >
            
< property  name ="password" >
                 
< value > ${datasource.password} </ value >
            
</ property >
            
< property  name ="maxActive" >
                 
< value > ${datasource.maxActive} </ value >
            
</ property >
            
< property  name ="maxIdle" >
                 
< value > ${datasource.maxIdle} </ value >
            
</ property >
            
< property  name ="maxWait" >
        
< value > ${datasource.maxWait} </ value >
        
</ property >
            
< property  name ="defaultAutoCommit" >
               
< value > ${datasource.defaultAutoCommit} </ value >
            
</ property >
    
</ bean >

二、测试配置连接池
1、测试tomcat连接池
    *>不用Spring管理的tomcat连接池测试代码(只能在jsp里面测试):            
Context initContext  =   new  InitialContext();
    Context envContext 
= (Context)initContext.lookup( " java:comp/env " );
    DataSource ds 
=  (DataSource) envContext.lookup( " jdbc/sqlserver " );
    Connection con 
=  ds.getConnection();
    
if  (con  !=   null ) {
            System.out.println(
" 已经得到连接 " );
    } 
else  {
        System.out.println(
" 没有得到连接 " );
    }
    *>用Spring管理tomcat连接池的测试代码:    
  // ApplicationContext ctx = new FileSystemXmlApplicationContext("src/applicationContext.xml"); // 两种得到bean工厂的代码,任选其一
    ApplicationContext ctx  =   new  ClassPathXmlApplicationContext( " applicationContext.xml " );
    DataSource ds 
=  (DataSource) ctx.getBean( " dataSource " );
    Connection con 
=  ds.getConnection();
    
if (con  !=   null ){
        System.out.println(
" 连接成功 " );
    }
else {
        System.out.println(
" 连接不成功 " );
    }
2.测试Spring连接池
    其实测试Spring连接池的代码和上面Spring管理tomcat连接池测试代码一样:    
// ApplicationContext ctx = new FileSystemXmlApplicationContext("src/applicationContext.xml"); // 两种得到bean工厂的代码,任选其一
    ApplicationContext ctx  =   new  ClassPathXmlApplicationContext( " applicationContext.xml " );
    DataSource ds 
=  (DataSource) ctx.getBean( " dataSource " );
    Connection con 
=  ds.getConnection();
    
if (con  !=   null ){
        System.out.println(
" 连接成功 " );
    }
else {
        System.out.println(
" 连接不成功 " );
    }

三、两种连接池比较
    tomcat连接池因为配置tomcat下面的,所有最好用jsp或者maven(模拟窗口测试方法)来测试,但是跟我们的测试带了很多的不变啊,若能在普通java application或者junit方法测试就不容易,也不知道杂写,若高手知道请指教
    而Spring连接池与HTTP协议无关,可直接通过java application或junit直接使用,大大地方便了测试和使用.
    在效率方面,我倒没认真测试有什么不同,但是我觉得,都是用的第三方连接池管理,应该差别不大,有不同见解的朋友请指出来,共同学习!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值