首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

TomCat 6.X - c3p0 - 连接池的配备

2012-10-09 
TomCat 6.X -- c3p0 -- 连接池的配置声明:如果你的tomcat版本非5.5以上可能以下配置无法使用,请另寻配置方

TomCat 6.X -- c3p0 -- 连接池的配置
声明:如果你的tomcat版本非5.5以上可能以下配置无法使用,请另寻配置方法

一 -- 在tomcat_home\common\lib下放入jdbc的驱动程序,额外说一下,如果是使用sql server的话,有至少两个驱动可以选择,一个是微软提供的,另一个是 jtds,比微软的要好很多,推荐使用

二 -- 配置文件,tomcat 不同的版本配置文件略有不同,下面以tomcat5.5.*为例,如果配置不正确会出现javax.naming.NameNotFoundException: Name is not bound in this Context 错误


方式一、全局数据库连接池(Mysql数据库)
1、通过管理界面配置连接池,或者直接在tomcat\conf\server.xml的GlobalNamingResources中增加

<Resource auth="Container" description="DB Connection" drivermaxPoolSize="10" minPoolSize="2" acquireIncrement="2" name="jdbc/connPool" user="root"password="111111"factory="org.apache.naming.factory.BeanFactory" type="com.mchange.v2.c3p0.ComboPooledDataSource" jdbcUrl="[color=red]jdbc:mysql://localhost:3306/haixu?autoReconnect=true" />



2、在tomcat\webapps\myapp\META-INF\context.xml的Context中增加:

<ResourceLink name="jdbc/connPool" global="jdbc/connPool" type="javax.sql.DataSource"/>
这样就可以了。


方式二、全局数据库连接池
1、同上
2、在tomcat\conf\context.xml的Context中增加:
<ResourceLink global="jdbc/mydb" name="jdbc/mydb" type="javax.sql.DataSource"/>



方式三、局部数据库连接池(mssql数据库)
只需在tomcat\webapps\myapps\META-INF\context.xml的Context中增加:
<Resource name="jdbc/mydb" type="javax.sql.DataSource" password="mypwd" driverClassName="com.microsoft.jdbc.sqlserver.SQLServerDriver" maxIdle="2" maxWait="5000" validati username="sa" url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=mydb" maxActive="4"/>



参数说明:
driveClassName:JDBC驱动类的完整的名称;
maxActive:同时能够从连接池中被分配的可用实例的最大数;
maxIdle:可以同时闲置在连接池中的连接的最大数;
maxWait:最大超时时间,以毫秒计;
password:用户密码;
url:到JDBC的URL连接;
user:用户名称;
validationQuery:用来查询池中空闲的连接。
以上三种方式在tomcat 5.5.4下都可以。另外,sql server的jdbc driver是从微软网站上下载的sql server jdbc (sp3)。

---------------------------------------

总结一下我的配置步骤:

(1)有三个文件需要配置

1>\Tomcat 6.0\conf\server.xml

2>\Tomcat 6.0\conf\context.xml

3>项目中\WebRoot\WEB-INF\web.xml

(2)配置的代码

1> 在tomcat\conf\server.xml的GlobalNamingResources中增加:
<Resource auth="Container"      description="DB Connection"      driver     maxPoolSize="10"      minPoolSize="2"      acquireIncrement="2"      name="jdbc/connPool" <!--这个命名可以随便指定 -->     user="用户名"      password="密码"      factory="org.apache.naming.factory.BeanFactory"      type="com.mchange.v2.c3p0.ComboPooledDataSource"      jdbcUrl="jdbc:mysql://localhost:3306/数据库名?autoReconnect=true" />


2> 在tomcat\conf\context.xml的Context中增加: 

<ResourceLink name="jdbc/connPool" global="jdbc/connPool" type="javax.sql.DataSource"/>


3> 在web.xml中增加:

<resource-ref>     <description>DB Connection</description>     <res-ref-name>jdbc/connPool</res-ref-name>     <res-type>javax.sql.DataSource</res-type>     <res-auth>Container</res-auth></resource-ref>


(3)jsp测试页面

<%@page language="java" import="java.util.*,java.sql.*,javax.naming.*,javax.sql.*" pageEncoding="GB2312"%><%@page import="com.mchange.v2.c3p0.*"%><%@page import="java.sql.Connection"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head>        <title>My JSP 'mysqlTest.jsp' starting page</title></head><body>    Mysql数据库测试<br><br><br>    <%    Connection conn=null;      try{      InitialContext ctx = new InitialContext();       DataSource ds = (DataSource) ctx.lookup("java:comp/env/jdbc/connPool");       conn=ds.getConnection();}catch(NamingException ex){   ex.printStackTrace();}    String sql="select * from user";PreparedStatement ps=conn.prepareStatement(sql);ResultSet rs=ps.executeQuery();    while(rs.next()){   %>   字段1:<%=rs.getString(1)%> 字段2:<%=rs.getString(2)%><br>   <%}    if(rs!=null)    {        rs.close();        rs=null;    }    if(ps!=null)    {        ps.close();        ps=null;    }    if(conn!=null)    {        conn.close();        conn=null;    }    %></body></html>


---------------

测试通过!

热点排行