服务器 频道

tomcat5中配置mysql数据源

  【IT168 服务器学院】前几天为了在Tomcat5中配置MySql的数据源,在网上到处搜刮资料,最终仍未能配置成功。迫不得已,花了些银子买本书,看完后感觉收获很大。再来配置数据源简直就是小菜一碟了,现将配置过程详述如下,一来作为版书的资料,二来希望为大家提供些帮助。

  一、配置环境变量:

  mysql驱动程序可从www.mysql.com官方网站下载

  路径:tomcat5在d:myweb omcat5;mysql在C:Program FilesMySQLMySQL Server 4.1

  Path(在原来的基础上加上):d:myweb omcat5in;d:mywebjdk1.4;d:mywebjdk1.4in;

  d:myweb omcat5commonlibservlet-api.jar;C:Program FilesMySQLMySQL Server 4.1in

  CLASSPATH:d:myweb omcat5commonlibservlet-api.jar;d:myweb omcat5commonlibjsp-api.jar

  JAVA_HOME:d:mywebjdk1.4

  CATALINA_HOME:d:myweb omcat5

  二、建立测试数据库

  在mysql中建立一个forumdb数据库,同时创建一个表member如下:

  create database forumdb;

  create table member

  (

  id int,

  name varchar(6)

  );

  然后插入两条测试数据如下:

  insert into member values(1,"zhang");

  insert into member values(2,"wang");

  至此,数据库准备完毕。

  三、配置server.xml

  注:我的web在d:mywebmyapps

  首先要将mysql的驱动程序放到d:myweb omcat5commonlib下面,一定要放".jar"的文件,如是".zip"的文件直接改为.jar即可。

  用文本编辑器打开D: omcat5confserver.xml,找到</host>结束标志,然后在之前加上如下语句:

  <Context path="/myapps" docBase="d:mywebmyapps" debug="0"
  reloadable="true" >

    <Resource name="jdbc/DBConnection"
                 auth="Container"
                 type="javax.sql.DataSource" />

    <ResourceParams name="jdbc/DBConnection">
      <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>10</value>
      </parameter>

      <!-- Maximum number of idle dB connections to retain in pool.
           Set to 0 for no limit.
           -->
      <parameter>
        <name>maxIdle</name>
        <value>3</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.
          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>root</value>
      </parameter>
      <parameter>
       <name>password</name>
       <value>1234</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/forumdb?autoReconnect=true</value>
      </parameter>
    </ResourceParams>

  </Context>
  再次提醒:一定要放在</host>之前!

  四、配置web.xml

  web.xml位于d:mywebmyappsWEB-INF下,也即是你的WEB里的web.xml。

  同样用文本编辑器打开web.xml,然后加入如下语句(在<web-app>与</web-app>之间)

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

  五、编写测试jsp page。

  在d:mywebmyapps下编写一个dbtest.jsp,代码如下:

  <%@ page import="java.io.*,java.util.*,java.sql.*,javax.sql.*,javax.naming.*"%>
  <%@ page contentType="text/html;charset=GB2312"%>
  <html>
  <head><title>DataSourse Connection Test</title></head>
  <body>
  <%
   try{
    java.sql.Connection con;
    Statement stmt;
    ResultSet rs;
   
    Context ctx = new InitialContext();
    DataSource ds=(DataSource)ctx.lookup("java:comp/env/jdbc/DBConnection");
    con=ds.getConnection();
   
    stmt=con.createStatement();
    rs=stmt.executeQuery("select * from member");
  while(rs.next()){
    out.print(rs.getInt(1);

  out.print(rs.getString(2));
  }
    rs.close();
    stmt.close();
    con.close();
   
   }catch(Exception e){
    out.print(e.getMessage());
   }
   
  %>

  </body>
  </html>

  六、开始测试

  运行tomcat.bat,打开IE在地址栏中输入:http://localhost:8080/myapps/dbtest.jsp
  如果能够看到看到如下数据,恭喜你,成功了,若没有,说明还是有问题,只好再来了(通常都是最简单的拼错字符的问题)

  1 zhang

  2 wang

0
相关文章