tomcat环境下的mysql数据库连接池配置方法

本文详细介绍了在Tomcat环境下配置MySQL数据库连接池的步骤,包括将mysql-connector-java-3.1.12-bin.jar放入common/lib目录,修改server.xml配置文件,创建web.xml文件以及编写测试页面来验证连接池的正确性。通过这个过程,读者可以了解如何设置最大连接数、等待超时、用户名、密码等关键参数。

许多朋友在下tomcat开发jsp应用的时候,一个重要的环节就是要配置好数据库的连接池。笔者在实际的应用中也遇到这样那样的问题,前几天重装了系统后,以前的用javabean的连接方式连接不成功了。后来采用了连接池的方式连接。在连接的过程中遇到不少挫折,也有不少收获,在此写给大家,希望能让数据库连不上的朋友少走弯路。

我先说明我的应用环境:winxp sp2+tomcat 5.0+mysql 5.0.13+j2dk1.4.2+mysql-connector-java-3.1.12

先在mysql上建个测试用的数据库:mysql>create database dbtest ;

                                                              mysq>use dbtest ;

                                                              mysql>create table test (message  varchar (30)) ;

                                                              mysql>insert into test  values("hello,you are connected!");

 

下面跟着我来做:

一、将mysql-connector-java-3.1.12中的mysql-connector-java-3.1.12-bin.jar拷贝到/common/lib目录下

二、在tomcat的安装目录下:/conf/server.xml文件中加入以下代码:

<Context path="/test" docBase="G:/test" debug="5" reloadable="true" crossContext="true">

  <Logger className="org.apache.catalina.logger.FileLogger" prefix="localhost_DBTest_log." suffix=".txt" timestamp="true"/>
  <Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"/>

  <ResourceParams name="jdbc/mysql">
    <parameter>
      <name>factory</name>
      <value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
  </parameter>

    <!-- Maximum number of dB connections in pool. Make sure you
         configure your mysqld max_connections large enough to handle
         all of your db connections. Set to 0 for no limit.
         -->
    <parameter>
      <name>maxActive</name>
      <value>100</value>
    </parameter>

    <!-- Maximum number of idle dB connections to retain in pool.
         Set to 0 for no limit.
         -->
    <parameter>
      <name>maxIdle</name>
      <value>30</value>
    </parameter>

    <!-- Maximum time to wait for a dB connection to become available
         in ms, in this example 10 seconds. An Exception is thrown if
         this timeout is exceeded.  Set to -1 to wait indefinitely.
         -->
    <parameter>
      <name>maxWait</name>
      <value>10000</value>
    </parameter>

    <!-- MySQL dB username and password for dB connections  -->
    <parameter>
     <name>username</name>
     <value>your mysql user name</value>
    </parameter>
    <parameter>
     <name>password</name>
     <value>your mysql  password</value>
    </parameter>

    <!-- Class name for mm.mysql JDBC driver -->
    <parameter>
       <name>driverClassName</name>
       <value>com.mysql.jdbc.Driver</value>
    </parameter>

    <!-- The JDBC connection url for connecting to your MySQL dB.
         The autoReconnect=true argument to the url makes sure that the
         mm.mysql JDBC Driver will automatically reconnect if mysqld closed the
         connection.  mysqld by default closes idle connections after 8 hours.
         -->
    <parameter>
      <name>url</name>
      <value>jdbc:mysql://localhost:3306/dbtest?autoReconnect=true</value>
    </parameter>
  </ResourceParams>
</Context>

注意:<Context path="/test" docBase="G:/test" debug="5" reloadable="true" crossContext="true">说明,你在/webapps下要新建一个文件夹名:test 而你的实际的应用程序应放在G:/test下。your mysql user name表示你登录mysql的用户名,而your mysql  password是你的mysql密码。

三、在G:/test下新建一个WEB-INF文件夹,在里面新建web.xml文件,然后将以下代码复制进去

<?xml version="1.0" encoding="Shift_JIS"?>

<!DOCTYPE web-app
  PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
  "http://java.sun.com/dtd/web-app_2_3.dtd">

<web-app>

<description>MySQL link pool</description>
 <resource-ref>
     <description>DB Connection</description>
     <res-ref-name>jdbc/mysql</res-ref-name>
     <res-type>javax.sql.DataSource</res-type>
     <res-auth>Container</res-auth>
 </resource-ref>

</web-app>

四、测试你的连接

在G:/test下新建test..jsp文件,然后将以下代码拷贝进去

<%@ page contentType="text/html; charset=8859_1"%>
<%@ page import="java.sql.*,javax.sql.DataSource,javax.naming.*"%>
<html>
<head><title>test.jsp</title></head>
<body bgcolor="#ffffff">
<h1>test Tomcat</h1>
<%
try
{
Context initCtx=new InitialContext();
DataSource ds = (DataSource)initCtx.lookup("java:comp/env/jdbc/mysql");
Connection conn=ds.getConnection();
out.println("data from database:<br>");
Statement stmt=conn.createStatement();
ResultSet rs =stmt.executeQuery("select * from test");
while(rs.next())
{

out.println(rs.getString("messeage"));
}
rs.close();
stmt.close();
}
catch(Exception e)
{

e.printStackTrace();
}
%>
</body>
</html>

然后在浏览器地址栏中输入:http://localhost:8080/test/test.jsp或者http://localhost/test/test.jsp这要看你的端口而定了。

如果你看到:data from database:

                        hello,you are connected!

恭喜你,成功了!

如果还不清楚,可以qq我,一起研究!qq149028264 或到我的网站www.ourjava.net更同讨论。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值