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

[转]Tomcat中数据源的配置和使用

阅读更多
http://blog.csdn.net/pengpenglin/

一、数据源简介:
************************************************************************************
在Java语言中,DataSource对象就是一个代表数据源实体的对象。一个数据源就是一个用来存储数据的工具,它可以是复杂的大型企业级数据库,也可以是简单得只有行和列的文件。数据源可以位于在服务器端,也可以位于客服端。

应用程序通过一个连接来访问数据源,那么一个DataSource对象就是用于提供连接数据源的工具。DataSource接口提供了两个方法用于建立和数据源的连接,使用DataSource对象建立和数据库的连接比起使用DriverManager接口更加高效,虽然两者的使用范围都很相似,并且都提供了方法用于建立和数据库的连接,设置连接的最大超时时间,获取流、登录。
   
但 两者之间的区别更加明显。和DriverManager不同,一个DataSource对象能够识别和描述它所代表的数据源的属性,而且 DataSource对象的工作和JNDI(Javatm Naming and Directory Interfaceti)具有密切的关系, DataSource的建立、发布、独立于应用程序的管理都依靠JNDI技术。
    
在JDBC2.0或JDBC3.0中,所有的数据库驱动程序提供商必须提供一个实现了DataSource接口的类,要使用数据源必须首先在JNDI中注册该数据源对象。
如果在JNDI中注册了数据源对象,将会比起使用DriverManager来具有两个方面的优势:
首 先程序不需要像使用DriverManager一样对加载的数据库驱动程序信息进行硬编码,程序员可以选择先在JNDI中注册这个数据源对象,然后在程序 中使用一个逻辑名称来引用它,JNDI会自动根据你给出的名称找到与这个名称绑定的DataSource对象。然后就可以使用这个DataSource对 象来建立和具体数据库的连接了。

其次,使用实现了DataSource接口的类所具有的第二个优势体现在连接池和分布式事务上。连接池通过对连接的复用而不是新建一个物理连接来显著地提高程序的效率。从而适用于任务繁忙、负担繁重的企业级分布式事务。
*************************************************************************************

二、JNDI简介:
*************************************************************************************
JNDI是用于向Java程序提供目录和命名功能的API。它被设计成独立于特定的目录服务,所以各种各样的目录都可以通过相同的方式进行访问。

可以简单地把JNDI理解为一种将对象和名字绑定的技术,对象工厂负责生产出对象,这些对象都和惟一的名字绑定。外部程序可以通过名字来获取对某个对象的引用。

在Intranets (企业内部网)和Internates(互联网)中目录服务(Directory service)扮演了一个非常重要的角色,它能够在众多的用户、机 器、网络、服务、应用程序中访问各种各样的信息。目录服务提供了一系列的命名措施,用人类可以理解的命名方式来刻画各种各样的实体之间的关系

一 个企业式计算环境(computing environment)通常是由若干代表不同部分的命名复合而成。比如在一个企业级环境中DNS (Domain Name System)通常被当成顶层的命名方案(top-level namein facility)区分不同的部门或组织。而这 些部门或组织自己又可以使用诸如LADP或NDS的目录服务

从用户的角度来看,这些都是由不同的命名方案构成的复合名称。URL就是一个很典型的例子,它由多个命名方案构成。使用目录服务的应用程序必须支持这种复合构成方式

使 用目录服务API的Java开发人员获得的好处不仅在于API独立于特定的目录或命名服务,而且可以通过多层的命名方案无缝访问 (seamless acess)目录对象。实际上,任何的应用程序都可以将自身的对象和特定的命名绑定起来,这种功能可以使到任何的Java程序查找和 获取任何类型的对象

终端用户可以方便地使用逻辑名称从而轻易地在网络上查找和识别各种不同的对象,目录服务的开发人员可以使用API方便地在不同的客服端之间切换而不需要作任何更改
*************************************************************************************


三、数据源和连接池的关系:
*************************************************************************************
JDBC2.0提供了javax.sql.DataSource接口,它负责建立与数据库的连接,在应用程序访问数据库时不需要编写连接数据库的代码,可以直接从数据源获得数据库连接。
 
在DataSource中事先建立了多个数据库连接,这些数据库连接保存在连接池(Connect Pool)中。Java程序访问数据库时,只需要从连接池中取出空闲状态的数据库连接;当程序访问数据库结束,再将数据库连接放回连接池。
*************************************************************************************


四、数据源和JNDI的关系:
*************************************************************************************
DataSource对象是由Tomcat提供的,因此不能在程序中采用创建一个实例的方式来生产DataSource对象,而需要采用Java的另一个技术JNDI,来获得DataSource对象的引用。

Tomcat把DataSource作为一种可以配置的JNDI资源来处理。生成DataSource对象的工厂为org.apache.commons.dbcp.BasicDataSourceFactory。

在javax.naming包中提供了Context接口,该接口提供了将对象和名字绑定,以及通过名字检索对象的方法。Context中的主要方法有:
bind(String name,Object object):将对象与一个名字绑定
lookup(String name):返回与指定的名字绑定的对象
*************************************************************************************


