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