Tomcat中的数据源技术
一、概述:
- 数据源技术的核心原理
- 在一个对象池(也成数据库连接池Connection Pool)中 保存多个数据库连接对象
- 之后在进行数据库操作时,就不需要自己创建数据库连接对象,并且自己负责关闭数据库连接
- 而是直接从数据库连接池中取出一个数据库连接对象来用,用完之后再放回数据库连接池中,等待其他用户继续使用
- Tomcat4.1.x版本之后都支持数据库连接池技术,开发者可以直接使用Tomcat容器中所提供的数据库连接池,来管理数据库连接对象(即DatabaseConnection对象)
- 如果不想使用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对象,并且使用后释放该对象
-
-
-