`
touchmm
  • 浏览: 1038430 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

Tomcat4/5连接池的设置及简单应用示例

阅读更多

标题:Tomcat4/5连接池的设置及简单应用示例

关键字:Tomcat 连接池 JDBC驱动 Context

作者:jrq

内容:

一、Win2k下Tomcat4的连接池的配置

1.安装JDK1.4和jakarta-tomcat-4.1.27.exe。

路径分别为 D:\jdk1.4 和 D:\Tomcat 4.1。
安装Tomcat 4时,会要求填写web访问端口、用户名、密码等信息。
web访问端口默认为8080,用户名默认为admin,密码自己填写。

启动Tomcat4,访问http://127.0.0.1:8080/ ,就能看到Apache Tomcat/4.1.27的欢迎访问页面,页面上有一些相关介绍信息等。


2.设置数据库的驱动

以Oracle的JDBC驱动设置为例:

Oracle8i的驱动在\oracle\ora81\jdbc\lib\目录下。名字为classes12.zip。

Oracle9i的驱动在\oracle9i\jdbc\lib\目录下,名字为ojdbc14.jar。

将这个文件copy到D:\Tomcat 4.1\common\lib 下。

注意,如果使用Oracle8i 的驱动,则需要在D:\Tomcat 4.1\common\lib 目录下将classes12.zip更名为classes12.jar,因为Tomcat4不认识zip的后缀名。


3.设置Web应用。

新建一个文件夹,名字为mypool,位置为D:\mypool。这个D:\mypool路径将是web应用的主目录。

打开D:\Tomcat 4.1\conf\server.xml 文件,找到如下行:

<!-- Tomcat Root Context -->
<!--
<Context path="" docBase="ROOT" debug="0"/>
-->


在这下面,加入如下行:

<Context path="/mypool" docBase="D:\mypool" privileged="true" reloadable="true"/>


完成后,成为这个样子:

<!-- Tomcat Root Context -->
<!--
<Context path="" docBase="ROOT" debug="0"/>
-->

<Context path="/mypool" docBase="D:\mypool" privileged="true" reloadable="true"/>

保存D:\Tomcat 4.1\conf\server.xml 文件。

配置完成后,重新启动Tomcat,就可以这样访问这个web应用了: http://127.0.0.1:8080/mypool/


4.设置Tomcat的连接池数据源。

访问 http://127.0.0.1:8080/admin 页面,用刚才安装 Tomcat4 时填写的用户名和密码登录。

登录成功后,会出现Tomcat 的web应用管理界面(Tomcat Web Server Administration Tool)。

然后在左边的目录树点击“Data Sources”项,右边可以看到JNDI配置的页面。

在右上角的下拉框中选择“Create New Data Source”,接下来填写配置信息:

JNDI Name: jdbc/myOrcl
Data Source URL: jdbc:oracle:thin:@192.168.6.40:1521:dbserver
JDBC Driver Class: oracle.jdbc.driver.OracleDriver
User Name: myname
Password: mypassword
Max. Active Connections: 可用默认值
Max. Idle Connections: 可用默认值
Max. Wait for Connection: 可用默认值
Validation Query: 可不填写。

然后,按下“save”按钮保存。
再按下“Commit Changes”按钮将配置更改提交完成。

此时如果看看 Tomcat4 的窗口,会发现在最下面有一行文字提示:

Debugging -- changes saved to conf/server.xml

此时 D:\Tomcat 4.1\conf\server.xml 文件的配置已经更改保存完毕。


如果此时打开D:\Tomcat 4.1\conf\server.xml 文件,会发现server.xml 文件的内容改变了很多。
一些注释文字都被去掉了。

还会发现上面第三步配置Web应用的如下文字

<!-- Tomcat Root Context -->
<!--
<Context path="" docBase="ROOT" debug="0"/>
-->

<Context path="/mypool" docBase="D:\mypool" privileged="true" reloadable="true"/>

则被自动修改成了这样的:

<Context className="org.apache.catalina.core.StandardContext" cachingAllowed="true" charsetMapperClass="org.apache.catalina.util.CharsetMapper" cookies="true" crossContext="false" debug="0" docBase="D:\mypool" mapperClass="org.apache.catalina.core.StandardContextMapper" path="/mypool" privileged="true" reloadable="true" swallowOutput="false" useNaming="true" wrapperClass="org.apache.catalina.core.StandardWrapper">
</Context>


好了,至此位置,对Oracle的应用连接池已经配置完毕。

仔细对照server.xml 文件,会发现刚才所配置的连接池信息被放置在<GlobalNamingResources>标签中,这意味着这个信息是可以被全局引用的,大致是如下的样子:

<GlobalNamingResources>
<Environment name="simpleValue" override="true" type="java.lang.Integer" value="30"/>
<Resource name="jdbc/myOrcl" scope="Shareable" type="javax.sql.DataSource"/>
<Resource auth="Container" description="User database that can be updated and saved" name="UserDatabase" scope="Shareable" type="org.apache.catalina.UserDatabase"/>

<ResourceParams name="jdbc/myOrcl">
<parameter>
<name>maxWait</name>
<value>5000</value>
</parameter>
<parameter>
<name>maxActive</name>
<value>200</value>
</parameter>
<parameter>
<name>password</name>
<value>mypassword</value>
</parameter>
<parameter>
<name>url</name>
<value>jdbc:oracle:thin:@192.168.6.40:1521:dbserver</value>
</parameter>
<parameter>
<name>driverClassName</name>
<value>oracle.jdbc.driver.OracleDriver</value>
</parameter>
<parameter>
<name>maxIdle</name>
<value>20</value>
</parameter>
<parameter>
<name>username</name>
<value>myname</value>
</parameter>
</ResourceParams>
<ResourceParams name="UserDatabase">
<parameter>
<name>factory</name>
<value>org.apache.catalina.users.MemoryUserDatabaseFactory</value>
</parameter>
<parameter>
<name>pathname</name>
<value>conf/tomcat-users.xml</value>
</parameter>
</ResourceParams>
</GlobalNamingResources>


5.设置web应用对连接池的引用。

打开D:\Tomcat 4.1\conf\server.xml 文件,找到刚才配置的web应用文字,由于刚才server.xml 文件被自动修改过,并去掉了很多注释内容,所以刚才配置的web应用

<Context path="/mypool" docBase="D:\mypool" privileged="true" reloadable="true"/>

被自动修改成了这样的:

<Context className="org.apache.catalina.core.StandardContext" cachingAllowed="true" charsetMapperClass="org.apache.catalina.util.CharsetMapper" cookies="true" crossContext="false" debug="0" docBase="D:\mypool" mapperClass="org.apache.catalina.core.StandardContextMapper" path="/mypool" privileged="true" reloadable="true" swallowOutput="false" useNaming="true" wrapperClass="org.apache.catalina.core.StandardWrapper">
</Context>

在<Context></Context>的描述中加上本web应用对全局连接池的引用说明,如下文字:

<ResourceLink global="jdbc/myOrcl" name="jdbc/myOrcl" type="javax.sql.DataSource"/>

设置完成后,web应用的描述大致如下面的样子:

<Context className="org.apache.catalina.core.StandardContext" cachingAllowed="true" charsetMapperClass="org.apache.catalina.util.CharsetMapper" cookies="true" crossContext="false" debug="0" docBase="D:\mypool" mapperClass="org.apache.catalina.core.StandardContextMapper" path="/mypool" privileged="true" reloadable="true" swallowOutput="false" useNaming="true" wrapperClass="org.apache.catalina.core.StandardWrapper">

<ResourceLink global="jdbc/myOrcl" name="jdbc/myOrcl" type="javax.sql.DataSource"/>

</Context>


保存D:\Tomcat 4.1\conf\server.xml 文件。

注意,设置这个连接池的引用说明是非常重要的一步。
一些朋友在Tomcat4中配置连接池失败的原因大都归咎与此。还有网上一些文章说这是一个Tomcat4的一个Bug。
我用了整整两天两夜的时间才明白其中的奥秘。[:(]
当时离疯掉只查一点点。因为毕竟配置一个连接池是很简单的。[:(]


6.一般情况下,到此,连接池的设置就完成了。

然后需要重新启动Tomcat,这样就可以使用连接池来工作了。

但是,看到很多文章上说,还需要设置一下web.xml才能应用。我没有设置web.xml,连接池也可以完全使用。

现在说一下web.xml的配置方法。

在D:\mypool中新建文件夹,命名为WEB-INF,注意是大写的字母。

然后在D:\mypool\WEB-INF\ 下新建文件web.xml,其内容为:

<web-app>
<resource-ref>
<description>Oracle DataSource example</description>
<res-ref-name>jdbc/myOrcl</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
</web-app>

保存D:\mypool\WEB-INF\web.xml 文件。


7.一个简单的应用示例。

写了一个简单的JSP页面,用连接池来访问数据库。

内容如下:
---------------------
<%@ page contentType="text/html;charset=GBK"%>
<%@ page import="javax.naming.*"%>
<%@ page import="javax.sql.*"%>
<%@ page import="java.sql.*"%>
<%
try
{
Context initCtx = new InitialContext();

if(initCtx==null)
throw new Exception("没有匹配的环境");

Context ctx = (Context) initCtx.lookup("java:comp/env");

//获取连接池对象
Object obj = (Object) ctx.lookup("jdbc/myOrcl");

//类型转换
javax.sql.DataSource ds = (javax.sql.DataSource)obj;

if(ds==null)
throw new Exception("没有匹配数据库");

Connection conn = ds.getConnection();

Statement stmt = conn.createStatement();

String strSql="select * from grade"; //SQL,要保证grade数据表里面有记录。

ResultSet rs=stmt.executeQuery(strSql);

if(rs.next())
{
out.println(rs.getString(1));
out.println(rs.getString(2));
}
rs.close(); //关闭ResultSet
stmt.close(); //关闭Statement
conn.close(); //将连接放回到连接池
}

catch(Exception ex)

{
ex.printStackTrace();
throw new SQLException("cannot get Connection pool."+ex);
}
%>

<hr>
--------------------

记住,用完后的数据库连接要释放。
不然当打开的连接过多或恶意刷屏,连接池的连接数目会被用完。
当连接池的连接数目用完后,再访问jsp页面时,会在页面出现如下的错误信息,报告连接池的连接被耗尽:
java.sql.SQLException: DBCP could not obtain an idle db connection, pool exhausted




二、Win2k下Tomcat5 的连接池的配置

安装jakarta-tomcat-5.0.13.exe,假如Tomcat5的安装目录为 D:\Tomcat 5.0 。

别忘了把oracle的驱动程序classes12.jar文件copy到目录 D:\Tomcat 5.0\common\lib\ 下。

Tomcat5的连接池设置和Tomcat4 的差不多,仅说明一下不同点或需要特别注意的地方。


1. Tomcat5启动后,访问 http://127.0.0.1:8080/admin 页面,当设置完Tomcat的连接池数据源后,打开D:\Tomcat 5.0\conf\server.xml 文件,会看到配置的连接池相关信息大致如下样子:

<GlobalNamingResources>
<Environment name="simpleValue" type="java.lang.Integer" value="30"/>
<Resource name="jdbc/myOrcl" type="javax.sql.DataSource"/>
<Resource auth="Container" description="User database that can be updated and saved" name="UserDatabase" type="org.apache.catalina.UserDatabase"/>
<ResourceParams name="jdbc/myOrcl">
<parameter>
<name>maxWait</name>
<value>5000</value>
</parameter>
<parameter>
<name>maxActive</name>
<value>4</value>
</parameter>
<parameter>
<name>password</name>
<value>mypassword</value>
</parameter>
<parameter>
<name>url</name>
<value>jdbc:oracle:thin:@127.0.0.1:1521:dbserver</value>
</parameter>
<parameter>
<name>driverClassName</name>
<value>oracle.jdbc.driver.OracleDriver</value>
</parameter>
<parameter>
<name>maxIdle</name>
<value>2</value>
</parameter>
<parameter>
<name>username</name>
<value>myusername</value>
</parameter>
</ResourceParams>
<ResourceParams name="UserDatabase">
<parameter>
<name>factory</name>
<value>org.apache.catalina.users.MemoryUserDatabaseFactory</value>
</parameter>
<parameter>
<name>pathname</name>
<value>conf/tomcat-users.xml</value>
</parameter>
</ResourceParams>
</GlobalNamingResources>

可以看到,一些连接池的信息配置参数已经和Tomcat4不同了。
但大致配置步骤和方法都是一样的。


2.设置web应用对连接池的引用。

打开D:\Tomcat 5.0\conf\Catalina\localhost\ 目录,找到和web应用同名的xml文件(mypool.xml),打开这个文件,
修该其<Context></Context>的描述信息,添加如下行:

<ResourceLink global="jdbc/myOrcl" name="jdbc/myOrcl" type="javax.sql.DataSource"/>

使mypool.xml文件的内容看起来大致这个:

<Context docBase="D:/mypool" path="/mypool" privileged="true" reloadable="true">
<ResourceLink global="jdbc/myOrcl" name="jdbc/myOrcl" type="javax.sql.DataSource"/>
</Context>

然后保存mypool.xml,需要重新Tomcat5服务,使之生效。


3.JSP页面测试文件的写法也是一样的,不再赘述。

4.一些补充:

如果web应用没有配置对连接池的引用,即没有配置<ResourceLink>,则会在访问jsp页面时出现如下错误:
NameNotFoundException: Name jdbc is not bound in this Context

如果缺少Oracle的JDBC驱动,则会在访问jsp页面时出现如下错误:
java.sql.SQLException: Cannot load JDBC driver class 'oracle.jdbc.driver.OracleDriver'




by jrq

2004年10月26日夜 于石市

分享到:
评论

相关推荐

    Tomcat5的数据库连接池配置Tomcat5的数据库连接池配置

    ### Tomcat5的数据库连接池配置详解 #### 引言 在Java Web开发中,数据库连接池是一项关键的技术,能够显著提升应用性能和资源利用效率。对于Tomcat5这一历史较为悠久但依然在某些场景中活跃的服务器软件,正确...

    Tomcat的数据库连接池设置与应用

    ### Tomcat的数据库连接池设置与应用 #### 概述 Tomcat作为一款广泛使用的Java应用服务器,其数据库连接池的正确配置对于提高系统性能、确保应用稳定运行至关重要。数据库连接池可以有效管理数据库连接资源,减少...

    tomcat连接池与阿里Druid连接池

    Tomcat 连接池和阿里 Druid 连接池的配置和比较 Tomcat 连接池是一种基于 Java 的数据库连接池实现,提供了高效、可靠的数据库连接管理。阿里 Druid 连接池是阿里巴巴开发的开源连接池,提供了高性能、可靠的数据库...

    tomcat连接池应用例子

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

    Tomcat web应用中配置连接池的详细过程

    ### Tomcat Web 应用中配置连接池的详细过程 #### 一、引言 在现代Web开发中,数据库连接管理是一项重要的任务。为了提高应用性能并减少资源消耗,通常会采用连接池技术来管理数据库连接。对于部署在Tomcat服务器...

    tomcat数据库连接池设置

    Tomcat 数据库连接池设置 Tomcat 数据库连接池是一种高效的数据库连接管理机制,它能够帮助开发者快速建立和管理数据库连接,提高应用程序的性能和可靠性。在本文中,我们将详细介绍 Tomcat 数据库连接池的设置过程...

    tomcat6.0连接池配置方法详解

    本文将详细介绍如何在Tomcat 6.0中配置连接池,并通过一个简单的示例来展示其配置方法。 #### 一、连接池基本概念 在Java Web应用中,频繁地创建和关闭数据库连接会消耗大量的系统资源并降低应用程序的性能。因此...

    Tomcat配置数据源连接池示例

    本示例主要关注如何在Apache Tomcat服务器中配置数据源连接池,以提高数据库访问的效率和稳定性。Tomcat作为一个流行的Java Servlet容器,支持多种数据源连接池实现,如Apache Commons DBCP、C3P0、HikariCP等。在这...

    Tomcat服务器配置及数据库连接池配置(个人整理版)

    ### Tomcat服务器配置及数据库连接池配置详解 #### 一、Tomcat服务器配置与环境搭建 ##### 1. JDK安装与配置 - **系统环境**:Windows 2003 Server SP3。 - **JDK路径设置**: - `JAVA_HOME` 设置为 `C:\JDK`。 ...

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

    ### Tomcat6连接池配置详解(自动重连) #### 一、引言 在现代Web应用开发中,数据库连接管理是非常重要的一环。为了提高应用性能并确保资源的有效利用,通常采用连接池技术来管理数据库连接。Apache Tomcat作为一...

    Tomcat配置Oracle连接池.doc

    《Tomcat配置Oracle连接池详解》 在Java Web应用中,Tomcat作为流行的Servlet容器,其性能优化和资源管理是关键环节之一。Oracle数据库作为企业级的数据库管理系统,经常被用于存储大量数据。本文将深入探讨如何在...

    Tomcat 的数据库连接池设置与应用

    本文将详细介绍如何在Tomcat中配置和使用数据库连接池。 首先,我们需要将数据库驱动的JAR文件放入Tomcat的`common/lib`目录下。这是因为Tomcat的`common/lib`目录下的JAR文件会被所有Web应用程序共享,确保驱动...

    tomcat 6.X 连接池的配置

    Tomcat 6.X 的连接池配置是一个核心环节,它通过数据库连接池实现资源复用,提高应用效率。 【标签】:Tomcat 连接池 MySQL Oracle 【正文】: 数据库连接池是现代Web应用程序中不可或缺的一部分,它优化了数据库...

    tomcat6.0数据库连接池驱动

    对于Tomcat这样的Java应用服务器来说,数据库连接池的使用能够有效地管理和复用数据库连接,减少每次建立和关闭连接的时间消耗,从而提高系统效率。本文将详细介绍Tomcat 6.0版本中的数据库连接池及其驱动的使用。 ...

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

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

    最简易干净tomcat 连接池 示例

    这是一个很简易并且很干净的tomcat连接池示例,在该示例中有详细的说明,最为重要的是它只突出表现tomcat和链接池的技术,剥离了其他繁琐的技术,所以很适合对初学连接池的读者,和像我一样当年花了好长时间配了好久...

    tomcat6连接池 数据源配置

    通过以上配置,我们可以在 Tomcat 6 中成功设置一个 Oracle 数据库的连接池数据源。合理的配置不仅能提升应用性能,还能保证系统的稳定性和安全性。开发者应根据实际需求灵活调整各项参数,并密切关注应用运行时的...

    tomcat连接池的使用

    Tomcat连接池是Java应用程序中用于管理数据库连接的重要组件,它允许高效地重用数据库连接,从而提高系统性能并减少资源消耗。对于Java初学者来说,理解如何设置和使用Tomcat连接池是至关重要的。 首先,为了使用...

    JVM-Tomcat线程-数据库连接池设置建议.docx

    对于数据库连接池的配置,同样需要综合考虑服务器资源及应用需求。 1. **连接池配置示例**: - **`initial-size`**:初始连接数。应小于等于Tomcat设置里的 `minSpareThreads`。 - **`max-active`**:最大活动...

Global site tag (gtag.js) - Google Analytics