mysql jndi c3p0_数据库连接池概念、种类、配置(DBCP\C3P0\JndI与Tomact配置连接池)

一、DBCP 连接:

DBCP 连接池是 Apache 软件基金组织下的一个开源连接池实现。

需要的 java 包

commons - dbcp - 1.2.1.jar //连接池的实现

commons - pool - 1.2.jar //连接池实现的依赖库

commons - collection.jar //连接池实现的依赖库

主要代码:

import org.apache.commons.dbcp.BasicDataSource;

// 数据库池

private static BasicDataSource dataSource = new

BasicDataSource();

public static Connection getConn(){

Connection con = null ;

try {

datasource.setDriverClassName("com.mysql.jdbc.Driver");

datasource.setUrl("jdbc:mysql://localhost/mysql");

datasource.setUsername("root");

datasource.setPassword("root");

datasource.setMaxActive(10);

datasource.setMaxIdle(5);

datasource.setMaxWait(0);

con =

datasource.getConnection();

} catch (Exception e) {

// TODO: handl exception

e.printStackTrace();

}

return con ;

}

二、C3PO 连接:

C3PO 连接池是一个优秀的连接池,推荐使用。

需要的 java 包

c3po0.902.jar

主要代码:

import com.mchange.v2.c3p0.ComboPooledDataSource;

// 数据库池

private static ComboPooledDataSource dataSource = new

ComboPooledDataSource();

public static Connection getConn(){

Connection con = null ;

try {

datasource.setDriverClass("com.mysql.jdbc.Driver");

datasource.setJdbcUrl("jdbc:mysql://localhost/mysql");

datasource.setUser("root");

datasource.setPassword("root");

datasource.setMaxActive(10);

datasource.setMaxIdle(5);

datasource.setMaxWait(0);

con =

datasource.getConnection();

} catch (Exception e) {

// TODO: handl exception

e.printStackTrace();

}

return con ;

}

三、JndI与 Tomact 连接池

此连接池不需要其他的 java 包

1、在 Tomact 的 conf 文件下的 context.xml 中加上如下:

auth="Container"

type="javax.sql.DataSource"

maxActive="100"

maxIdle="30"

maxWait="10000"

username="root"

password="root"

driverClassName="com.mysql.jdbc.Driver"

url="jdbc:mysql://localhost:3306/test?autoReconnect=true"/>

说明:

type: 指数据源类型;

name: 为这个Resource 的名字 "jdbc/mysql" 它与 下一步 在 web.xml 的文件中;

jdbc/mysql

********************** 中的 “ jdbc/mysql ”

名字可以任意取 但用到这个名字时,

********************** 一定要一样,有三个地方要用 :context.xml, web.xml, java

程序中的类中,

和 index.jsp

var="rs" dataSource="jdbc/mysql">

select bid,

bname from books

出现。

maxActive: 表示 dbcp 的最大连接数目,0 为不受限制;

maxIdle: 表示 dbcp 空闲时的数据库连接的最大数目;

maxWait: 表示 dbcp 中的数据库接处于空闲状态的最长时间,0 为不受制。

username: 数据库用户名;

password: 数据库登录密码;

driverClassName: 指数据库的 jdbc 驱动程序

url :中有个 test 它是 mysql 中的一个数据库的名字

2、web.xml configuration

DB

Connection

jdbc/mysql

javax.sql.DataSource

Container

3、测试:

在 mysql 数据库中有个 test 数据库

test 中有表如下

create table books(bid int , bname varchar(20))

This is my

JSP page. this is test JNDI

datasource

var="rs" dataSource="jdbc/mysql">

select bid, bname from

books

var="row" items="${rs.rows}">

bid:${row.bid}

bname:${row.bname}

java 程序测试:

// 无需导入外部包

import java.sql.Connection;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;

import javax.naming.InitialContext;

import javax.naming.NamingException;

import javax.sql.DataSource;

public Connection getConn() {

Connection conn = null ;

try {

InitialContext ctx = new

InitialContext();

DataSource dataSource =

(DataSource) ctx.lookup("java:comp/env/jdbc/mysql");

conn =

dataSource.getConnection();

String sql = "select * from

books" ;

PreparedStatement ps =

conn.prepareStatement(sql);

ResultSet rs =

ps.executeQuery();

while(rs.next()){

System.out.println (rs.getInt(1));

}

} catch (SQLException e) {

// TODO

Auto-generated catch block

e.printStackTrace();

} catch (NamingException e) {

// TODO Auto-generated catch

block

e.printStackTrace();

}

return conn;

}

---------- 说明:这里的 java:comp/env 是前缀,java 语言规范,后面是你在 web.xml

jdbc/mysql

的名字,

这个java 程序 不能直接测试, 因为

context.xml、 web.xml 都是Tomcat 中的,

服务没开,无法读取 文件信息。

用时:可以直接将 context.xml 放到工程的 META-INF\ 目录下。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值