- 浏览: 774147 次
- 性别:
- 来自: 杭州
-
文章分类
最新评论
-
webcover:
最新的中文网络记事本: 破笔记
网络记事本:http://w ...
五个最佳的免费网络记事本 -
fred_nxh:
很好,长见识了
java中堆(heap)和堆栈(stack)有什么区别 -
efeige:
兄弟,请问一下,为什么我的2003系统 网站属性 里面没有“服 ...
启用IIS Gzip 页面压缩技术 加速网页的浏览速度 -
252401762:
同样的问题啊,不知道楼主是否已经转做售前了
售前和 开发的选择 -
yuan:
膜拜玩静电的现在呢?
来回顾一下,当年的“发烧史”吧:
关于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
大家尽情享用吧。
有问题,请联系liyong_2003@hotmail.com
如有转载,请注明出处。
发表评论
-
ocx插件插入网页实现自动更新与安装注册
2010-07-27 16:17 6670ocx插件插入网页实现 ... -
JIRA
2010-04-02 16:28 1221JIRA 百科名片 JIRA是集项目计划、任务分配、需求管 ... -
ArrayList和LinkedList的用法区别
2010-03-17 10:58 1955ArrayList和LinkedList的用法区别 (2 ... -
Java 中Vector、ArrayList和LinkedList 的区别时间
2010-03-17 10:25 1792Java 中Vector、ArrayList和LinkedLi ... -
多层架构的Web开发框架模型
2010-03-14 00:31 1969摘要:在经典的J2EE四层体系结构的基础上增加数据持久层,提出 ... -
Java语言编码规范(Java Code Conventions
2010-03-08 01:17 8561 介绍(Introduction)1.1 为什么要有编码规范 ... -
IT 的规划
2010-02-21 21:07 775本文说的这位网友,在I ... -
记忆学
2010-02-10 00:50 696http://bbs.jiyifa.cn/read.php?t ... -
java析构函数替代者finalize()解说
2010-01-21 22:18 2609java析构函数替代者finali ... -
Java的GC机制总结(0) ---finalize()方法
2010-01-21 22:00 1234其实了解JAVA的人,都知道JAVA的GC机制是其的一大优点, ... -
Java认证考试
2010-01-14 12:30 863Java认证考试 关于Java方面,Sun推出四项认证:Su ... -
集合框架
2010-01-13 23:24 673java 集合框架 对象的集合 如果程序的 ... -
Java集合框架使用总结
2010-01-13 21:31 675Java集合框架使用总结 ... -
关于JAVA中的线程安全
2010-01-13 10:34 1568关于JAVA中的线程安全 ... -
Java 理论与实践: 并发集合类
2010-01-13 01:27 868DougLea的 util.concurrent 包除了包含许 ... -
java main 主函数
2010-01-10 14:28 2350java主函数一般定义如下:public static ... -
java新式for循环
2009-12-29 15:51 811java新式for循环 2008-08-04 13:48:2 ... -
2009年的Java技术发展趋势展望
2009-11-08 21:28 773已经有14岁的Java在日新月异的IT技术领域内不算年轻,但它 ... -
MyEclipse要注册
2009-11-07 18:37 1702yEclipse怎么注册都不知道。我说他没有注册,他硬要说已经 ... -
浅谈设计模式在JAVA中的具体运用
2009-10-27 23:32 960浅谈设计模式在JAVA ...
相关推荐
**描述**: Tomcat连接池配置涉及到在Apache Tomcat服务器中设置数据源,以便高效地管理和复用数据库连接。这包括对Oracle和MSSQL Server这两种不同类型的数据库进行配置,并在Java应用程序中引用这些连接池。提供的...
Tomcat 连接池和阿里 Druid 连接池都是常用的数据库连接池实现,但是它们有不同的特点和使用场景。下面是它们的比较: |特点|Tomcat 连接池|阿里 Druid 连接池| | --- | --- | --- | |性能|高效|高效| |可靠性|可靠...
通过上述配置,你可以实现MySQL与Tomcat的高效连接池设置,确保在处理大量并发请求时,数据库连接的创建和管理更加智能化,从而提升整体应用的响应速度和稳定性。记得定期检查和更新连接池的配置,以适应应用的变化...
本文将深入探讨Tomcat连接池的配置,包括为什么要使用连接池、如何配置以及相关jar包和文档的使用。 一、连接池的概念 连接池是一种在应用程序启动时预创建一定数量的数据库连接,供多个线程共享使用的机制。当应用...
总结来说,配置Tomcat连接池是提升Web应用数据库访问性能的重要步骤。通过合理配置连接池参数,可以有效管理数据库连接,避免资源浪费,提升系统整体性能。同时,持续监控和优化连接池设置是保持系统高效运行的关键...
本文将详细介绍如何在Tomcat6中配置连接池,并实现数据库连接的自动重连功能。 #### 二、Tomcat6连接池配置 **1. 修改`conf/server.xml`文件** 在Tomcat6中配置连接池的第一步是修改`conf/server.xml`文件,增加...
本文将详细介绍如何在Tomcat中配置和使用数据库连接池,以及相关的知识点。 首先,我们需要理解数据库连接池的概念。数据库连接池是在应用服务器启动时创建的一组数据库连接,这些连接在应用运行期间可以被多个请求...
Tomcat 中配置 MySQL 数据库连接池 在 Web 开发中,与数据库的连接是必不可少的,而数据库连接池技术很好的优化了动态页与数据库的连接,相比单个连接数据库连接池节省了很大的资源。使用数据库连接池可以将多个...
在Java Web开发中,Tomcat作为一款广泛使用的应用服务器,其数据库连接池配置是十分重要的一个环节。合理的配置能够显著提高应用程序的性能和稳定性。本文将以MySQL数据库为例,详细介绍如何在Tomcat中配置数据库...
总结,Tomcat数据连接池的配置涉及到选择合适的连接池实现、添加依赖、配置Context文件以及在应用中使用数据源。正确配置和管理数据连接池能显著提升Web应用的性能,同时降低资源消耗,是每个Java开发者必备的技能之...
在Linux环境下,开发Web应用程序并集成数据库访问是一个常见的任务,然而在实际操作中可能会遇到各种问题。...同时,对于数据库连接,使用连接池和适当的认证机制也是提升性能和安全性的必要步骤。
标题“Tomcat连接池应用例子”指的是在Java Web开发中,使用Tomcat内置的数据源(连接池)来管理与MySQL数据库的连接。Tomcat作为流行的Java应用服务器,提供了高效的连接池服务,帮助开发者优化数据库操作的性能和...
在Tomcat 5.5x中配置连接池有多种方式,主要包括全局和局部数据库连接池的配置。 1. **全局数据库连接池**: - **通过管理界面配置连接池**:可以通过Tomcat提供的管理界面来配置连接池。 - **直接在`conf/server...
总结,Tomcat连接池的配置是优化数据库性能的关键步骤,理解全局与局部配置的区别,以及可能遇到的错误类型,可以帮助开发者更好地管理和优化数据库连接,提升应用的响应速度和稳定性。通过实际的测试源码,可以直观...
Tomcat服务器是Apache软件基金会...通过上述配置步骤,Tomcat6.0服务器能够与MyEclipse6.0开发环境和mysql5.0数据库协同工作,实现一个高效稳定的数据库连接池,从而提高应用程序处理数据库操作的性能和扩展性。