- 浏览: 38673 次
- 性别:
- 来自: 深圳
最新评论
转录笔记:不过遗憾的是,如下几种方法都没有在我的机器上配置成功(Tomcat5.5.17 + WinXPSP2)。正确配置见我自己的评论,Tomcat 的日志中没发现什么错误,看上去都很正常,但是测试程序却老是提示同样的错误:
Error occurred:org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create JDBC driver of class '' for connect URL 'null'
但Driver名和URL都设置对了,在Admin的DataSource中也看得到。
Tomcat版本之间变化太大了,请大家帮忙看看,到底哪里有问题,谢谢!
1.在$CATALINA_HOME/conf/server.xml中添加配置信息,声明连接池的具体信息,添加内容如下:
<!--声明连接池-->
<Resource name="jdbc/mysql" auth="Container" type="javax.sql.DataSource"/>
<!-- 对连接池的参数进行设置 -->
<ResourceParams name="jdbc/mysql">
<parameter>
<name>factory</name>
<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
</parameter>
<parameter>
<name>maxWait</name>
<value>5000</value>
</parameter>
<parameter>
<name>maxActive</name>
<value>20</value>
</parameter>
<parameter>
<name>username</name>
<value>shopadm</value>
</parameter>
<parameter>
<name>password</name>
<value>123</value>
</parameter>
<parameter>
<name>url</name>
<value>jdbc:mysql://localhost/shopdb?useUnicode=true&charact-erEncoding=gb2312</value>
</parameter>
<parameter>
<name>driverClassName</name>
<value>com.mysql.jdbc.Driver</value>
</parameter>
<parameter>
<name>maxIdle</name>
<value>10</value>
</parameter>
</ResourceParams>
2. 在$CATALINA_HOME/conf/web.xml的</web-app>前添加如下信息:
<resource-ref>
<description>DB Connection</description>
<res-ref-name>jdbc/mysql</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
其中<res-ref-name>中的参数名必须和server.xml中声明的连接名一样。
3. 在$CATALINA_HOME/conf/catalina/localhost目录下找到需要进行数据库连接的当前程序的配置信息,比如这里是shopping.xml,在这个文件中添加如下信息:
<Context …>
…
<ResourceLink name=”jdbc/mysql” global=”jdbc/mysql” type=”javax.sql.DataSource”/>
…
</Context>
大功告成!
在此基础上,参考Tomcat官方网站的用户手册,摸索出另外一种配置连接池的方法,这个方法不需要对server.xml进行修改,只要对需要使用到连接池的程序的配置文档进行修改就可以了。方法如下:
1.$CATALINA_HOME/conf/catalina/localhost目录下找到需要数据库连接池的程序的配置文档,此处是
shopping.xml。在<Context> </Context>之间添加如下信息,声明一个数据库连接池:
<Resource name="jdbc/mysql" auth="Container" type="javax.sql.DataSource"/>
<ResourceParams name="jdbc/mysql">
<parameter>
<name>factory</name>
<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
</parameter>
<parameter>
<name>maxWait</name>
<value>5000</value>
</parameter>
<parameter>
<name>maxActive</name>
<value>20</value>
</parameter>
<parameter>
<name>password</name>
<value>123</value>
</parameter>
<parameter>
<name>url</name>
<value>jdbc:mysql://localhost/shopdb?useUnicode=true&characterEncoding=gb2312</value>
</parameter>
<parameter>
<name>driverClassName</name>
<value>com.mysql.jdbc.Driver</value>
</parameter>
<parameter>
<name>maxIdle</name>
<value>10</value>
</parameter>
<parameter>
<name>username</name>
<value>shopadm</value>
</parameter>
</ResourceParams>
这里的参数和上一种方法中添加到server.xml里的信息几乎是完全一样的。
2.在对应程序的WEB-INF下建立一个web.xml文档,添加如下信息:
<?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">
<resource-ref>
<description>DB Connection</description>
<res-ref-name>jdbc/mysql</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
</web-app>
另外一种方法,与Admin 页面配置结果比较接近,同样是放在GlobalNamingResources中
1.将数据库驱动程序的JAR文件放在Tomcat的 common/lib 中;
2.在server.xml中设置数据源,以MySQL数据库为例,如下:
在<GlobalNamingResources> </GlobalNamingResources>节点中加入,
<Resource
name="jdbc/DBPool"
type="javax.sql.DataSource"
password="root"
driverClassName="com.mysql.jdbc.Driver"
maxIdle="2"
maxWait="5000"
username="root"
url="jdbc:mysql://127.0.0.1:3306/test"
maxActive="4"/>
属性说明:name,数据源名称,通常取”jdbc/XXX”的格式;
type,”javax.sql.DataSource”;
password,数据库用户密码;
driveClassName,数据库驱动;
maxIdle,最大空闲数,数据库连接的最大空闲时间。超过空闲时间,数据库连
接将被标记为不可用,然后被释放。设为0表示无限制。
MaxActive,连接池的最大数据库连接数。设为0表示无限制。
maxWait ,最大建立连接等待时间。如果超过此时间将接到异常。设为-1表示
无限制。
3.在你的web应用程序的web.xml中设置数据源参考,如下:
在<web-app></web-app>节点中加入,
<resource-ref>
<description>MySQL DB Connection Pool</description>
<res-ref-name>jdbc/DBPool</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
<res-sharing-scope>Shareable</res-sharing-scope>
</resource-ref>
子节点说明: description,描述信息;
res-ref-name,参考数据源名字,同上一步的属性name;
res-type,资源类型,”javax.sql.DataSource”;
res-auth,”Container”;
res-sharing-scope,”Shareable”;
4.在web应用程序的context.xml中设置数据源链接,如下:
在<Context></Context>节点中加入,
<ResourceLink
name="jdbc/DBPool"
type="javax.sql.DataSource"
global="jdbc/DBPool"/>
属性说明:name,同第2步和第3步的属性name值,和子节点res-ref-name值;
type,同样取”javax.sql.DataSource”;
global,同name值。
至此,设置完成,下面是如何使用数据库连接池。
1.建立一个连接池类,DBPool.java,用来创建连接池,代码如下:
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;
public class DBPool {
private static DataSource pool;
static {
Context env = null;
try {
env = (Context) new InitialContext().lookup("java:comp/env");
pool = (DataSource)env.lookup("jdbc/DBPool");
if(pool==null)
System.err.println("'DBPool' is an unknown DataSource");
} catch(NamingException ne) {
ne.printStackTrace();
}
}
public static DataSource getPool() {
return pool;
}
}
2.
在要用到数据库操作的类或jsp页面中,用DBPool.getPool().getConnection(),获得一个Connection对象,就可
以进行数据库操作,最后别忘了对Connection对象调用close()方法,注意:这里不会关闭这个Connection,而是将这个
Connection放回数据库连接池。
<补充评论>
在网上再三查找,并经过反复试验后,总算是把它配置好了,发现如下几个问题:
1。 Tomcat 5.5.17 的Admin功能很不完善,在JNDI的配置上存在BUG,无法把非全局的DataSource
或ResourceLinks写入%TOMCAT_HOME%/conf/Catalina/localhost
/<webname>.xml中;只能手工进行;
2.
CLASSPATH配置可能也有问题,Driver包必须放在%TOMCAT_HOME%\common\lib下才能被找
到,%TOMCAT_HOME%/shared/lib下不行,甚至在<webname>/WEB-INF/lib下也不能被找到,应该是这
个版本的问题,记得以前至少在应用下是能找到的;
总结一下,主要是三个地方要配置:
a. %TOMCAT_HOME%/conf/ 下配置DataSource: 配置server.xml 或 localhost/<webname>.xml
其中server.xml下配置DataSource则可供所有WEB应用使用,
需要在<GlobalNamingResources> 下加上<Resource>项,这个通过Admin页面也可以完成;然后给需要用到的应用中加上<ResourceLink>即可,但只能手工进行
<ResourceLink name="jdbc/<jndiname>"
global="jdbc/<jndiname>"
type="javax.sql.DataSource"/>, 放在<Context>下;
如果只想给某个程序用,不想配置Server.xml的话,可以只在localhost/<webname>.xml中加上<Resource>,把<Resource>加到<Context>下
<Resource
auth="Container"
description="DB Connection"
name="jdbc/<jndiname>"
type="javax.sql.DataSource"
driverClassName="com.mysql.jdbc.Driver"
password="<pass>"
maxIdle="2"
maxWait="5000"
username="<user>"
url="jdbc:mysql://localhost/<dbname>"
maxActive="4"/>
b. 在应用的web.xml中配置<resource-ref>
<resource-ref>
<description>EMCenter Database for WEB Applications</description>
<res-ref-name>jdbc/<jndiname></res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
c. 把driver包拷贝到%TOMCAT_HOME%/common/lib/下,应该是最简配置了,有兴趣的可以继续试验,留意看logs/目录下的日志记录能加快进程。其实Admin要是能改进一下最好了,这样太麻烦
另: 有些不解的是,我用的sqltags包(jstl.jar,standard.jar)放在WEB-INF/lib下却能被找到,测试代码如下:
<%@ page language="java" contentType="text/html; charset=GB18030"
pageEncoding="GB18030"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<%@ taglib uri="http://java.sun.com/jsp/jstl/sql"
prefix="sql" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core"
prefix="c" %>
<sql:query var="rs" dataSource="jdbc/<jndiname>">
select * from <tablename>
</sql:query>
<html>
<head>
<title>DB Test</title>
</head>
<body>
<h2>Results</h2>
<c:forEach var="row" items="${rs.rows}">
ID ${row.id}<br/>
name ${row.name}<br/>
</c:forEach>
</body>
</html>
发表评论
-
填色模式干嘛得弄得这么复杂呢?
2005-12-07 22:23 688在做一个2D图形的渲染部分,用于J2ME平台,其实我想要的只是 ... -
J2ME开发工具 Eclipse and EclipseMe
2006-01-08 14:42 1034Eclipse 最近升级非常快,UML2和VE改进了不少,但有 ... -
安装Trac到Debian
2006-01-15 15:30 760前天发现Trac系统,感觉不错,在现有的Issue Track ... -
Eclipse 中与Subversion对接
2006-02-20 12:56 711Subversion号称是CVS的更好版本,具体有多好我没有深 ... -
J2ME小游戏介绍
2006-05-25 21:32 888J2ME Game APIs的使用介绍 ... -
jboss IDE 1.6.0GA有界面部分有些问题,配置不方便
2006-07-29 16:40 799为了一个Web项目的开发,试了下Eclipse + JBoss ... -
有兴趣开发基于SVG技术的WebGIS的技术人员过来看看
2006-07-29 17:02 812最近在学习GIS相关的东西,略有点自己的想法,提出来跟大家探讨 ... -
MySQL与TOMCAT的中文字符问题解决办法
2006-09-27 13:55 916MySQL 5.0.19 NT 版本与TOMCAT 5.5.1 ... -
RIA 之JSF开发环境比较
2007-02-22 18:51 1122JSF和AJAX的RIA开发(刚才不知出了什么毛病,不能发布, ... -
如何在Facelets中使用Tomhawk sandbox?
2007-06-03 10:58 1347在Tomahawk成功部署后,出于对界面的优化和增加一些功能亮 ... -
请指教 基于Java平台的 WEBGIS最简方案
2007-08-07 15:07 1300坦白的说,这是规划中 ... -
MyFaces开发进展似乎不够快
2008-06-16 11:58 955大概有半年多的时间没更新我的JSF程序了,最近得空,到myfa ...
相关推荐
### Tomcat下配置MySQL数据库连接池 #### 一、引言 在Web应用开发中,数据库连接池技术是一项重要的优化手段,它能够显著提高应用程序的性能和响应速度。本文将详细介绍如何在Apache Tomcat服务器环境下配置MySQL...
Tomcat 中配置 MySQL 数据库连接池 在 Web 开发中,与数据库的连接是必不可少的,而数据库连接池技术很好的优化了动态页与数据库的连接,相比单个连接数据库连接池节省了很大的资源。使用数据库连接池可以将多个...
本文将详细讲解如何在Tomcat 5中配置Mysql JDBC数据库连接池。 首先,确保已经安装了JDK,因为Tomcat运行需要JRE的支持。Tomcat的安装过程相对简单,只需按照Windows安装向导的步骤操作即可。在安装过程中,系统会...
本文将详细介绍如何在Tomcat5环境下配置MySQL JDBC数据库连接池。 #### 二、环境准备与安装 1. **安装Tomcat5** - 下载并安装Tomcat5 for Windows安装包,建议直接进行默认安装。注意:安装过程中不要勾选任何...
标题中的“Tomcat5配置MysqlJDBC数据库连接池可用”指的是在Tomcat 5版本中设置MySQL数据库的JDBC连接池的过程。这个过程对于任何Web应用程序运行在Tomcat服务器上,需要与MySQL数据库交互是至关重要的。下面将详细...
### Tomcat5配置MySQL JDBC数据库连接池的知识点详解 #### 一、Tomcat与MySql简介 - **Tomcat**:Apache Tomcat是一款开源的Servlet容器,它实现了Servlet和JavaServer Pages (JSP)技术规范,并提供了作为Web...
以上步骤详细介绍了如何在Tomcat中配置MySQL数据库连接池。合理配置连接池参数对提高应用性能至关重要。例如,`maxActive`控制最大并发连接数,如果设置过高可能会导致服务器资源紧张;而`maxIdle`和`maxWait`则用于...
Tomcat 连接池是一种基于 Java 的数据库连接池实现,提供了高效、可靠的数据库连接管理。阿里 Druid 连接池是阿里巴巴开发的开源连接池,提供了高性能、可靠的数据库连接管理。下面我们将对 Tomcat 连接池和阿里 ...
本文档将指导如何在MyEclipse 6.0环境下配置数据库连接池,以便于Java应用程序能够高效地管理数据库连接。 MySQL是一个流行的开源关系型数据库管理系统,它的版本是5.0。该版本支持SQL语言,并且由于其性能、可靠性...
总结,使用Proxool配置MySQL数据库连接池,不仅可以解决8小时连接超时问题,还可以提升应用程序的性能和稳定性。通过详细配置Proxool,我们可以灵活地调整连接池参数以适应不同应用场景的需求,并通过集成到Tomcat,...
本文将详细讲解如何在Tomcat6中配置数据库连接池,并以`index.jsp`为例展示如何在Web应用中使用这些配置。首先,我们需要了解数据库连接池的基本概念和常用的连接池实现,如Apache的DBCP或C3P0。这里我们假设使用的...
本文将详细介绍如何在Tomcat中配置和使用数据库连接池,以及相关的知识点。 首先,我们需要理解数据库连接池的概念。数据库连接池是在应用服务器启动时创建的一组数据库连接,这些连接在应用运行期间可以被多个请求...
标题中的“Tomcat 5.5.28配置数据库连接池”是指在Apache Tomcat服务器的这个特定版本中,如何设置一个数据库连接池以优化数据库访问性能。数据库连接池是应用服务器管理数据库连接的一种机制,它能有效地复用数据库...
在Linux环境下,开发Web应用程序并集成数据库访问是一个常见的任务,然而在实际操作中可能会遇到各种问题。...同时,对于数据库连接,使用连接池和适当的认证机制也是提升性能和安全性的必要步骤。
Tomcat 6.0数据库连接池驱动的使用,涉及到的主要知识点包括:数据库连接池的概念与作用,Tomcat内置的数据源实现(DBCP和C3P0),数据源的配置方法,JNDI的使用,以及在Java代码中获取和释放数据库连接。...
本篇将详细介绍如何在Tomcat中配置数据库连接池,以实现对数据库资源的有效管理和复用。 一、数据库连接池原理 数据库连接池在初始化时会创建一定数量的数据库连接,并将其存储在内存中。当应用程序需要连接数据库...
2. **配置Oracle数据库连接池** - 首先,需要在Tomcat的`lib`目录下添加Oracle驱动的jar包(如`ojdbc.jar`)。 - 在`conf/server.xml`文件中,定义一个新的`Resource`元素来创建数据源。例如: ```xml type=...
本文将详细介绍如何在Tomcat服务器中配置MySQL数据库连接池,旨在为读者提供实用的操作指南及技巧。 #### 二、基础知识简介 在深入探讨配置细节之前,我们先简要介绍几个关键概念: 1. **Tomcat**:一个开源的...
本文将详细介绍如何在Tomcat 5.5环境中配置MySQL数据库连接池。 #### 二、准备工作 在进行配置之前,确保已经安装并正确设置了以下几个组件: 1. **Tomcat 5.5**:确保已成功安装并能够正常运行。 2. **MySQL**:...