Tomcat中的数据源------>数据库连接池

Tomcat中的数据源技术

一、概述:

  1. 数据源技术的核心原理
    • 在一个对象池(也成数据库连接池Connection Pool)中    保存多个数据库连接对象  
    • 之后在进行数据库操作时,就不需要自己创建数据库连接对象,并且自己负责关闭数据库连接
    • 而是直接从数据库连接池中取出一个数据库连接对象来用,用完之后再放回数据库连接池中,等待其他用户继续使用
  2. Tomcat4.1.x版本之后都支持数据库连接池技术,开发者可以直接使用Tomcat容器中所提供的数据库连接池,来管理数据库连接对象(即DatabaseConnection对象)
  3. 如果不想使用Tomcat中提供的数据库连接池,也可以使用其他三方组件提供的数据库连接池,如Apache组织的C3P0组件实现了数据库连接池功能。  

二、如何使用Tomcat中提供的数据库连接池(编程思路---->概述)

  • step1,首先要了解数据库连接池相关的一些概念
    • 最小连接数:没有用户连接至该网站时,池中应该维持的最小数据库连接数
    • 最大连接数:池中可以维持的最大数据库连接数
    • 最大等待时间:当池中没有可用的数据库连接时,用户首先要等待一段时间,如果等待的时间内有其他数据库连接被释放了,则该用户就可以获取并使用其他用户释放的数据库连接对象。但是如果等待的时间超出了“最大等待时间”,则用户无法取得数据库连接,程序报错。 
  • step2,明确下面的三件事:
    • 数据库连接池其实就是一个存放了若干数据库连接对象的池子,并且可以控制其最小连接数、最大连接数、最大等待时间等特性,并且支持数据库连接对象数目的动态变化, 
    • 可以使用java程序编写出拥有上述功能的数据库连接池
    • 也可以使用Tomcat中已经实现的数据库连接池
    • 或者也可以使用其他三方组件所实现的数据库连接池(如Apache的C3P0组件)
  • step3,我们这里使用的是Tomcat中已经实现的数据库连接池,下面讲述如何在自己的project中使用Tomcat中的数据库连接池
    • step3.1,客户端程序通过查询JNDI上的key获得一个DataSource对象
    • step3.2,通过DATASource对象取得ConnectionPool中保存的一个数据库连接
    • step3.3,使用step3.2中获取的数据库连接对象实例化PreparedStatement对象
    • step3.4,执行相应的SQL语句,将执行结果存放至ResultSet对象中  

 三、使用Tomcat中已经实现的数据库连接池(编程思路---->具体编程)

  • step1,配置Tomcat安装目录/conf/server.xml文件,在Tomcat容器中为你的project创建一个   数据库连接池实例对象
      • 如上所述,在Tomcat的server.xml中为自己的project创建了一个数据库连接池,并且设定了该数据库连接池的最小和最大连接数、用户最大等待时间。并且配置了该数据库连接池中所存放的数据库连接对象的驱动程序、DBURL、数据库连接用户名和密码。

  •  step2,配置自己的project的web.xml,指明自己的project想要使用的数据库连接池名称(即数据源名称)

      • step1中在Tomcat安装目录下的conf/server.xml中通过相应配置,为你的Project创建了一个数据库连接池。   并且由Tomcat容器负责管理该数据库连接池对象实例,以及数据库连接池中的数据库连接对象

      • 下面就需要在你自己的project的web.xml中也添加相应的配置,告诉你的project中的程序,如果想要使用数据库连接操作数据库的话,就从Tomcat所维持的数据库连接池中获取相应的数据库连接对象   

  • step3,在客户端程序中从数据库连接池获取数据库连接对象,并且使用完该连接对象后重新将其释放至数据库连接池

      • step3.1,初始化名称查找上下文:Context

      • step3.2,通过server.xml中配置的数据源名称(也即数据库连接池名称)查找DataSource对象(也即数据库连接池对象)

      • step3.3,从上述数据库连接池中获取一个数据库连接对象(也即通过DataSource对象获取Connection对象)

      • step3.4,使用上述数据库连接对象(也即Connection对象)

      • step3.5,释放上述Connection对象,将其放回数据库连接池中,等待后面的用户使用

      • 实例一,在jsp页面中通过DataSource获取Connection对象,并且使用后释放该对象

          •  

             

                
      • 实例二,在java程序中(如持久层代码中)通过DataSource获取Connection对象,并且使用后释放该对象

          •  

                    

             

                

posted on 2017-06-14 22:47  LXRM-JavaWeb、ML  阅读(245)  评论(0编辑  收藏  举报

导航