您的位置:首页 > 数据库 > Oracle

基于Tomcat和Oracle的连接池技术的Jdbc连接

2013-10-07 16:27 162 查看
首先修改Tomcat的安装目录下子目录conf包中的context.xml文件,进行配置连接池。如下:

<Resource
driverClassName="oracle.jdbc.OracleDriver"
url="jdbc:oracle:thin:@127.0.0.1:1521:orcl"
username="bb"
password="bb"
name="jdbc/oracle"
type="javax.sql.DataSource"
auth="Container"
maxActive="10"
/>


其中,dirverClassName :
oracle的驱动类名

    url
: 数据库的url

    username
: 数据库的用户名

    password
: 数据库当前用户名的密码

    name
: 当前连接池的名称,固定写法

    type
: 当前连接池的类型,是数据源类型

    auth
: 当前连接池的拥有者是Container(容器)

    maxActive
: 最大活跃连接

配置好tomcat的context.xml后,创建JdbcUtil类:

package util;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.sql.DataSource;

public class JdbcUtil {
private static final ThreadLocal<Connection> tt = new ThreadLocal<Connection>();

public static Connection getConnection() throws Exception{
Connection conn = tt.get();

if(conn == null) {
Context context = new InitialContext();
DataSource ds = (DataSource)context.lookup("java:comp/env/jdbc/oracle");
conn = ds.getConnection();
tt.set(conn);
}

return conn;
}

public static void close(ResultSet rs,Statement stmt,Connection conn) throws Exception{
if(rs != null) try { rs.close(); } catch(Exception e) {}
if(stmt != null) try { stmt.close(); } catch(Exception e) {}
if(conn != null) try { conn.close(); tt.remove(); } catch(Exception e) {}
}
}


此处用到了线程ThreadLocal,ThreadLocal中有一个存储空间,如果从当前线程获取不到conn,则创建新的conn,如果在当前线程能够获取有效的conn,则不在重新创建。其中DataSource是数据源,通过数据源获取连接,而数据源是通过context对象在容器中找jdbc/oracle这个连接池数据源。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  jdbc oracle 技术 数据库