图解Tomcat5.0下配置数据库连接池

本文利用Tomcat5 配置Mysql JDBC 数据库连接池,并给出详细的测试用例。
@author:ZJ 07-11-23
Blog: [url]http://zhangjunhd.blog.51cto.com/[/url]
1 配置说明
Tomcat5.0 
Eclipse3.3+MyEclipse6.0
Mysql5
mysql-connector-java- 3.1.12
2. 新建 web 工程
[1]New Project-Web Project- 取名为 ConnectorPool

[2] mysql-connector-java- 3.1.12 加到 %TOMCAT_HOME%/common/lib 下。
 
[3] 部署测试该工程。
在地址栏输入 [url]http://127.0.0.1:8080/ConnectorPool/[/url] ,将得到默认的 index.jsp 。说明部署成功。
3 .配置 Tomcat Admin
启动 Tomcat, 访问 [url]http://127.0.0.1:8080/admin/[/url] ,输入用户名和密码,即可进入管理界面。用户名和密码可在 %Tomcat _HOME%/conf/ tomcat-users.xml 中找到。
左边的菜单栏时有 Tomcat Server,Resources,User Definition 。注意,不要在 Resource 中配置数据源,这是配置全局的数据源。
进入 Tomcat Server->Service(Catalina)->Host(loalhost) ,就能找到刚才部署的工程 ->Context(/ConnecterPool)

再打开该子树, 打开 Resources->Data Sources 这里就是针对某个具体 Context DataSource 了。

Create New Data Source
JNDI Name:jdbc/testpool // 设置连接池的 JNDI ;
Data Source URL:jdbc:mysql://localhost:3306/conpool  // 数据库连接字串 forpool 为数据库名 ;
JDBC Driver Class: com.mysql.jdbc.Driver   // 数据库连接类 ;
User Name root // 数据库连接时的用户名 ;
Password **** // 数据库连接时的密码 ;
⑥以下默认配置。

  点击 Save ,配置完成 ( 一般不需要重启 tomcat)
4 .配置项目中 /WEB-INF/web.xml
< resource-ref >
    < description > DB Connection </ description >
    < res-ref-name > jdbc/testpool </ res-ref-name >
    < res-type > javax.sql.DataSource </ res-type >
    < res-auth > Container </ res-auth >
    < res-sharing-scope > Shareable </ res-sharing-scope >
</ resource-ref >
5 .配置完成,在 java 文件中使用数据库连接池
import javax.naming.InitialContext;
import javax.sql.DataSource;
InitialContext ctx=new InitialContext();
DataSource dataSource=(DataSource)ctx.lookup("java:comp/env/jdbc/testpool");
Connection con=dataSource.getConnection();
通过这段代码。即可完成数据库连接。下面给出一个具体的测试例。
6 .测试
6.1 测试用的数据库
[1] 数据库名 conpool (对 Data Source URL:jdbc:mysql://localhost:3306/conpool 
[2] 表名 test
[3] 字段名 id [varchar(12) notnull]
[4] 表中数据
id
001
002
003
 
6.2 测试用的代码test.jsp
<%@ page language = "java" contentType = "text/html; charset=GB18030"
    pageEncoding = "GB18030" %>
<%@ page import = "java.sql.*" %>
<%@ page import = "javax.sql.*" %>
<%@ page import = "javax.naming.*" %>
<%@ page session = "false" %>
 
<! DOCTYPE HTML PUBLIC "-//W 3C //DTD HTML 4.01 Transitional//EN" >
< html >
    < head >
       < meta http-equiv = "Content-Type" content = "text/html; charset=GB18030" >
       < title > test for DB connection </ title >
       <%
           out.print( "beginning testing..." );
           out.print( "<br>" );
           DataSource ds = null ;
           try {
              InitialContext ctx = new InitialContext();
              ds = (DataSource) ctx.lookup( "java:comp/env/jdbc/testpool" );
              Connection conn = ds.getConnection();
              Statement stmt = conn.createStatement();
              // test 是数据库已有的表,
              // 这里的数据库是前文提及的 Data Source URL 配置里包含的数据库。
              String strSql = " select * from test" ;
              ResultSet rs = stmt.executeQuery(strSql);
              while (rs.next()) {
                  out.print(rs.getString(1));
              }
              out.print( "<br>" );
              out.print( "end testing." );
           } catch (Exception ex) {
              out.print( "error:" + ex.getMessage());
              ex.printStackTrace();
           }
       %>
    </ head >
    < body >
    </ body >
</ html >
 
6.3 测试结果

7 .查询配置文件
编译后, %TOMCAT_HOME%/conf/Catalina/localhost/ 目录下有个 ConnectorPool.xml ,其内容为:
 <?xml version='1.0' encoding='utf-8'?>
<Context docBase="ConnectorPool" path="/ConnectorPool"
 workDir="work\Catalina\localhost\ConnectorPool">
  <Resource auth="Container" description="DB Connection" name="jdbc/testpool" type="javax.sql.DataSource"/>
  <ResourceParams name="jdbc/testpool">
    <parameter>
      <name>maxWait</name>
      <value>5000</value>
    </parameter>
    <parameter>
      <name>maxActive</name>
      <value>4</value>
    </parameter>
    <parameter>
      <name>password</name>
      <value>root</value>
    </parameter>
    <parameter>
      <name>url</name>
      <value>jdbc:mysql://localhost:3306/conpool</value>
    </parameter>
    <parameter>
      <name>driverClassName</name>
      <value>com.mysql.jdbc.Driver</value>
    </parameter>
    <parameter>
      <name>maxIdle</name>
      <value>2</value>
    </parameter>
    <parameter>
      <name>username</name>
      <value>root</value>
    </parameter>
  </ResourceParams>
</Context>
参数说明:
driveClassName JDBC 驱动类的完整的名称;
maxActive :同时能够从连接池中被分配的可用实例的最大数;
maxIdle :可以同时闲置在连接池中的连接的最大数;
maxWait :最大超时时间,以毫秒计;
password :用户密码;
url :到 JDBC URL 连接;
user :用户名称;
validationQuery :用来查询池中空闲的连接。

你可能感兴趣的:(tomcat,数据库连接池,职场,休闲)