以文本方式查看主题

-  计算机科学论坛  (http://bbs.xml.org.cn/index.asp)
--  『 Java/Eclipse 』  (http://bbs.xml.org.cn/list.asp?boardid=41)
----  tomcat6.0连接mysql数据库连接池[原创]  (http://bbs.xml.org.cn/dispbbs.asp?boardid=41&rootid=&id=48188)


--  作者:菜籽
--  发布时间:6/8/2007 9:55:00 AM

--  tomcat6.0连接mysql数据库连接池[原创]
1 下载Tomcat最新版本
下载地址:http://tomcat.apache.org/
2 下载mysql最新版本以及最近版本的驱动程序
下载地址:http://dev.mysql.com/downloads
http://dev.mysql.com/downloads/connector
并将下载的mysql-connector-java-5.1.0-bin.jar a连接文件放到$CATALINA_HOME/lib/下。
3 安装mysql数据库
4 创建一个tomcat应用程序,工程的名字为DBTest
5 修改$CATALINA_HOME/conf/ context.xml为以下内容
<Context path="/DBTest" docBase="DBTest"
        debug="5" reloadable="true" crossContext="true">
    <!-- maxActive: 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.
         -->
    <!-- maxIdle: Maximum number of idle dB connections to retain in pool.
         Set to -1 for no limit.  See also the DBCP documentation on this
         and the minEvictableIdleTimeMillis configuration parameter.
         -->
    <!-- maxWait: 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.
         -->
    <!-- username and password: MySQL dB username and password for dB connections  -->
    <!-- driverClassName: Class name for the old mm.mysql JDBC driver is
         org.gjt.mm.mysql.Driver - we recommend using Connector/J though.
         Class name for the official MySQL Connector/J driver is com.mysql.jdbc.Driver.
         -->
       <!-- url: 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.
         -->
  <Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"
               maxActive="100" maxIdle="30" maxWait="10000"
               username="javauser" password="javadude" driverClassName="com.mysql.jdbc.Driver"
               url="jdbc:mysql://localhost:3306/ jtest?autoReconnect=true"/>

</Context>
此时要注意修改自己的数据库的用户名和密码
我建立的
数据库:jtest
用户名:javauser
密码:javadude
6 修改工程目录下的web.xml文件添加如下
<description>MySQL Test App</description>
  <resource-ref>
      <description>DB Connection</description>
      <res-ref-name>jdbc/TestDB</res-ref-name>
      <res-type>javax.sql.DataSource</res-type>
      <res-auth>Container</res-auth>
  </resource-ref>
7 创建一个java类
package com.test;

/*
* DBTest.java
*
* Created on 2007/06/07, 10:33:02
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/

/**
*
* @author wangzicai
*/
import javax.naming.*;
import javax.sql.*;
import java.sql.*;
public class DBTest {
    String foo = "Not Connected";
    int bar = -1;
    public void init() {
        try{
            Context ctx = new InitialContext();
            if(ctx == null )
                throw new Exception("Boom - No Context");
            DataSource ds =
                    (DataSource)ctx.lookup(
                    "java:comp/env/jdbc/TestDB");
            if (ds != null) {
                Connection conn = ds.getConnection();
                if(conn != null) {
                    foo = "Got Connection "+conn.toString();
                    Statement stmt = conn.createStatement();
                    ResultSet rst =
                            stmt.executeQuery(
                            " select * from test ");
                    if(rst.next()) {
                        foo=rst.getString(1);
                        bar=208;
                    }
                    conn.close();
                }
            }
        }catch(Exception e) {
            e.printStackTrace();
        }
    }
    public String getFoo() { return foo; }
    public int getBar() { return bar;}
}


8 编辑index.jsp

<%@ page language="java" pageEncoding="UTF-8"%>
<%@ page import ="com.test.*" %>
<html>
<head>
<title>DB Test</title>
</head>
<body>
<%
DBTest tst = new DBTest();
tst.init();
%>
<h2>Results</h2>
Foo <%= tst.getFoo() %><br>
Bar <%= tst.getBar() %>
</body>
</html>
9 部署测试

有问题可以一起讨论,谢谢大家


--  作者:DMman
--  发布时间:6/8/2007 10:57:00 AM

--  
LZ,你介绍的这种方式 不稳健,以前我弄连接池 搞了好几天。最后才发现tomcat下配置连接池的最好方法:
安装 tomcat Admin 然后 在它的可视化界面下 配置连接池参数 轻松 自然 安全 可靠 明了 易懂!
好像是tomcat5.0以上的版本(不含5.0)安装时Admin不再自动安装 需要 另行安装;如果使用的是5.0.28版本 直接就装上了。
安装tomcat admin方法可见 http://blogger.org.cn/blog/more.asp?name=DMman&id=23906
装上之后 配置连接池 自己摸索就可以了!
完全不用修改配置文件 只要在界面操作 文件自动生成 自动修改!


此主题相关图片如下:
按此在新窗口浏览图片


--  作者:DMman
--  发布时间:6/8/2007 11:08:00 AM

--  
这部分 在Admin中配置数据源自动生成

<Context path="/DBTest" docBase="DBTest"
        debug="5" reloadable="true" crossContext="true">
    <!-- maxActive: 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.
         -->
    <!-- maxIdle: Maximum number of idle dB connections to retain in pool.
         Set to -1 for no limit.  See also the DBCP documentation on this
         and the minEvictableIdleTimeMillis configuration parameter.
         -->
    <!-- maxWait: 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.
         -->
    <!-- username and password: MySQL dB username and password for dB connections  -->
    <!-- driverClassName: Class name for the old mm.mysql JDBC driver is
         org.gjt.mm.mysql.Driver - we recommend using Connector/J though.
         Class name for the official MySQL Connector/J driver is com.mysql.jdbc.Driver.
         -->
       <!-- url: 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.
         -->
  <Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"
               maxActive="100" maxIdle="30" maxWait="10000"
               username="javauser" password="javadude" driverClassName="com.mysql.jdbc.Driver"
               url="jdbc:mysql://localhost:3306/ jtest?autoReconnect=true"/>

</Context>



这部分在Admin中配置 ResourceLink自动生成

修改工程目录下的web.xml文件添加如下
<description>MySQL Test App</description>
  <resource-ref>
      <description>DB Connection</description>
      <res-ref-name>jdbc/TestDB</res-ref-name>
      <res-type>javax.sql.DataSource</res-type>
      <res-auth>Container</res-auth>
  </resource-ref>


--  作者:菜籽
--  发布时间:6/8/2007 12:26:00 PM

--  
以前没有做过,后来又同事要求帮忙,自己摸索一下,谢谢2楼的。以后多多交流。
--  作者:菜籽
--  发布时间:6/8/2007 12:51:00 PM

--  
去tomcat官方网站上看了一下,6.0版本的Administration Web Application没有,不知道能不能用5.5的,有时间我去测试一下,还有老版本的tomcat和6.0有很大的区别,已经把<centext>标签单独从<server>标签中取出,形成独立的.xml配置文件。


--  作者:DMman
--  发布时间:6/8/2007 4:18:00 PM

--  
我开始用6.0.1的 现在用5.0281 觉得也不错;
那些改动对用户是透明的
<context>标签单独从<server>标签中取出,形成独立的.xml配置文件。使结构更明朗了 这些元素和组件的层次关系 在Admin里以 树 的形式表示 一目了然。
5.0.28有admin 自己可以安装操作 把他加到 6.0版本中
5.5和6.0一样 自己也不带admin安装
--  作者:DMman
--  发布时间:7/23/2007 5:04:00 PM

--  
顶一下 要用到
--  作者:菜籽
--  发布时间:9/2/2007 10:41:00 PM

--  
tomcat配置admin应用  贴出来:

tomcat配置admin应用
系统:windowxp ;
版本号: tomcat5.5.23

Tomcat 5可以通过以运行在网页浏览器的配置应用程序非常方便地进行服务器的配置。这个应用程序称为Tomcat Administration Web Application。然而,Tomcat 5.5 以后的binary 核心安装版不再提供Tomcat Administration Web Application。要安装后者,需要单独下载和安装。Tomcat 并没有为Administration Web Application提供一种自动整合的安装程序。本文将讲述安装和配置的详细过程。

第一步,确认你的Tomcat 中是否已安装了Administration Web Application。首先确定Tomcat Service 正在运行。然后在浏览器中,键入 http://localhost:8080/admin,如果看到Tomcat Web Server Administration Tool 的页面,说明Administration Web Application 已安装好了。你可以省点时间,不必读下文了。如果看到的是
Tomcat's administration web application is no longer installed by default. Download and install the "admin" package to use it.
那么这篇文章就算你看对了,就是专门为你写的。

第二步,下载admin package。说实话,很多人居然找不到在哪里下载。这不怪你们。Apache Tomcat 的下载页面的指示不是很清楚,当然技术文档也不甚详尽。但是人家已经给你提供了功能强大的open source 软件,你还能抱怨什么呢?要怪就怪的工夫没下到,功夫不够深。

仔细看,http://tomcat.apache.org/download-55.cgi , 在下载页面的Binary Distributions栏下的第四大项,Administration Web Application 即是。

第三步,当解压下载的Administration Web Application 文件,比如放在c:\tom中,你会发现解压后的文件为 c:\tom\apache-tomcat-5.5.23。 这时键入 http://localhost:8080/admin 去检验admin,会发现Tomcat什么都没有改变。因为解压的admin文件还没有配置到Tomcat 的系统中。下面的步骤告诉你如何将admin文件配置到Tomcat 的服务器中。

第四步,将 c:\tom\apache-tomcat-5.5.23\conf\Catalina\localhost\admin.xml的
admin.xml 文件拷贝到c:\Program Files\Apache Software Foundation\Tomcat 5.5\conf\Catalina\localhost. 的文件夹中。注意一定要放在正确的路径的文件夹中。
==========================================>
上面的Catalina\localhost路径在tomcat6.0里面没有,这个只适用tomcat5
<==========================================

第五步,将c:\tom\apache-tomcat-5.5.23\server\webapps中的admin整个文件夹拷贝到c:\Program Files\Apache SoftwareFoundation\Tomcat5.5\server\webapps 文件夹中。
==========================================>
上面的server\webapps 路径在tomcat6.0里面也没有,这个只适用tomcat5
<==========================================

第六步,用具有编辑功能的notepad等打开 c:\Program Files\Apache Software Foundation\Tomcat 5.5\conf\中的tomcat-users.xml 文件。在</tomcat-user>最后一行之前,加入下列一行
<user username=”admin” password=”tomcat” roles=”admin, manager”/>
注意username/password可以是你喜欢的任意组合,但roles=”admin” 不可随意改动。

第七步,重启Tomcat Server,然后打开http://127.0.0.1:8080/进入manager里面把admin服务启动起来,然后再进入admin模块里,在web浏览器中键入 http://localhost:8080/admin, 这时你如果能看到 Tomcat Server Web Administration Tool 的login界面, 就大功告成。若是还看不到上述页面,可检查浏览器的代理服务器的设定,使之能够接受localhost。


--  作者:DMman
--  发布时间:9/3/2007 9:08:00 AM

--  
1 安装Admin嫌麻烦的朋友 干脆直接用5.0.28版本就可以了,它自带Admin
2 如果非想用高级点的tomcat;找不到Admin下载的朋友,也可以下载5.0.28版本,安装后把里面的Admin文件夹拷贝出来也行~~
--  作者:菜籽
--  发布时间:9/4/2007 9:46:00 AM

--  
>>>这部分在Admin中配置 ResourceLink自动生成

如何配置?


--  作者:crwfnh05
--  发布时间:10/16/2007 10:00:00 PM

--  
谢谢楼主,我这两天都在看这些代码,通过楼上的方法我写出了一般的数据库连接池的类,但是这样的效率还是不太高(当数据库连接多的时候),我想这样写一个类组件能够在服务器启动时自动创建数据源,减少服务器的负担,如果按楼上的方法应该怎么写呢?这两天我也一直在想,在网上看了些资料,都不是很全,没有具体的实例,由于初学JSP还是有很多的不明白,所以没有看明白,我也在多看看点资料看看。。
--  作者:summerfeel
--  发布时间:10/19/2007 7:11:00 PM

--  
原来还可以在tomcat admin里配置数据源,搞得像weblogic
W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
78.125ms