配置tomcat全局c3p0连接池

由于项目中多个应用访问同一个数据库,并部署在同一个tomcat下面,所以没必要每个应用都配置连接池信息,这样可能导致数据库的资源分布不均,所以这种情况完全可以配置一个tomcat的全局连接池,所涉及应用均访问该连接池,让数据库资源得以充分利用。

 

本人使用了c3p0连接池,对c3p0虽然没做过相关性能测试,但是网评还不错,使用的是0.9.1版本,tomcat 使用 7.0.32 

 

配置分为几个步骤:

一、在tomcat的server.xml中配置数据源

找到GlobalNamingResources节点,在里面新增如下内容(其中具体参数意义请参考c3p0官方说明):

 

[html] view plain copy
 
 print?在CODE上查看代码片派生到我的代码片
  1. <Resource name="jdbc/db1" auth="Container"  
  2.         type="com.mchange.v2.c3p0.ComboPooledDataSource"  
  3.     factory="org.apache.naming.factory.BeanFactory"  
  4.     driverClass="oracle.jdbc.driver.OracleDriver"  
  5.         jdbcUrl="jdbc:oracle:thin:@127.0.0.1:1521:orcl"  
  6.         user="scott"  
  7.         password="123456"  
  8.         minPoolSize="10"  
  9.         maxPoolSize="200"  
  10.         maxIdleTime="1800"  
  11.         acquireIncrement="2"  
  12.         maxStatements="0"  
  13.         initialPoolSize="20"  
  14.         idleConnectionTestPeriod="60"  
  15.         acquireRetryAttempts="30"  
  16.         acquireRetryDelay="1000"  
  17.         testConnectionOnCheckin="false"  
  18.         breakAfterAcquireFailure="false"  
  19.         testConnectionOnCheckout="false"/>  



 

二、在tomcat下content.xml中配置数据源对应的JNDI

 

 

[html] view plain copy
 
 print?在CODE上查看代码片派生到我的代码片
  1. <ResourceLink name="jdbc/db1" global="jdbc/db1"  type="javax.sql.DataSource"/>  

三、将c3p0的jar包、数据库驱动包放到tomcat下lib目录里面

 

 

应用访问方式:

一、基于spring进行管理,只需要在spring中配置数据源即可

 

[html] view plain copy
 
 print?在CODE上查看代码片派生到我的代码片
  1. <bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">  
  2.           <property name="jndiName" value="java:comp/env/jdbc/db1" />  
  3. </bean>  


二、写代码直接通过JNDI获取数据源

 

 

[java] view plain copy
 
 print?在CODE上查看代码片派生到我的代码片
    1. try {  
    2.   
    3.   Context ctx = new  InitialContext();  
    4.   
    5.     Context envContext = (Context)ctx.lookup("java:/comp/env");//java:/comp/env为固定路径  
    6.   
    7.     DataSource ds = (DataSource)envContext.lookup("jdbc/db1");//tomcat中设置的数据源  
    8.   
    9.     Connection con = ds.getConnection();  
    10.   
    11.     System.out.println(con);  
    12.   
    13.  } catch (Exception e) {  
    14.   
    15.   // TODO Auto-generated catch block  
    16.   
    17.   e.printStackTrace();  
    18.   
    19.  }  
posted @ 2016-07-12 09:43  华行天下  阅读(489)  评论(0编辑  收藏  举报