选择显示字体大小

tomcat5.0-5.5连接池配置指南

  本文以目前最流行的mysql为例,讲解通过tomcat连接池连接mysql数据库的基本步骤,如果你了解mysql可跳过第一步。

  在进行tomcat连接池配置前,先解压缩mysql-connector-java-xxx.zip,将其中的mysql-connector-java-3.x.x-xxx.jar取出,置于<%tomcat_home%>\common\lib中。

  接下来,让我们一起进入精彩的tomcat配置之旅。

一.新建用户及数据库

操作步骤如下:

c:\documents and settings\administrator>d:

d:\>cd mysql\bin

d:\mysql\bin>mysql -u root -p
enter password: *******
welcome to the mysql monitor.  commands end with ; or \g.
your mysql connection id is 51 to server version: 4.1.12a-nt

type 'help;' or '\h' for help. type '\c' to clear the buffer.

mysql> grant all privileges on jcc.* to jcc@localhost identified by 'jsp.com.cn'
with grant option;
query ok, 0 rows affected (0.01 sec)

mysql> use mysql;
database changed
mysql> select host,user,password from user;
+-----------+------+-------------------------------------------+
host       user password                                  
+-----------+------+-------------------------------------------+
localhost root *60d5b730382ec2170ca366de181767e4c5343de8
%         jsp   *c22ab0fd8a289c7d337c9998b63b8ea8335e5f35
localhost jcc   *c22ab0fd8a289c7d337c9998b63b8ea8335e5f35
+-----------+------+-------------------------------------------+
3 rows in set (0.01 sec)

mysql> exit
bye

d:\mysql\bin>mysql -u jcc -p
enter password: **********
welcome to the mysql monitor.  commands end with ; or \g.
your mysql connection id is 57 to server version: 4.1.12a-nt

type 'help;' or '\h' for help. type '\c' to clear the buffer.

mysql> create database jcc;
query ok, 1 row affected (0.02 sec)

mysql> use jcc;
database changed
mysql> create table user(
    ->   id int not null auto_increment primary key,
    ->   name varchar(8) not null
    -> );
query ok, 0 rows affected (0.08 sec)

mysql> insert into user (name) values ('corebit');
query ok, 1 row affected (0.03 sec)

mysql> insert into user (name) values ('ivan');
query ok, 1 row affected (0.03 sec)

mysql> select * from user;
+----+---------+
id name    
+----+---------+
  1 corebit
  2 ivan    
+----+---------+
2 rows in set (0.00 sec)

mysql>


二.配置tomcat连接池

tomcat5.0进行如下配置:

在<%tomcat_home%>\conf\server.xml的<host>...</host>之间加入以下代码:

<context path=&quot;&quot; docbase=&quot;d:/jcc&quot;
        debug=&quot;5&quot; reloadable=&quot;true&quot; crosscontext=&quot;true&quot;>

  <logger classname=&quot;org.apache.catalina.logger.filelogger&quot;
             prefix=&quot;localhost_dbtest_log.&quot; suffix=&quot;.txt&quot;
             timestamp=&quot;true&quot;/>

  <resource name=&quot;jdbc/jcc&quot;
               auth=&quot;container&quot;
               type=&quot;javax.sql.datasource&quot;/>

  <resourceparams name=&quot;jdbc/jcc&quot;>
    <parameter>
      <name>factory</name>
      <value>org.apache.commons.dbcp.basicdatasourcefactory</value>
    </parameter>

    <parameter>
      <name>maxactive</name>
      <value>100</value>
    </parameter>

    <parameter>
      <name>maxidle</name>
      <value>30</value>
    </parameter>

    <parameter>
      <name>maxwait</name>
      <value>10000</value>
    </parameter>

    <parameter>
     <name>username</name>
     <value>jcc</value>
    </parameter>
    <parameter>
     <name>password</name>
     <value>jsp.com.cn</value>
    </parameter>

    <parameter>
       <name>driverclassname</name>
       <value>com.mysql.jdbc.driver</value>
    </parameter>

    <parameter>
      <name>url</name>
      <value>jdbc:mysql://localhost/jcc</value>
    </parameter>
  </resourceparams>
</context>


tomcat5.5进行如下配置:

在<%tomcat_home%>\conf\server.xml的<host>...</host>之间加入以下代码:

<
context path=&quot;&quot; docbase=&quot;d:/jcc&quot;
        debug=&quot;5&quot; reloadable=&quot;true&quot; crosscontext=&quot;true&quot;>

  <resource name=&quot;jdbc/jcc&quot; auth=&quot;container&quot; type=&quot;javax.sql.datasource&quot;
               maxactive=&quot;100&quot; maxidle=&quot;30&quot; maxwait=&quot;10000&quot;
               username=&quot;jcc&quot; password=&quot;jsp.com.cn&quot; driverclassname=&quot;com.mysql.jdbc.driver&quot;
               url=&quot;jdbc:mysql://localhost/jcc&quot;/>

</context>


三.在<%wwwroot%>/下,新建mysql数据库连接文件select.jsp

  select.jsp源码如下:

