tomcat dbcp连接池和c3p0连接池配置

本文介绍了如何在Tomcat中配置DBCP和C3P0两种数据库连接池。通过在web-inf的context.xml文件中设置详细参数,包括最大活动连接数、最小空闲连接数、超时时间等,以实现对Oracle和SQL Server数据库的连接管理。同时展示了两种连接池的配置示例。

局部连接池配置(在项目内部配置)

 

在webroot根目录下的web-inf 文件夹下建立一个文件context.xml     内容如下:

 

<?xml version="1.0" encoding="UTF-8"?>   

<Context reloadable="true" crossContext="true"> 

<!--  dbcp 连接池配置   此处配置了两个连接池

<Resource    

name="jdbc/OracleDB"    

auth="Container"    

type="javax.sql.DataSource"   

driverClassName="oracle.jdbc.driver.OracleDriver"    

url="jdbc:oracle:thin:@10.230.232.110:1521:orcl"   

maxActive="200"    

maxldle="10"    

maxWait="10000"   

username="123"   

password="123" 

testOnBorrow="true" testWhileIdle="true" validationQuery="select 1 from dual"   

/>   

 

<Resource    

name="jdbc/sqlDB"    

auth="Container"    

type="javax.sql.DataSource"   

driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver"    

url="jdbc:sqlserver://123.15.54.111:2002"   

maxActive="200"    

maxldle="10"    

maxWait="10000"   

username="123"   

password="123"   

/>  

-->  

 

<!--以下是 c3p0   连接池配置       此处配置了两个连接池--> 

 

<Resource name="jdbc/OracleDB"

auth="Container" 

     description="DB Connection" 

     driverClass="oracle.jdbc.driver.OracleDriver" 

     maxPoolSize="200" 

     minPoolSize="10" 

     acquireIncrement="3" 

     jdbcUrl="jdbc:oracle:thin:@10.230.232.110:1521:orcl"

     user="123" 

     password="123" 

     factory="org.apache.naming.factory.BeanFactory" 

     type="com.mchange.v2.c3p0.ComboPooledDataSource" 

      />

 <Resource name="jdbc/sqlDB"

auth="Container" 

     description="DB Connection" 

     driverClass="com.microsoft.sqlserver.jdbc.SQLServerDriver" 

     maxPoolSize="200" 

     minPoolSize="10" 

     acquireIncrement="3" 

     jdbcUrl="jdbc:sqlserver://123.15.54.111:2002"

     user="123" 

     password="123" 

     factory="org.apache.naming.factory.BeanFactory" 

     type="com.mchange.v2.c3p0.ComboPooledDataSource" 

      />

 

</Context>  

下面是写一个类文件调用生成数据库连接  ConnJDBC.java
package com.hnepri.ptmcgt.commons;
import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.net.URLDecoder;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;
public class ConnJDBC {
//
// private static Connection getConnection() throws ClassNotFoundException {
// connection = getOracleConn();
// return connection;
// }
//  
//
// private static void closeConnection(ResultSet rs, Statement st)
// throws SQLException {
// if (rs != null)
// rs.close();
// if (st != null)
// st.close();
// if (connection != null)
// connection.close();
// }
 
public  static Connection getOracleConn() throws ClassNotFoundException
{
Connection conn = null;
DataSource ds = null;   
try{       
Context initCtx = new InitialContext();   
   ds =(DataSource)initCtx.lookup("java:comp/env/jdbc/OracleDB");   
  if(ds!=null){   
       System.out.println("已经获得DataSource!");    
       conn = ds.getConnection();
       System.out.println("得到连接成功");   
  }
} catch(SQLException e){      
e.printStackTrace();
} catch (NamingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return conn;
}
 
public  static Connection getSqlConn() throws ClassNotFoundException
{
Connection conn = null;
DataSource ds = null;   
try{       
Context initCtx = new InitialContext();   
   ds =(DataSource)initCtx.lookup("java:comp/env/jdbc/sqlDB");   
  if(ds!=null){   
       System.out.println("已经获得DataSource!");    
       conn = ds.getConnection();
       System.out.println("得到连接成功");   
  }
} catch(SQLException e){      
e.printStackTrace();
} catch (NamingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return conn;
}
 
public static void main(String[] arg) throws ClassNotFoundException, InstantiationException, IllegalAccessException, SQLException
{
//   Class.forName(Property.getProperty("sqlDB.driver")).newInstance();   
// String url=Property.getProperty("sqlDB.url");  
// String user=Property.getProperty("sqlDB.userName");  
// String password=Property.getProperty("sqlDB.userPass"); 
// Connection conn= DriverManager.getConnection(url,user,password);  
getSqlConn();
}
}
声明:使用dbcp连接池非常不稳定,经常出现连接错误。如得不到连接了;空对象等待连接超时了等等。建议使用c3p0配置。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值