Tomcat数据源的原理,配置及使用

知识点:

1.数据源的作用及操作原理;

2.Tomcat中数据源的配置;

3.数据源的查找及使用

传统JDBC使用过程存在以下四个步骤:

1.加载驱动程序

2.进行数据库连接

3.数据库操作

4.数据库关闭

对于不同的用户只有操作不同,但是1,2,3三个步骤是一个重复的操作

如果开始种直接使用JDBC操作的化,那么会产生一种性能的问题

那么假设数据库不关闭,一户如果有新的用户使用的时候直接取一个已经有的连接就可以了

这就是数据库连接池,数据库连接池里存放的是数据库的连接

1.JNDI的配置

01配置方法1:

在web容器中,数据库的连接池都是通过数据源(javax.sql.DataSource)访问的,即:可以通过javax.sql.DataSource类取得一个Connection对象,但是如果要向得到一个DataSource对象需要使用JNDI进行查找,如下图所示:

JNDI属于命名及目录查找借口,主要功能是进行查找的,查找对象.

数据库的连接池需要在Tomcat上完成配置的,要修改Tomcat的conf目录下的Context.xml文件才可以起作用

<Context>

<Resource
name="jdbc/myschool"
auth="Container"
type="javax.sql.DataSource"
maxActive="100"
maxIdle="30"
maxWait="10000"
username="root"
password="admin"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/myschool">
</Resource>

</Context>

此配置有几个参数:

01.name:表示数据源的名称,也是要查找的名称

02.auth:表示容器负责资源的连接

03.type:表示对象,数据源上每一个绑定的都是DataSource

04.Maxactive:最大连接数

05.maxIdle:处于空闲时间的最大连接数

对于连接的授权有两种:Container,Application(应用程序必须程序化的登录到资源管理器,基本不用)

Tomcat6.0以后版本,如果要让一个数据源起作用,还必须在项目下的web.xml里进行如下配置:

<web-app>

<resource-ref>
<description>myschool DataSource</description>  myschool是数据库名字
<res-ref-name>jdbc/myschool</res-ref-name>     jdbc/myschool和Context.xml中的name值一致
<res-type>javax.sql.DataSource</res-type>      javax.sql.DataSource和Context.xml中的type值一致
<res-auth>Container</res-auth>          Container和Context.xml中的auth值一致
</resource-ref>

</web-app>

2.配置方法2

将Tomcat的conf目录下的Context.xml复制到具体的项目下的META-INF文件夹中,然后添加

<Context>

<Resource 
name="jdbc/myschool" 
auth="Container"
type="javax.sql.DataSource"
maxActive="100" 
maxIdle="30" 
maxWait="10000" 
username="root" 
password="admin" 
driverClassName="com.mysql.jdbc.Driver" 
url="jdbc:mysql://localhost:3306/myschool">
</Resource>

</Context>

就OK了

JNDI的使用

步骤:

01.初始化上下文Context ctx=new InitialContext();

02.获取数据源DataSource ds=(DataSource )ctx.lookup(“java:comp/evn/jdbc/mldn”)

03.获取连接Connection conn=ds.getConnection();

04.关闭连接(使连接恢复空闲状态):conn.close

常见异常:

