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

来源:互联网 发布:淘宝卖家双11报名入口 编辑:程序博客网 时间:2024/06/05 19:01

首先修改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这个连接池数据源。

原创粉丝点击