Tomcat使用数据库连接池数据库

 1.连接池技术的作用

数据池允许应用程序重复使用一个现有的数据库连接,而不是重新建立一个。这项技术能明显地提高对数据库操作的性能。

2.什么是连接池技术

        数据库连接池在初始化时将创建一定数量的数据库连接,具体数量的由连接池的最小数据库连接数来设定。无论这些数据库是否被使用,连接池都将确保至少拥有这些数量的连接。同时,连接池可以根据池中连接的使用率,动态增加或减少池中的连接数。Java程序访问数据库时,只需从连接池中取出空闲状态的数据库连接,当程序访问数据库结束时,再将数据库连接返回给连接池,这样做可以提高访问数据库的效率。

        已经创建但尚未分配出去的连接被存放到一个空闲池中,每当用户请求一个链接时,系统首先检查空闲池内有没有空闲连接。如果有就分配一个连接给用户;如果没有则检查当前连接池是否已达到所允许的最大连接数(连接池的最大数据库连接数量限制了这个连接池能占有的最大连接数),如果没有达到,就新建一个连接。如果已经达到,这些请求将被加入等待列队中。如果在等待的时间内有连接被释放出来,就可以把这个连接分配给等待的用户。需要注意的是,系统对已经分配出去正在使用的连接只做计数,当使用完后,应释放连接并返还给空闲池。

3.数据源与JNDI资源

        数据源(Data Source)是在JDBC2.0中引入的一个概念。在JDBC扩展包中定义了javax.sql.DataSource接口,它定义了一组特性,用于确定和描述它所表示的现实存在的数据源,配置好的数据库连接池也以DataSource的形式存在。其中现类负责与数据库建立连接,创建连接对象,这些数据库连接保存在连接池中。在应用程序中访问数据库时不必编写连接数据库的代码,可以直接从数据源获得数据库连接。

        Tomcat把数据源作为一种可配置的JNDI资源来处理,DataSouce对象由Web容器(Tomcat)提供。在Tomcat环境中,如果发布一个数据源实例,那么Web应用可以通过JNDI进行访问,通过该数据源实例为Web应用提供数据库连接池机制,从而简化Web应用的数据库连接管理问题。

4.配置数据源

以Tomcat为例,实现数据源的配置和使用,

1.通过context.xml文件配置JNDI资源

在本地Tomcat的配置文件中的context.xml文件中添加<Environment>元素配置公共资源,而配置数据源时,需要在该文件中添加<Resource>元素。代码如下:

<Resource name="jdbc/Mysql"
      auth="Container"
      type="javax.sql.DataSource"
      maxTotal="100"
      maxIdle="30"
      maxWaitMillis="10000"
      username="root"
      password="ZX20040825"
      driverClassName="com.mysql.jdbc.Driver"
      url="jdbc:mysql://127.0.0.1:3306/microblog?
      useUnicode=true&amp;serverTimezone=GMT-8&amp;
      characterEncoding=UTF-8"
/>
DataSource对象参数对应的<Resource>元素属性
属性说明
name指定资源的JNDI名字
auth指定管理资源的Manager,他有Container和Application两个可选值。Container表示由容器创建Resource,Application表示由Web应用创建和管理Resource
type指定资源所属的java类型
maxTotal可同时从连接池分配的最大连接数。默认值为8,设置为负数表示不受限制
maxIdle同时在连接池中处于空闲状态的最大连接数,默认值为8,设置为负数表示不受限制
minIdle同时在连接池中处于空闲状态的最小连接数,默认值为0
maxWaitMillis当连接池没有可用连接时,等待获取连接的最大毫秒数,如果超出这一时间将会抛出异常,默认值为-1,表示可以无限等待
username指定连接数据库的用户名
password指定连接数据库的口令(密码)
driverClassName指定连接数据库的JDBC驱动程序
url指定连接数据库的URL

 提示:不同的web服务器设置数据源的方法也是不一样的,应根据服务器提供的帮助文档进行配置

2.在项目中配置web.xml文件

在java web应用的web.xml文件中,为<web-app>节点添加<resource-ref>元素。代码如下:

<resource-ref>
        <description>Microblog DataSource</description>
        <res-ref-name>jdbc/Mysql</res-ref-name>
        <res-type>javax.sql.DataSource</res-type>
        <res-auth>Container</res-auth>
    </resource-ref>

 这里,<resource-ref>元素包含一个对外部资源的引用,它包含一个可选的description,一个引用资源的名称(相对于java:comp/env环境的JNDI名)、资源类型、验证方式。

<resource-ref>元素的属性
属性说明
description对引用资源的说明
res-ref-name指定所引用资源的JNDI名字,与<Resource>元素中的name属性对应
res-type指定所引用资源的Java类型,与<Resource>元素中的type属性对应
res-auth指定管理所引用资源的Manager,与<Resource>元素中的auth属性对应

3.添加数据库驱动文件

要通过数据源访问数据库,还要添加数据库驱动文件。由于数据源由Tomcat创建并维护,所以要把数据库驱动文件放到Tomcat的lib目录下,也可以放到项目中web/WEB-INF/lib下,并添加为库。

4.编码获取数据源对象

然后在连接数据库方法中:

//在用JNDI连接数据库时用main函数测试时总报错,
//InitialContext 是要在应用服务器的上下文里才有的。
//在普通的应用程序里是不行的!
//要放到tomcat里面运行!
//不能用main函数直接测试,只能放到tomcat或者servlet、jsp显示
Context ctx=new InitialContext();
//后面的jdb/Mysql是Context文件里配置的信息
DataSource ds=(DataSource) ctx.lookup("java:comp/env/jdbc/Mysql");
Connection conn=ds.getConnection();

写入上面代码就连接完成了。

  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Tomcat中配置数据库连接池参数的步骤如下: 1. 确保你已经将数据库驱动包(mysql-connector-java-8.0.26.jar)放置在Tomcat的lib目录下。 2. 打开Tomcat的配置文件server.xml,该文件位于Tomcat安装目录的conf文件夹下。 3. 在server.xml文件中,找到`<GlobalNamingResources>`标签,添加以下内容来配置数据库连接池参数: ```xml <Resource name="jdbc/yourDatabaseName" auth="Container" type="javax.sql.DataSource" maxTotal="100" maxIdle="20" maxWaitMillis="10000" username="yourUsername" password="yourPassword" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/yourDatabaseName?useSSL=false"/> ``` 其中,`name`属性是连接池的JNDI名称,`maxTotal`表示连接池中最大的连接数,`maxIdle`表示连接池中最大的空闲连接数,`maxWaitMillis`表示获取连接的最大等待时间(毫秒),`username`和`password`是数据库的用户名和密码,`driverClassName`是数据库驱动类名,`url`是数据库的连接URL。 4. 在`<Context>`标签中,添加以下内容来关联连接池和具体的Web应用: ```xml <ResourceLink name="jdbc/yourDatabaseName" global="jdbc/yourDatabaseName" type="javax.sql.DataSource"/> ``` 其中,`name`属性是连接池的JNDI名称,`global`属性是连接池在全局命名资源中的名称。 5. 保存server.xml文件并重新启动Tomcat。 现在,你已经成功配置了Tomcat数据库连接池参数。你可以在你的Web应用中使用JNDI名称(jdbc/yourDatabaseName)来获取数据库连接。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zou_xi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值