`
fuyangchang
  • 浏览: 147196 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

tomcat连接池的配置与使用数据库mysql

阅读更多

tomcat连接池的配置与使用数据库mysql

                                      

关于tomcat连接池的配置,我在自己开始的时候碰到过许多的问题,至少失败过六次,今天终于成功了。对于这个问题的产生与由来我也给大伙说说。
在《程序员csdn开发高手》这本杂志的2004年第02期,一位名叫宋廷宇的老师写了一篇文章,名赤《tomcat连接池的图形化配置与使用》,我看到 了这篇文章,该作者所使用的数据库是sql server,而我所使用的数据库是mysql,tomcat版本为5.0 19。文中有这么一段话:“在tomcat 4.1.18及后续版本中提供了图形界面的web应用发布工具,但是使用这个工具发布采用数据库连接池的web应用时,自动生成的配置不能找到数据源。这 是一个bug,相信在后续的版本中所有关于数据库连接池的配置和发布都不需要在手工修改配置文件,而使用简单方便的全图形化工具”。当时我个人认为:我所 使用的tomcat 5.0版的,bug应该修正了吧,况且数据库配置嘛,换汤不换药,原理应该是一样的,但是我严格按照这篇文章上来配置,结果事与愿为,配置成功运行后出错 了。附错误如下:
org.apache.commons.dbcp.SQLNestedException: Cannot create JDBC driver of class '
' for connect URL 'null', cause: No suitable driver
相信学过jsp连接数据库的人都有常识,那就是将驱动加入CLASSPATH。排除错误,驱动没问题。迷惑中
于是乎,检查,重来再检查,再重来,错误不变。
既然图形下配置错误,那么我手动配置。上网搜索,最权威的当然就是tomcat的doc。刚好文档中有一篇讲如何配置mysql数据库连接池的(全英文 的,幸好我英语过得去),一步一步严格按照它的格式来配置,当我看到同样的错误时,犹如晴天劈雳。一个字:晕!!!差点放弃。(如果放弃了,就不会有我今 天这篇文章了,好险呀!!!)
因此我认为tomcat有问题。这个错误很多人都见过,在csdn及本论坛上,有许多人问到这样的问题,为这问题,我还在国外的论坛上搜索了,也有人问到 这样的问题,他们说这是tomcat的一个bug,于是我就默认了。后来想想不对,如果是bug的话,jarkata项目组织肯定会贴出来并且修正这个 bug的。
我就下载了最新版本的tomcat(5.0 25)再次试验,首先是按照书上的文章进行图形化配置,结果依然,心里想,bug肯定修正,且我与作者的步骤一样。问题休在???沉着冷静下来,再次看看 tomcat的文档。又回想起宋廷宇老师的文章中那段话,莫非真的是图形配置中的bug。
http://jakarta.apache.org/tomcat/tomcat-5.0-doc/jndi-datasource-examples-howto.html
好,就来手工配置吧。于是又打开tomcat的doc开始了手工配置。配置之前建议大家对server.xml文件做一个备份,原因就不讲了。
打开server.xml文件,在哪??晕!!打开tomcat$\conf文件夹(tomcat$指的是tomcat的安装目录,下皆同)。至于数据库的建立我就不说了,自己按照文章去做吧,说明一下,尽管我不说,我还是按照文章上来做的,你们照葫芦画瓢即可。
首先将那段

<Context path="/DBTest" docBase="DBTest"
       debug
="5" reloadable="true" crossContext="true">
<!—注意到这里的DBTest了吧,这就是要求大家建立DBTest目录的原因。-->

 
<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/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>javauser</value>
<!—数据库用户名-->

   
</parameter>
   
<parameter>
    
<name>password</name>
    
<value>javadude</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>
这里面是被注释的,因为以前连接mysql是这样连接的,现在建议用下面的方法,自己可以看到。
    
-->
   
   
<!-- 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/javatest?autoReconnect=true</value>
<!--这是数据库的地址,也可以不要这么繁琐,改为
jdbc:mysql://localhost/javatest即可,javatest为数据库名
-->
   
</parameter>
 
</ResourceParams>
</Context>

贴在这了,别嫌长啊。我加了注释。至于我们贴到什么位置,在</Host>前面,找到相对应的位置,由于我的server.xml文件未备份,所以我无法再次将所贴位置告诉大家了,不好意思,有事给我发过来,我一定还记得的,到时再手把手教你们。
在tomcat $\webapps文件夹下建立一个名为DBTest的文件夹,注意大小写。在此文件夹下建立WEB-INF文件夹,及一个文件:test.jsp,再在 WEB-INF文件夹下建立两个文件夹:lib及classes,将数据库驱动文件拷贝到lib文件夹下,同样还在WEB-INF文件夹下建一个文件 web.xml,看到doc上有现成的,要不要拷贝呀,这就有个问题,doc有个问题,有空给它们写封信吧,这也是我经过实现才发现的。
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"  version="2.4">
 <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>
</web-app>
用我的,没错的。
Test.jsp

<%...@ page contentType="text/html; charset=GBK"%>
<%...@ 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/TestDB");
Connection conn
=ds.getConnection();
out.println(
"data from database:<br>");
Statement stmt
=conn.createStatement();
ResultSet rs 
=stmt.executeQuery("select id, foo, bar from testdata");
while(rs.next())
{
out.println(rs.getInt(
"id"));
out.println(rs.getString(
"foo"));
out.println(rs.getString(
"bar"));
}
rs.close();
stmt.close();
}
catch(Exception e)
{
e.printStackTrace();
}
%>
</body>
</html>

doc上的test.jsp是使用了tag ,我认为没必要,大家反而看不懂,并且它没有关闭connection及statement,个人认为存在不安全因素,因此我自己也改过来了。
接下来的事情嘛,自己测试,测试前要将mysql打开,常识性的错误别犯了。
启动tomcat
至http://localhost:8080/DBTest/test.jsp
在我的界面上是
test Tomcat
data from database:
1 hello 12345
大家尽情享用吧。



分享到:
评论

相关推荐

    Tomcat连接池配置

    **描述**: Tomcat连接池配置涉及到在Apache Tomcat服务器中设置数据源,以便高效地管理和复用数据库连接。这包括对Oracle和MSSQL Server这两种不同类型的数据库进行配置,并在Java应用程序中引用这些连接池。提供的...

    tomcat连接池与阿里Druid连接池

    Tomcat 连接池和阿里 Druid 连接池都是常用的数据库连接池实现,但是它们有不同的特点和使用场景。下面是它们的比较: |特点|Tomcat 连接池|阿里 Druid 连接池| | --- | --- | --- | |性能|高效|高效| |可靠性|可靠...

    mysql+tomcat连接池配置

    通过上述配置,你可以实现MySQL与Tomcat的高效连接池设置,确保在处理大量并发请求时,数据库连接的创建和管理更加智能化,从而提升整体应用的响应速度和稳定性。记得定期检查和更新连接池的配置,以适应应用的变化...

    tomcat连接池配置

    本文将详细探讨Tomcat连接池的配置,包括其原理、配置步骤以及优化策略。 一、连接池原理 连接池是一种资源管理技术,用于存储数据库连接。它预先创建一定数量的数据库连接,当应用程序需要时可以从池中获取,使用...

    Tomcat连接池的配置

    总结来说,配置Tomcat连接池是提升Web应用数据库访问性能的重要步骤。通过合理配置连接池参数,可以有效管理数据库连接,避免资源浪费,提升系统整体性能。同时,持续监控和优化连接池设置是保持系统高效运行的关键...

    Tomcat下配置MySQL数据库连接池

    本文将详细介绍如何在Apache Tomcat服务器环境下配置MySQL数据库连接池,通过具体的步骤与示例帮助读者理解和实践。 #### 二、背景知识 1. **Tomcat**:一款免费开源的Servlet容器,支持Java EE Web应用程序的运行...

    Tomcat6连接池配置详解(自动重连)

    本文将详细介绍如何在Tomcat6中配置连接池,并实现数据库连接的自动重连功能。 #### 二、Tomcat6连接池配置 **1. 修改`conf/server.xml`文件** 在Tomcat6中配置连接池的第一步是修改`conf/server.xml`文件,增加...

    Tomcat中配置MySQL数据库连接池.doc

    Tomcat 中配置 MySQL 数据库连接池 在 Web 开发中,与数据库的连接是必不可少的,而数据库连接池技术很好的优化了动态页与数据库的连接,相比单个连接数据库连接池节省了很大的资源。使用数据库连接池可以将多个...

    解决Linux下tomcat连接MySQL数据库

    在Linux环境下,开发Web应用程序并集成数据库访问是一个常见的任务,然而在实际操作中可能会遇到各种问题。...同时,对于数据库连接,使用连接池和适当的认证机制也是提升性能和安全性的必要步骤。

    tomcat数据库连接池的使用

    本文将详细介绍如何在Tomcat中配置和使用数据库连接池,以及相关的知识点。 首先,我们需要理解数据库连接池的概念。数据库连接池是在应用服务器启动时创建的一组数据库连接,这些连接在应用运行期间可以被多个请求...

    使用数据库连接池proxool配置mysql数据库

    总结,使用Proxool配置MySQL数据库连接池,不仅可以解决8小时连接超时问题,还可以提升应用程序的性能和稳定性。通过详细配置Proxool,我们可以灵活地调整连接池参数以适应不同应用场景的需求,并通过集成到Tomcat,...

    tomcat数据库连接池配置

    在Java Web开发中,Tomcat作为一款广泛使用的应用服务器,其数据库连接池配置是十分重要的一个环节。合理的配置能够显著提高应用程序的性能和稳定性。本文将以MySQL数据库为例,详细介绍如何在Tomcat中配置数据库...

    tomcat连接池应用例子

    标题“Tomcat连接池应用例子”指的是在Java Web开发中,使用Tomcat内置的数据源(连接池)来管理与MySQL数据库的连接。Tomcat作为流行的Java应用服务器,提供了高效的连接池服务,帮助开发者优化数据库操作的性能和...

    tomcat数据连接池配置

    总结,Tomcat数据连接池的配置涉及到选择合适的连接池实现、添加依赖、配置Context文件以及在应用中使用数据源。正确配置和管理数据连接池能显著提升Web应用的性能,同时降低资源消耗,是每个Java开发者必备的技能之...

    Tomcat6.0+MyEclipse6.0+mysql5.0数据库连接池配置!.pdf

    Tomcat服务器是Apache软件基金会...通过上述配置步骤,Tomcat6.0服务器能够与MyEclipse6.0开发环境和mysql5.0数据库协同工作,实现一个高效稳定的数据库连接池,从而提高应用程序处理数据库操作的性能和扩展性。

    tomcat 连接池的配置笔记以及测试源码

    总结,Tomcat连接池的配置是优化数据库性能的关键步骤,理解全局与局部配置的区别,以及可能遇到的错误类型,可以帮助开发者更好地管理和优化数据库连接,提升应用的响应速度和稳定性。通过实际的测试源码,可以直观...

    tomcat连接池的配置与性能测试

    `Tomcat连接池`是Java应用服务器中用于管理数据库连接的一种机制,它的目的是提高数据库连接的复用性,减少创建和销毁连接的开销,从而提升应用的性能和响应速度。Tomcat内置了多种连接池实现,如Apache的Commons ...

    tomcat连接池mysql多种配置

    本文将深入探讨如何在Tomcat中配置多种连接池以连接MySQL数据库。 一、C3P0连接池配置 C3P0是一款开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。以下是配置C3P0连接池的步骤: 1...

Global site tag (gtag.js) - Google Analytics