五、Tomcat中数据源的配置:
*************************************************************************************
数据源的配置涉及修改server.xml和web.xml,在server.xml中加入定义数据源的元素<Resource>,在web.xml加入<resource-ref>元素,声明该Web应用所引用的数据


A.在server.xml中加入<Resource>元素:<Resource>元素用来定义JNDI Resource。
  
属性    描述
name    指定Resource的JNDI名字
auth    指定管理Resource的Manager,它有两个可选值:Container、Application
type    指定Resource所属的Java类名

<Resource name = "jdbc/BookDb" 
auth = "Container" 
        type = "javax.sql.DataSource" />

B.在<Resource>元素中加入<ResourceParams>元素:<ResourceParams>元素用来指定各种参数值
  
属性    描述
factory    指定生成的DataResource的factory类名
maxActive    指定数据库连接池中处于活动状态的最大连接数目,0表示不受限制
maxIdle    指定数据库连接池中处于空闲状态的最大连接数目,0表示不受限制
maxWait    指定连接池中连接处于空闲状态的最长时间,超过会抛出异常,-1表示无限
username    指定连接数据库的用户名
password    指定连接数据库的口令
driverClassName    指定连接数据库的JDBC驱动程序
url             指定连接数据库的URL

   <ResourceParams name = "jdbc/BookDb">

    <parameter>
       <name>factory</name>
       <value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
    </parameter>

    <parameter>
       <name>maxActive</name>
       <value>100</value>
    </parameter>

    <parameter>
       <name>maxIdle</name>
       <value>30</value>
    </parameter>

    <parameter>
       <name>maxWait</name>
       <value>10000</value>
    </parameter>

    <parameter>
       <name>username</name>
       <value>user</value>
    </parameter>

    <parameter>
       <name>password</name>
       <value>1234</value>
    </parameter>  

    <parameter>
       <name>driverClassName</name>
       <value>com.mysql.jdbc.Driver</value>
    </parameter>

    <parameter>
       <name>url</name>
       <value>jdbc:mysql//localhost:3306/BookDb?autoReconnect=true</value>
    </parameter>  

</ResourceParams>

C.在web.xml中加入<resource-ref>元素:<resource-ref>元素表示在Web应用中引用JNDI资源
  
属性                  描述
description    对所引用的资源的说明
res-ref-name    指定所引用资源的JNDI名字,与<Resource>元素中的name属性对应
res-type             指定所引用资源的类名字,与<Resource>元素中的type属性对应
res-auth             指定所引用资源的Manager,与<Resource>元素中的auth属性对应

*************************************************************************************


六、在Web应用中使用数据源:
*************************************************************************************
javax.naming.Context提供了查找JNDI Resource的接口,可以通过三个步骤来使用数据源对象:

A.获得对数据源的引用:
    Context ctx = new InitalContext();
DataSource ds = (DataSource)ctx.lookup("java:comp/env/jdbc/BookDb");

    B.获得数据库连接对象:
        Connection con = ds.getConnection();
  
    C.返回数据库连接到连接池:
        con.close();



在连接池中使用close()方法和在非连接池中使用close()方法的区别是:前者仅仅是把数据库连接对象返回到数据库连接池中,是连接对象又恢复到空闲状态,而非关闭数据库连接,而后者将直接关闭和数据库的连接
*************************************************************************************


七、发布使用数据源的Web应用:
*************************************************************************************
  如果直接同JDBC访问数据库,可以把JDBC驱动程序拷贝到Web应用的WEB-INF/lib目录或者Tomcat安装目录下的common/lib目录下。
  
  如果通过数据源访问数据库,由于数据源由Servlet容器创建并维护,所以必须把JDBC驱动程序拷贝到Tomcat安装目录下的common/lib目录下,确保Servlet容器能够访问驱动程序。
*************************************************************************************
分享到:
评论

