java配置jndi连接数_JavaWeb:Tomcat下配置数据源(JNDI)连接数据库 | 学步园

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

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

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

配置数据源context.xml:

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

name="jdbc/ DBname "

auth="Container"

type="javax.sql.DataSource"

maxActive="100" maxIdle="30" maxWait="10000"

username="root" password="123"

driverClassName="com.mysql.jdbc.Driver"

url="jdbc:mysql://localhost:3306/ DBname?autoReconnect=true"

/>

元素的属性说明:

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

auth:可选填Container或Application,指定Resource的管理者;

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

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

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

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

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

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

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

url:连接数据库的url。

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

配置JNDI资源引用web.xml:

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

DB Connection

jdbc/DBname 

javax.sql.DataSource

Container

元素的子元素说明:

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

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

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

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

Web应用中使用数据源:

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

Connection conn = null;

Class.forName("com.mysql.jdbc.Driver");

String dbUrl = "jdbc:mysql://localhost:3306/DBname";

String dbUser = "root";

String dbPwd = "123";

conn = DriverManager.getConnection(dbUrl, dbUser, dbPwd);

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

Context sourceCtx = new InitialContext();

DataSource ds =

(DataSource) sourceCtx.lookup("java:comp/env/jdbc/ DBname ");

conn = ds.getConnection();

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/521865.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

(vue基础试炼_05)简单组件之间的传值

接上一篇:(vue基础试炼_04)使用组件改造TodoListhttps://gblfy.blog.csdn.net/article/details/103844256 文章目录一、上篇回顾① 代码欣赏② 代码分析二、子组件如何向父组件传值呢?① 需求案例文档② 需求案例效果图③ 思考与思…

漫画:程序员战力图鉴

戳蓝字“CSDN云计算”关注我们哦!看漫画了解程序员战斗力 are u ready?编程架构能力撕比嘴炮能力划水摸鱼能力花式甩锅能力画饼忽悠能力PPT吹比能力哈哈哈哈哈哈程序员哥哥上面说的是你吗 福利扫描添加小编微信,备注“姓名公司职位”&#xf…

python中with是什么意思_python中with的用法

这是一个新的语法。这是一个上下文管理协议。目的是消除所有的尝试,除了最后关键字和资源分配和释放相关代码流程图,简化试.... ....除外finlally处理流程。__enter__与初始化的方法,然后在__exit__后和异常处理。因此,必须有两种方法处理的对象,__enter__()和__exit__ ()。__e…

java 发送16进制数据'_java 16进制数据递增

基本思路String hex"ff"String binString hex -> binString addBinString binString NString resultHex addBinString -> hexreturn resultHex转换方法//16->2public static String hexString2binaryString(String hexString) {if (hexString.length() …

Python数据挖掘与机器学习,快速掌握聚类算法和关联分析

摘要:前文数据挖掘与机器学习技术入门实战与大家分享了分类算法,在本文中将为大家介绍聚类算法和关联分析问题。分类算法与聚类到底有何区别?聚类方法应在怎样的场景下使用?如何使用关联分析算法解决个性化推荐问题?本…

Vue 试炼总览

基础试炼章节链接(vue基础试炼_01)使用vue.js 快速入门hello worldhttps://gblfy.blog.csdn.net/article/details/103841156(vue基础试炼_02)使用vue.js实现隔2秒显示不同内容https://gblfy.blog.csdn.net/article/details/103841…

评分9.7!这本Python书彻底玩大了?程序员:真香!

「超级星推官/每周分享」是一个围绕程序员生活、学习相关的推荐栏目。CSDN出品,每周发布,暂定5期。关键词:靠谱!优质!本期内容,我们将抽1人送出由我司程序员奉为“超级神作”的《疯狂Python讲义》1本&#…

vs 如何将源文件转换成可执行文件_如何将手机便签转换成word文本文档

如何将手机便签转换成word文本文档?实际上,很多手机自带的便签,虽然可以将单条便签内容,以文字或者图片的形式分享到xxx云文档,但却很少有支持直接转换成Word文档的。一般情况下,他们需要将手机便签里的内容…

