局部连接池配置(在项目内部配置)
在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配置。