`
lixinye0123
  • 浏览: 324301 次
  • 性别: Icon_minigender_1
  • 来自: 温州
社区版块
存档分类
最新评论

TOMCAT 5设置数据连接池总结

    博客分类:
  • Java
阅读更多
TOMCAT 5,要设置一个数据连接池,以MYSQL为例子(MS SQL SERVER 2000)也差不多,如何设置呢?查了下网上的资料,很多种说法,因此归纳了下,大概有两类做法是可以的。
我用的是TOMCAT 5.0.28,搭配MYSQL

做法1:
  修改conf目录下的server.xml,在<HOST></HOST>之间加入
<Context path="/testmysql" docBase="d:\tomcat5\webapps\testmysql" debug="0" crosscontext="true" reloadable="true">
  <Resource name="jdbc/TestDB" auth="Container"
            type="javax.sql.DataSource"/>
  <ResourceParams name="jdbc/TestDB">
    <parameter>
      <name>factory</name>
      <value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
    </parameter>
    <parameter>
      <name>username</name>
      <value>root</value>
    </parameter>
    <parameter>
      <name>password</name>
      <value>123456</value>
    </parameter>
    <parameter>
      <name>driverClassName</name>
      <value>com.mysql.jdbc.Driver</value>
    </parameter>
    <parameter>
      <name>url</name>
      <value>jdbc:mysql://localhost:3306/testmysql?useUnicode=true&amp;characterEncoding=gb2312</value>
    </parameter>
    <parameter>
      <name>maxActive</name>
      <value>20</value>
    </parameter>
    <parameter>
      <name>maxIdle</name>
      <value>5</value>
    </parameter>
    <parameter>
      <name>maxWait</name>
      <value>10000</value>
    </parameter>
  </ResourceParams>
</Context>
  其中,testmysql是为了测试而放在weapps下的一个目录。
Tomcat连接池中,部分参数说明如下:

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

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

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

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

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

     然后再在web.xml下如下配置
<resource-ref>
  <res-ref-name>TestDB</res-ref-name>
  <res-type>javax.sql.DataSource</res-type>
  <res-auth>Container</res-auth>
 </resource-ref>
注意,这里的TestDB(名称)要和你在server.xml里设置的<ResourceParams name="jdbc/TestDB">
名称一样。
  设置的测试程序如下:
<%
try{
 Context initContext = new InitialContext();
 Context envContext  = (Context)initContext.lookup("java:comp/env");
 DataSource ds = (DataSource)envContext.lookup("jdbc/TestDB");
 Connection conn = ds.getConnection();
    Statement stmt = conn.createStatement();
     ResultSet rs = stmt.executeQuery("SELECT * FROM testmysql");
   out.println("User-list"+"<br>");
     while(rs.next())
     { 
       out.print(rs.getInt(1)+" ");  
     out.print(rs.getString(2)+"<br>");
      }
        rs.close();
      stmt.close(); 
      conn.close();}
 catch(Exception e)
 {
  out.print(e);
  }
%>

 而在TOMCAT 5以上,也可以用另外的方法来配置
Tomcat5和Tomcat4在配置新的Web应用上有一些区别,在Tomcat4中如果要配置一个新的Web应用需要修改server.xml文件,在Tomcat5中只需要重新写一个配置文件就可以了,只有将这个文件放在相应的目录中,
   比如,我们可以在D:\tomcat5\conf\Catalina\localhost目录下,新建立一个XML文件如下
  <?xml version="1.0" encoding="UTF-8"?>
<Context path="/tesymysql" docBase="d:\tomcat5\webapps\testmysql"
        debug="5" reloadable="true" crossContext="true">

  <Resource name="TestDB"
               auth="Container"
               type="javax.sql.DataSource"/>
  <ResourceParams name="TestDB">
    <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>root</value>
    </parameter>
    <parameter>
     <name>password</name>
     <value>123456</value>
    </parameter>
    <!-- Class name for the old mm.mysql JDBC driver - uncomment this entry and comment next
         if you want to use this driver - we recommend using Connector/J though
    <parameter>
       <name>driverClassName</name>
       <value>org.gjt.mm.mysql.Driver</value>
    </parameter>
     -->
   
    <!-- Class name for the official MySQL Connector/J 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/testmysql?autoReconnect=true</value>
    </parameter>
  </ResourceParams>
</Context>
  而WEB.XML文件的修改同上,这样也可以的。
而在TOMCAT 5。5中,甚至可以这样修改,不用改其他
   在<%TOMCAT_HOME%>\conf\server.xml的<Host>...</Host>之间加入以下代码:

<Context path="" docBase="D:/tomcat5\webapps\testmysql"
        debug="5" reloadable="true" crossContext="true">
  <Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"
               maxActive="100" maxIdle="30" maxWait="10000"
               username="jcc" password="jsp.com.cn" driverClassName="com.mysql.jdbc.Driver"
               url="jdbc:mysql://localhost:3306/testmysql"/>
</Context>

2 注意的问题
  一开始,我下载的mysql的驱动包,解压出来,mysql-connector-java-3.1.10-bin.jar放在tomcat\common\lib目录下就可以了,没必要在自己的应用目录下,再建lib目录后再放该JAR文件。注意,mysql-connector-java-3.1.10-bin-g.jar文件没必要放在common\lib目录下的,我放了反而会出错,不知道为什么。
   SQL SERVER 2000的写法差不多,不同在于:
  <!-- Class name for mssqlserver JDBC driver -->
   <parameter>
      <name>driverClassName</name>
      <value>com.microsoft.jdbc.sqlserver.SQLServerDriver</value>
   </parameter>

   <!-- The JDBC connection url for connecting to your mssqlserver dB.-->
   <parameter>
     <name>url</name>
     <value>jdbc:microsoft:sqlserver://localhost:1433;databasename=Northwind</value>
   </parameter>
 </ResourceParams>

分享到:
评论

相关推荐

    Tomcat中Mysql数据连接池的配置步骤

    比较适合初学者,又是个人总结。结构清晰,简单明了。老样子,跟着配一遍吧,比教科书上直观多了。

    java连接池的配置

    java连接池的配置 里面有C3P0连接池在tomcat中的详细配置 Java反射机制总结,tomcat下配置数据库连接池DBCP、C3P0、Proxool 总结spring下配置dbcp,c3p0,proxool数据源链接池

    连接各种数据库方法总结,jar包以及源代码

    SQL Server2000/2005驱动包 MySQL驱动包 Tomcat连接池的配置

    开涛高可用高并发-亿级流量核心技术

    12.2.2 HttpClient连接池源码分析 240 12.2.3 HttpClient 4.2.3配置 241 12.2.4 问题示例 243 12.3 线程池 244 12.3.1 Java线程池 245 12.3.2 Tomcat线程池配置 248 13 异步并发实战 250 13.1 同步阻塞调用 251 13.2...

    JSP实用技巧集合,jsp编程的一些小技巧总结

    71. 配置数据连接池和数据源(Tomcat)? 72. 点击图1变为图2? 73. JSP中显示图片的方法之一? 74. int转为Integer的方法? 75. 请求jsp页面禁止缓存方法? 76. select选中其中的值自动到一个文本框? 77. JSP连接数据库?...

    jpivot学习总结.doc

    nullParentValue 如果当前的 Level 是有上下级关系(设置了 parentColumn 属性),如果该 Level 又处于顶级,我们需要将顶级的数据取出来,这里指的是位于顶级的父成员的值,有些数据库不支持 null, 那么也可以使用...

    java 面试题 总结

    wait是Object类的方法,对此对象调用wait方法导致本线程放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象发出notify方法(或notifyAll)后本线程才进入对象锁定池准备获得对象锁进入运行状态。 14、Overload...

    快逸报表软件-免费、快速开发WEB报表的JAVA报表工具

    总结: 改压缩包 完全是自己整理 直接放入tomcat 或者另外服务器 就能使用, 数据库的链接只需要改动 WEN-INF下面的 reportConfig.xml 文件就行, 利用设计器 设计好后 把RAQ 文件直接放入 reportFiles 文件夹中就能...

    JAVA项目开发全程实录(含电子书和所有源代码)

    8.11.3 配置全局Tomcat连接池 399 8.12 Proxool连接池 400 8.12.1 Proxool安装 400 8.12.2 Proxool使用 400 8.13 本章总结 402 第9章 BBS系统(Struts+MySQL实现) 403 教学视频:1小时46分 9.1 开发背景 404 9.2 ...

    Java面试宝典2010版

    29、说出数据连接池的工作机制是什么? 113 30、为什么要用 ORM? 和 JDBC 有何不一样? 113 六. XML部分 113 1、xml有哪些解析技术?区别是什么? 113 2、你在项目中用到了xml技术的哪些方面?如何实现的? 114 3、用jdom...

    Java虚拟机

    这本书的内容是帮你全面了解java虚拟机,本书第1版两年内印刷近10次,98%以上的评论全部为5星级的好评,是整个Java图书领域公认的经典著作和超级畅销书,繁体版在台湾也十分受欢迎。第2版在第1版的基础上做了很大的...

    深入理解_Java_虚拟机 JVM_高级特性与最佳实践

    Java内存区域与内存溢出异常 / 24 2.1 概述 / 24 2.2 运行时数据区域 / 25 2.2.1 程序计数器 / 25 2.2.2 Java虚拟机栈 / 26 2.2.3 本地方法栈 / 27 2.2.4 Java堆 / 27 2.2.5 方法区 / 28 2.2.6 运行时常量池 ...

    Java学习笔记-个人整理的

    {13.6}连接池}{199}{section.13.6} {13.6.1}Wrapper}{199}{subsection.13.6.1} {13.7}DAO}{199}{section.13.7} {13.8}java.util.Date与java.sql.Date比较}{200}{section.13.8} {13.9}Meta Data}{201}{section....

Global site tag (gtag.js) - Google Analytics