JavaWeb:Tomcat下配置数据源连接数据库

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介:

习惯了以硬编码的形式在程序中建立数据库连接,用完就在finally语句块中close一下就结束了。对于重视数据库连接数的应用来说,这样子做会耗费大量的时间和数据库资源,而且硬编码的形式也不甚灵活。

 

Tomcat这个Java Web容器下通过配置DataSource(数据源)对象可以解决上面所述的问题。JDBC中的javx.sql.DataSource接口负责建立于数据库的连接,程序中直接从数据源中获取数据库连接。DataSource对象由Servlet容器Tomcat进行管理,其实获取数据库连接是从连接池中选取空闲连接。它基于Java中的JNDIJava 命名与目录接口)来实现。

 

配置数据源context.xml

Java Web应用的META-INF目录下新建一个context.xml配置文件,其中的<Resource>元素用于定义JNDI资源,内容如下:

 
  1. <Context reloadable="true" > 
  2.     <Resource  
  3.         name="jdbc/ DBname " 
  4.         auth="Container"  
  5.         type="javax.sql.DataSource" 
  6.         maxActive="100" maxIdle="30" maxWait="10000" 
  7.         username="root" password="123"  
  8.         driverClassName="com.mysql.jdbc.Driver" 
  9.         url="jdbc:mysql://localhost:3306/ DBname?autoReconnect=true" 
  10.     /> 
  11. </Context> 

 

<Resource>元素的属性说明: 

Name:指定Resource资源的JNDI名称;

auth:可选填ContainerApplication,指定Resource的管理者;

type:指定Resource资源的Java类名;

maxActive:设置数据库连接池中活动状态连接的最大数目,为0则不受限制;

maxIdle:设置数据库连接池中空闲状态连接的最大数目,为0则不受限制;

maxWait:设置数据库连接池中空闲状态连接的最长等待时间,超时则抛出异常,为-1则可无限等待;

username:指定数据库的用户名;

password:指定连接数据库的密码;

driverClassName:指定数据库的JDBC驱动器的Driver实现类名字(这里为MySQL数据库连接);

url:连接数据库的url

 

注:可在<CATALINA_HOME>/conf/server.xml 文件中的对应<Host>元素中如上配置<Resource>子元素以供Tomcat容器内的多个Web应用使用。

 

配置JNDI资源引用web.xml 

Java Web应用中要使用JNDI资源,必须在web.xml中配置对该JNDI资源的引用<resource-ref>元素。内容如下:

 
  1. <web-app> 
  2.     <resource-ref> 
  3.         <description>DB Connection</description> 
  4.         <res-ref-name>jdbc/DBname </res-ref-name> 
  5.         <res-type>javax.sql.DataSource</res-type> 
  6.         <res-auth>Container</res-auth> 
  7.     </resource-ref> 
  8. </web-app> 

 

<resource-ref>元素的子元素说明: 

description:对所引用JNDI资源的描述;

res-ref-name:引用的JNDI资源的名称,与上面<Resource>元素中的name属性一致;

res-type:引用的JNDI资源的类名称,与上面<Resource>元素中的type属性一致;

res-auth:引用资源的管理者,上面<Resource>元素中的auth属性一致;

 

Web应用中使用数据源: 

使用DataSource连接数据库,不再用以下方式来建立到数据库的连接了。

 
  1. Connection conn = null
  2.                      
  3. Class.forName("com.mysql.jdbc.Driver"); 
  4.                      
  5. String dbUrl = "jdbc:mysql://localhost:3306/DBname"
  6. String dbUser = "root"
  7. String dbPwd = "123"
  8.                      
  9. conn = DriverManager.getConnection(dbUrl, dbUser, dbPwd); 

 

而是使用相对简单些的JNDI资源访问方式lookup方法,如下:

 
  1. Context sourceCtx = new InitialContext(); 
  2. DataSource ds = 
  3. (DataSource) sourceCtx.lookup("java:comp/env/jdbc/ DBname "); 
  4. conn = ds.getConnection(); 

  

注:使用DataSource方式连接数据库,当使用完数据库操作之后调用各种资源对象的close方法时,由Tomcat容器调回这些连接到连接池中进行管理,而不是直接与数据库断开连接。