相关推荐

    Tomcat JDNI数据源配置详解

    ### Tomcat JNDI数据源配置详解 #### 一、引言 在现代Web应用开发中,数据库连接管理是一项至关重要的任务。为了提高应用程序的性能和可维护性,通常会采用连接池技术来管理和复用数据库连接。Apache Tomcat作为一...

    TomCat数据源配置

    首先,我们来看一下Tomcat 5.5中的数据源配置。数据源(DataSource)是Java应用程序用来管理数据库连接的一种方式,它能够有效地管理数据库连接的创建、分配和释放,提高系统的性能和资源利用率。在Tomcat中,我们...

    详细介绍在tomcat中配置数据源原理

    在上面的配置中,我们定义了一个名为 jdbc/MyDB 的数据源,使用 Oracle 数据库,username 是数据库用户名,password 是数据库密码,driverClassName 是 JDBC 驱动程序的类名,url 是数据库连接的 URL,maxActive 是...

    Tomcat 数据源配置

    #### 一、理解Tomcat数据源配置的重要性 在现代Web应用开发中,数据库作为数据持久层的重要组成部分,其性能和稳定性直接影响到整个应用程序的表现。因此,合理配置数据库连接池(即数据源)对于提高Web应用的响应...

    tomcat jboss数据源配置.rar

    本主题主要聚焦于"tomcat jboss数据源配置.rar",这是一个关于如何在Tomcat 5.5和JBoss 4.0中配置数据源,特别是与Oracle数据库交互的详细过程。下面将深入探讨这两个关键组件以及数据源配置的相关知识点。 首先,...

    tomcat数据源连接池配置

    - 如果是集群环境,还需要考虑数据源的分布式一致性问题,可能需要使用像JNDI目录服务或分布式缓存来共享数据源配置。 通过以上步骤,您应该能够成功地在Tomcat中配置数据源连接池。正确配置和使用数据源不仅可以...

    Tomcat5.5数据源的配置[图解]

    总的来说,配置Tomcat数据源涉及多个步骤,包括安装管理插件、配置服务器和应用级别的XML文件,以及正确设置数据库连接参数。每个环节都至关重要,只有确保这些步骤都准确无误,才能实现平稳的数据库连接。

    tomcat 5.5数据源配置

    Tomcat 5.5 数据源配置是将数据库连接管理交由应用服务器处理的重要步骤,它提高了应用的性能和可维护性。数据源(DataSource)是Java中用于管理数据库连接的接口,它提供了池化连接的能力,避免了频繁创建和关闭...

    tomcat6.0 数据源配置

    标题“Tomcat6.0数据源配置”涉及的是在Apache Tomcat 6.0版本中设置和管理数据库连接池的过程。Tomcat作为一个流行的开源Java应用服务器,提供了多种数据源配置方式,以支持Web应用程序高效、安全地访问数据库。在...

    tomcat中配置数据源

    首先,我们需要了解Tomcat的数据源配置文件通常位于`conf/server.xml`中。在这个文件中,我们可以找到`&lt;GlobalNamingResources&gt;`标签,这个区域就是用来定义全局的JNDI资源,包括数据源。下面是一个基本的数据源配置...

    TOMCAT 中的数据源配置

    用于在tomcat中配置java数据源用于在tomcat中配置java数据源用于在tomcat中配置java数据源用于在tomcat中配置java数据源用于在tomcat中配置java数据源。

    tomcat配置JNDI数据源

    【内容】:配置JNDI数据源在Java Web应用程序中是一个重要的任务,它允许应用与数据库之间的连接管理更加高效和集中。在Tomcat服务器上,JNDI(Java Naming and Directory Interface)数据源提供了一种标准的方式来...

    tomcat-数据源配置

    数据源配置是连接数据库的关键步骤,确保高效、可靠的数据库连接管理。本文将详细解释如何在Tomcat中配置数据源,以及如何在应用程序中使用这些配置。 首先,为了与MySQL数据库通信,需要将MySQL的JDBC驱动程序JAR...

    在Tomcat中配置数据源

    - **方法一**:在Web应用的`WebRoot/META-INF`目录下创建`context.xml`文件,并在其中添加数据源配置。这种方式适用于单个Web应用的数据源配置。 ```xml maxActive="100" maxIdle="100" maxWait="10000" ...

    tomcat配置数据源步骤

    - 在上述配置中,`name`是数据源的JNDI名称,`auth`指定认证方式,`type`是数据源类型,`maxActive`、`maxIdle`和`maxWait`分别设置最大活动连接数、最大空闲连接数和最大等待时间。`username`、`password`、`...

    tomcat数据源oralce模板配置

    在Java Web应用中,Tomcat作为一款广泛应用的Servlet容器,经常需要配置数据源来连接数据库。本篇将详细讲解如何在Tomcat中配置Oracle数据源的模板,这将为其他数据库的配置提供参考。 首先,我们需要了解数据源...

    intellij idea使用tomcat开发时自动部署jndi数据源

    通过以上步骤,开发者可以在IntelliJ IDEA中使用Tomcat自动部署JNDI数据源,实现高效、灵活的数据库连接管理。这对于大型企业级应用来说尤其重要,因为它简化了数据库连接的配置和管理,使得团队协作变得更加顺畅。

    tomcat 配置数据源

    ### 数据源配置示例分析 在给出的例子中,我们看到了如何在一个名为`/test`的Web应用中配置名为`jdbc/mldn`的数据源: - 应用的物理路径被设置为`F:\testweb\`。 - 调试级别设置为5,这意味着将启用较为详细的调试...

    tomcat数据源的配置及使用

    tomcat数据源的配置及使用 在eclipse中开发的示例,txt文档的说明,exe文件的教程。在使用JNDI,可分为5步 (1)配置context.xml文件(Tomcat 6.0\conf文件夹下),把连接数据库用的驱动包(sqljdbc.jar)复制到...

    tomcat下配置数据源附xml文件

    2. **配置Context文件**:Tomcat的数据源配置通常在`$CATALINA_BASE/conf/Catalina/localhost`目录下的`context.xml`文件中进行。如果该文件不存在,需要手动创建。在这里,我们将添加一个`&lt;Resource&gt;`标签来定义...

Global site tag (gtag.js) - Google Analytics