端上智能——深度学习模型压缩与加速

摘要:随着深度学习网络规模的增大,计算复杂度随之增高,严重限制了其在手机等智能设备上的应用。如何使用深度学习来对模型进行压缩和加速,并且保持几乎一样的精度?本文将为大家详细介绍两种模型压缩算法,并…

jvm调优 java_opt_Java-100天知识进阶-JVM调优工具-JDK自带工具-知识铺《八》

原标题:Java-100天知识进阶-JVM调优工具-JDK自带工具-知识铺《八》JVM 监控分析工具一、JDK 自带工具1. jconsoleJDK/bin 目录下, jconsole.exe 双击打开, 自动搜索本机运行的虚拟机进程。选择其中一个进程即可,开始进行JVM监控1.…

这帮吃货程序猿,给阿里食堂来了一波骚操作

我叫宋爽,在别人眼里,我是一个程序猿。 别的程序猿,喜欢摁键盘,我嘛,就喜欢吃。 有一次,去医院体检,拿到CT片的我,看着自己的脊椎骨,脑子中一直在想:啊&#…

linux 查看shell脚本执行了多长时间

步骤说明命令①写一个1.sh脚本vim1.sh,把脚本内容复制进去②赋予1.sh可执行权限chmod u_x 1.sh③把要执行的命令复制到第4行,保存退出esc :wq④执行脚本./1sh⑤查看执行脚本,共消耗多长时间基础脚本模板 #!/bin/bash starttimedate %Y-%m-%d…

任正非表示华为可以向美国企业转让5G技术;谷歌同意支付5亿欧元买断与法国纠纷;京东公布iPhone11系列预售战报……...

关注并标星星CSDN云计算极客头条:速递、最新、绝对有料。这里有企业新动、这里有业界要闻,打起十二分精神,紧跟fashion你可以的!每周三次,打卡即read更快、更全了解泛云圈精彩newsgo go go 联想举办YOGA 2019秋季新品品…

python输入一个整数列表 列表元素为18_Python-18 (高级变量1--列表)

# 1. 列表的定义列表 List 是Python中非数值型变量的一种,在其他语言中通常称为数组。基本格式:list_name [A,B,C ]1> 专门存储一串数据2> 方括号 [ ] 来定义列表,列表中的元素使用(逗号 ,)来隔…

Tensorflow快餐教程(1) - 30行代码搞定手写识别

摘要: Tensorflow入门教程1去年买了几本讲tensorflow的书,结果今年看的时候发现有些样例代码所用的API已经过时了。看来自己维护一个保持更新的Tensorflow的教程还是有意义的。这是写这一系列的初心。快餐教程系列希望能够尽可能降低门槛,少讲…

科普帖:什么是服务网格?

戳蓝字“CSDN云计算”关注我们哦!译| 风车云马文| Josh Fruhlinger来源| InfoWorld网站在数字化转型的背景下,IT行业正在将大型的应用程序集成到小的、离散的微服务容器中,这些容器包含所有的服务代码和依赖项,而这些依赖项彼此独…

java衍生作用_关于JAVA衍生出的一点想法

你们好,好久没有更新博客了,今天更新的博客中,不讨论技术,主要讨论的是一些我的想法,博主在前些天和一位作PHP的同事有过一次短暂的碰撞,在这个过程当中,对JAVA有了更深刻一些的思考&#xff0c…

年轻人,你为什么来阿里做技术?

摘要: 一个阿里IT男,成了母婴专家? 最近,阿里算法工程师拉普当上了爸爸。 两个月前他就开始为这件事忙活。自从老婆有喜之后,七大姑八大姨都来给他提供参考,生过孩子的朋友、同事都对他说什么该买,主管也时…

查一个字段中字符集超过30的列_详细解读MySQL的30条军规

一、基础规范(1)必须使用InnoDB存储引擎 解读:支持事务、行级锁、并发性能更好、CPU及内存缓存页优化使得资源利用率更高(2)必须使用UTF8字符集 解读:万国码,无需转码,无乱码风险&am…