本文转自 xxxx66yyyy 51CTO博客,原文链接:http://blog.51cto.com/haolloyin/396210,如需转载请自行联系原作者

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
22天前
|
NoSQL 关系型数据库 PHP
php连接数据库
要使用PHP连接PolarDB或MongoDB数据库,需先准备连接信息,并编写相应代码。对于PolarDB,需设置主机地址、端口、数据库名及凭据,使用`pg_connect`函数建立连接;而对于MongoDB副本集,需安装MongoDB PHP驱动,通过`MongoDB\Client`连接指定的副本集实例。请确保替换示例代码中的占位符为实际值,并正确配置副本集名称和主机信息。更多详细信息与示例代码,请参考相关链接。
128 72
|
1天前
|
应用服务中间件 Docker 容器
docker应用部署---Tomcat的部署配置
这篇文章介绍了如何使用Docker部署Tomcat服务器,包括搜索和拉取Tomcat镜像、创建容器并设置端口映射和目录映射,以及如何创建一个HTML页面并使用外部机器访问Tomcat服务器。
docker应用部署---Tomcat的部署配置
|
1天前
|
关系型数据库 MySQL 数据库
6-2|测试连接数据库的命令
6-2|测试连接数据库的命令
|
1天前
|
SQL 关系型数据库 MySQL
ThinkPHP6 连接使用数据库,增删改查,find,select,save,insert,insertAll,insertGetId,delete,update方法的用法
本文介绍了在ThinkPHP6框架中如何连接和使用数据库进行增删改查操作。内容包括配置数据库连接信息、使用Db类进行原生MySQL查询、find方法查询单个数据、select方法查询数据集、save方法添加数据、insertAll方法批量添加数据、insertGetId方法添加数据并返回自增主键、delete方法删除数据和update方法更新数据。此外,还说明了如何通过数据库配置文件进行数据库连接信息的配置,并强调了在使用Db类时需要先将其引入。
ThinkPHP6 连接使用数据库,增删改查,find,select,save,insert,insertAll,insertGetId,delete,update方法的用法
|
1天前
|
SQL 关系型数据库 数据库连接
php连接数据库之PDO,PDO的简单使用和预定义占位符的使用以及PDOStatement对象的使用,占位符的不同形式,bindValue和bindParam绑定预定义占位符参数的区别
本文介绍了PHP中PDO(PHP Data Objects)扩展的基本概念和使用方法。内容包括PDO类和PDOStatement类的介绍,PDO的简单使用,预定义占位符的使用方法,以及PDOStatement对象的使用。文章还讨论了绑定预定义占位符参数的不同形式,即bindValue和bindParam的区别。通过具体示例,展示了如何使用PDO进行数据库连接、数据查询、数据插入等操作。
php连接数据库之PDO,PDO的简单使用和预定义占位符的使用以及PDOStatement对象的使用,占位符的不同形式,bindValue和bindParam绑定预定义占位符参数的区别
|
1天前
|
SQL 关系型数据库 MySQL
php学习笔记-连接操作mysq数据库(基础)-day08
本文介绍了PHP中连接操作MySQL数据库的常用函数,包括连接服务器、设置字符集、关闭连接、选择数据库、结果集释放、获取影响行数以及遍历结果集等操作。通过书籍查询的实例演示了如何使用这些函数进行数据库操作,并提供了一个PHP操纵MySQL数据库的模板。
php学习笔记-连接操作mysq数据库(基础)-day08
|
4天前
|
SQL JavaScript 关系型数据库
Node服务连接Mysql数据库
本文介绍了如何在Node服务中连接MySQL数据库,并实现心跳包连接机制。
15 0
Node服务连接Mysql数据库
|
16天前
|
SQL 关系型数据库 MySQL
MySQL技术安装配置、数据库与表的设计、数据操作解析
MySQL,作为最流行的关系型数据库管理系统之一,在WEB应用领域中占据着举足轻重的地位。本文将从MySQL的基本概念、安装配置、数据库与表的设计、数据操作解析,并通过具体的代码示例展示如何在实际项目中应用MySQL。
54 0
|
30天前
|
网络协议 Java 应用服务中间件
tomcat配置域名及HTTPS
tomcat配置域名及HTTPS
|
1月前
|
Java 应用服务中间件 Windows
【应用服务 App Service】App Service 中部署Java项目,查看Tomcat配置及上传自定义版本
【应用服务 App Service】App Service 中部署Java项目,查看Tomcat配置及上传自定义版本