<%@page contenttype=&quot;text/html;charset=gb2312&quot;%>
<%@page import=&quot;java.sql.*&quot;%>
<%@page import=&quot;javax.sql.datasource&quot;%>
<%@page import=&quot;javax.naming.*&quot;%>
<html>
<body>
<%
try{
  context initctx=new initialcontext();
  datasource db = (datasource)initctx.lookup(&quot;java:comp/env/jdbc/jcc&quot;);
  connection conn = db.getconnection();
  statement stmt = conn.createstatement();
  resultset rs = stmt.executequery(&quot;select * from user&quot;);
  out.println(&quot;user-list&quot;+&quot;<br>&quot;);
  while(rs.next()){
    out.print(rs.getstring(1)+&quot; &quot;);
    out.print(rs.getstring(2)+&quot;<br>&quot;);
  }
  rs.close();
  stmt.close();
  conn.close();
}
catch(exception e){
  out.print(e);
}
%>
</body>
</html>


四.运行http://localhost/select.jsp,显示结果如下:

user-list
1 corebit
2 ivan


  则表示数据库连接成功!恭喜!恭喜!

  否则请检查数据库连接器版本,出错可能性比较高!

  *注:

  tomcat连接池中,部分参数说明如下:

  maxactive=&quot;100&quot;  <!--最大活跃连接数,这里取值为100,表示同时最多有100个数据库连接。设为0表示无限制。-->

  maxidle=&quot;30&quot;       <!--最大的空闲连接数,这里取值为30,表示即使没有数据库连接时依然可以保持30个空闲的连接,而不被清除,随时处于待命状态。设为0表示无限制。-->

  maxwait=&quot;10000&quot;    <!--最大建立连接等待时间。如果超过此时间将接到异常。这里设置为10000,表示10秒后超时。设为-1表示无限制,直到超时为止。-->

    jdbc:mysql://localhost/jcc    <!--数据库连接字符串,同jdbc:mysql://localhost:3306/jcc?autoreconnect=true-->

    ps:如果最大数据库活跃连接数过大,可想而知,内存占用量是非常惊人的!如果空闲连接数过大,则资源利用率低,连接池长期未释放,可导致连接池结点异常。所以选好maxactive和maxidle是连接池性能的关键因素,当然这取决于服务器环境。

  *附:

  连接池运作原理:

  在实际应用开发中,特别是在web应用系统中,如果jspservletejb使用jdbc直接访问数据库中的数据,每一次数据访问请求都必须经历建立数据库连接、打开数据库、存取数据和关闭数据库连接等步骤,而连接并打开数据库是一件既消耗资源又费时的工作,如果频繁发生这种数据库操作,系统的性能必然会急剧下降,甚至会导致系统崩溃。数据库连接池技术是解决这个问题最常用的方法,在许多应用程序服务器(例如:weblogic,websphere,jboss)中,基本都提供了这项技术,无需自己编程,但是,深入了解这项技术是非常必要的。

  数据库连接池技术的思想非常简单,将数据库连接作为对象存储在一个vector对象中,一旦数据库连接建立后,不同的数据库访问请求就可以共享这些连接,这样,通过复用这些已经建立的数据库连接,可以克服上述缺点,极大地节省系统资源和时间。

  数据库连接池的主要操作如下:

  (1)建立数据库连接池对象(服务器启动)。

  (2)按照事先指定的参数创建初始数量的数据库连接(即:空闲连接数)。

  (3)对于一个数据库访问请求,直接从连接池中得到一个连接。如果数据库连接池对象中没有空闲的连接,且连接数没有达到最大(即:最大活跃连接数),创建一个新的数据库连接。

  (4)存取数据库

  (5)关闭数据库,释放所有数据库连接(此时的关闭数据库连接,并非真正关闭,而是将其放入空闲队列中。如实际空闲连接数大于初始空闲连接数则释放连接)。

  (6)释放数据库连接池对象(服务器停止、维护期间,释放数据库连接池对象,并释放所有连接)。

  希望本文能对你使用tomcat连接池连接mysql数据库有所帮助!

参考文献:
http://jakarta.apache.org/tomcat/tomcat-5.0-doc/jndi-datasource-examples-howto.html
http://jakarta.apache.org/tomcat/tomcat-5.5-doc/jndi-datasource-examples-howto.html


 


关键字 本文所属关键字

相关 与本文相关文章

分类 所有文章关键字导航

源码编程相关

Java   Asp   PHP   .Net   XML   C/C++   CGI   VB   Jsp   J2ee   J2se   J2me   EJB   Servlet   Tomcat   Resin   Struts   Weblogic   Eclipse   ANT   GUI   JMS   Web servise   IDEA   Webphere   Hibernate   Spring   Jboss   Applet   Swing   Socket   Javamail   Perl   Ajax   P2P   安全   模式   框架   测试   开源   游戏

SQL数据库相关

My-SQL   Ms-SQL   Access   DB2   Oracle   Sybase   SQLserver   索引   存储过程   加密   数据库   分页   视图  

手机无线相关

3G   Wap   CDMA   GRPS   GSM   IVR   彩信   短信   无线   增值业务

网页设计制作相关

HTML   CSS   网页配色   网页特效   Javascript   VBscript   Dreamweaver   Frontpage   JS   Web   网站设计

网站建设推广相关

建站经验   网站优化   网站排名   推广   Alexa

操作系统/服务器相关

Windows XP   Windows 2000   Windows 2003   Windows Me   Windows 9.x   Linux   UNIX   注册表   操作系统   服务器   应用服务器

图形图像多媒体相关

Photoshop   Fireworks   Flash   Coreldraw   Illustrator   Freehand   Photoimpact   多媒体   图形图像

标准 网站致力的规范

Valid CSS!

无不良内容,无不良广告,无恶意代码

Valid XHTML 1.0 Transitional

creativecommons