Chinaunix首页 | 论坛 | 博客
  • 博客访问: 117901
  • 博文数量: 26
  • 博客积分: 2000
  • 博客等级: 大尉
  • 技术积分: 335
  • 用 户 组: 普通用户
  • 注册时间: 2009-04-26 22:27
文章分类

全部博文(26)

文章存档

2011年(1)

2009年(25)

我的朋友

分类: 系统运维

2009-04-26 23:19:28

----------------------------------------------------
本文系本站原创,欢迎转载!
转载请注明出处:
http://dreamlcr.cublog.cn/
----------------------------------------------------

本文主要是介绍在Tomcat 6.0中连接池和数据源的使用,通过连接池可以提升系统的性能,在开发中较为常用。

第一种配置方法:适用于B/S模式。

第一:将jdbc驱动的jar包,如:MySQL、Oracle的jdbc驱动,拷贝到tomcat中lib下。
注意:必须是tomcat中lib下,如:D:\Tomcat 6.0\lib,但不能是项目中的WEB-INF/lib下,因为这时tomcat解析不到此类目录。

第二:这里有两种方法:
1、在tomcat中conf下的context.xml文件中之间加入以下部分:
    name="jdbc/dream"
    auth="Container"
    type="javax.sql.DataSource"
    factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory"
    driverClassName="com.mysql.jdbc.Driver"
    url="jdbc:mysql://localhost:3306/dream"
    username="root"
    password="lcr"
    maxActive="100"
    maxIdle="10"
    maxWait="10000" />
2、在tomcat中conf下的server.xml文件中之间加入以下部分:

            name="jdbc/dream"
        auth="Container"
        type="javax.sql.DataSource"
        factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory"
        driverClassName="com.mysql.jdbc.Driver"
        url="jdbc:mysql://localhost:3306/dream"
        username="root"
        password="lcr"
        maxActive="100"
        maxIdle="10"
        maxWait="10000" />

注意:这两种方法是有区别的。
第一种方法是针对整体全局的,即对于tomcat中webapps下的所有项目都是有效的,但是对于外接服务器方式是不适用的;
第二种方法是针对部分局部的,即只是对于中所示的目录有效,而对于其它任何目录都是不适用的。

第三:在项目中WEB-INF/web.xml文件中加入这样的配置:

    testConnectionPool
    jdbc/dream
    javax.sql.DataSource
    Container

当然,这一部分也是可以省略的,有与没有都是可以的。

第四:这时候就可以用了。
Connection conn = null;
try {
    // 初始化查找命名空间
    Context ctx = new InitialContext();
    // 查找到 DataSource
    DataSource ds = (DataSource) ctx.lookup("java:comp/env/jdbc/dream");
    // 取得一个数据库连接
    conn = ds.getConnection();
    System.out.println(conn);
} catch (Exception e) {
    System.out.println(e);
    // e.printStackTrace();
}

建议和说明:
这种连接池,一般不推荐用,因为我们开发的成品大都运行在租用的服务器上,所以我们便改不了tomcat服务器的配置了,再说容器也不一定是tomcat,比如:resin和jboss等等,怎么办?而且这种连接池还有些限制,只可以在web下面用!
鉴于此,我们经常用外部包来实现连接池的功能。

第二种配置方法:适用于C/S和B/S模式

第一:jdbc驱动包、commons-dbcp-1.2.2.jar 和commons-pool-1.3.jar。

第二:在src下新建一个Properties文件:dbcp.properties,在里面写下这样的配置:
driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/dream
username=root
password=lcr
defaultAutoCommit=true
initialSize=10
maxActive=100
maxIdle=10
maxWait=10000
#validationQuery=select count(*) as count from person

第三:这时候就可以用了。
import java.sql.Connection;
import java.util.Properties;
import org.apache.commons.dbcp.BasicDataSource;
import org.apache.commons.dbcp.BasicDataSourceFactory;

public class DBCPProvider {
    private static String PROPERTIES_FILE = "/dbcp.properties";
    private BasicDataSource ds = null;
    Connection conn = null;
    private DBCPProvider() {
        Properties prop = new Properties();
        try {
            prop.load(this.getClass().getResourceAsStream(PROPERTIES_FILE));
            ds = (BasicDataSource) BasicDataSourceFactory .createDataSource(prop);
            conn = ds.getConnection();
            System.out.println(conn);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    public static void main(String agrs[]) {
        new DBCPProvider();
    }
}

这种配置方法比起tomcat自带的连接池是不是好用多了啊?呵呵。而且它的优点是B/S和C/S都可以用。

 

阅读(1859) | 评论(0) | 转发(0) |
0

上一篇:没有了

下一篇:小模式与大模式

给主人留下些什么吧!~~