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" />
<ResourceLink name="jdbc/connPool" global="jdbc/connPool" type="javax.sql.DataSource"/>这样就可以了。
<ResourceLink global="jdbc/mydb" name="jdbc/mydb" type="javax.sql.DataSource"/>
<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"/>
<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" />
<ResourceLink name="jdbc/connPool" global="jdbc/connPool" type="javax.sql.DataSource"/>
<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>
<%@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>