Tomcat数据源的原理,配置及使用(JNDI)的更多相关文章

  1. Tomcat 数据源的原理、配置、使用

    1.数据源的作用及操作原理 在程序代码中使用数据源是可以提升操作性能的,这种性能的提升依靠于运行的原理. 传统JDBC操作步骤 1.加载数据库驱动程序,数据库驱动程序通过CLASSPATH配置: 2. ...

  2. JNDI学习总结(二)——Tomcat下使用C3P0配置JNDI数据源

    一.C3P0下载 C3P0下载地址:http://sourceforge.net/projects/c3p0/files/?source=navbar

  3. Tomcat下使用C3P0配置JNDI数据源(在项目的META-INF目录下创建context.xml的文件)

    一.C3P0下载 C3P0下载地址:http://sourceforge.net/projects/c3p0/files/?source=navbar 下载完成之后得到一个压缩包

  4. JNDI学习总结——Tomcat下使用C3P0配置JNDI数据源

    一.C3P0下载 C3P0下载地址:http://sourceforge.net/projects/c3p0/files/?source=navbar

  5. Tomcat 6 部署工程总结,使用JNDI数据源配置

    工程需要用JNDI数据源方式部署到tomcat,参考网上文章后,经过配置测试,摸索出来了.     环境说明: 数据库:Oracle9i Web服务器:tomcat-6.0.33 tomcat启动方式 ...

  6. JNDI学习总结(3)——Tomcat下使用C3P0配置JNDI数据源

    一.C3P0下载 C3P0下载地址:http://sourceforge.net/projects/c3p0/files/?source=navbar 下载完成之后得到一个压缩包. 二.使用C3P0配 ...

  7. TOMCAT数据源连接配置

    /* *本文档简单介绍系统使用TOMCAT6.0数据源方式连接数据库的配置方法: *1,系统环境:  gdczsam4.0 + Tomcat6.0 + JDK1.5 + SQL Server2008 ...

  8. Tomcat连接池配置与实现/JNDI

    方法一: 在Tomcat的conf/context.xml中配置在Tomcat\apache-tomcat-6.0.33\conf目录下的context.xml文件中配置默认值如下: <?xml ...

  9. Tomcat数据源配置方法总结

    最近接触的数据表管理项目,涉及到了数据源配置,所以整理了一下配置方法: JNDI数据源统一都是在Tomcat下server.xml中配置的,根据应用范围的差别又分为一下几种方式: 第一种:配置单个应用 ...

随机推荐

  1. datetime的小坑

    在做悦运动这个项目时,在创建约运动关系表时,运动开始时间,注意(导入datetime包时,我导入的是class datetime(__datetime.date)这个类,可以调用这个类中的方法,调用当 ...

  2. mysql DDL&DML 语言

    DDL:数据定义语言 CREATE, ALTER, DROP CREATE相关的常用命令: CREATE DATABASECREATE EVENTCREATE FUNCTIONCREATE FUNCT ...

  3. Galaxy S10使用几乎零黑边框的OLED显示屏

    2019年的首波安卓旗舰中,目前关于三星Galaxy S10的爆料是最多的,在销量连续萎缩后,外界对手机一哥的“发力之作”充满期待. 据TheElec报道,Galaxy S10正面使用的是一块几乎零黑 ...

  4. 使用嵌入式jetty实现文件服务器

    pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns="htt ...

  5. BZOJ3322[Scoi2013]摩托车交易——最大生成树+贪心+倍增

    题目描述 mzry1992 在打完吊针出院之后,买了辆新摩托车,开始了在周边城市的黄金运送生意.在mzry1992 生活的地方,城市之间是用双向高速公路连接的.另外,每条高速公路有一个载重上限,即在不 ...

  6. Catenyms POJ - 2337(单词+字典序输出路径)

    题意: 就是给出几个单词 看能否组成欧拉回路或路径  当然还是让输出组成的最小字典序的路 解析: 还是把首尾字母看成点   把单词看成边 记录边就好了 这题让我对fleury输出最小字典序又加深了一些 ...

  7. String类型的特殊之处

    String是一种特殊的引用类型,那么它究竟特殊在哪里? 请看看下面这个程序,输出什么结果? public static void changeStr(String str) { str = &quo ...

  8. 今天一天课,随便写点吧/xk

    知道的越多,不知道的也就越多. 最近想学很多很多东西,但是发现没有一个计划,也没有那么多时间精力,都是想到哪学到哪,有的就是学了一半就放下了,又去学新的,感觉需要规划一下学习路线,时间什么的 推荐一个 ...

  9. 【BZOJ3811】玛里苟斯(线性基)

    [BZOJ3811]玛里苟斯(线性基) 题面 BZOJ 题解 \(K=1\)很容易吧,拆位考虑贡献,所有存在的位出现的概率都是\(0.5\),所以答案就是所有数或起来的结果除二. \(K=2\)的情况 ...

  10. BZOJ 5308 [ZJOI2018] Day2T2 胖 | 二分 ST表

    题目链接 LOJ 2529 BZOJ 5308 题解 这么简单的题 为什么考场上我完全想不清楚 = = 对于k个关键点中的每一个关键点\(a\),二分它能一度成为哪些点的最短路起点(显然这些点在一段包 ...