zoukankan      html  css  js  c++  java
  • Tomcat数据源的原理,配置及使用(JNDI)

    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

    常见异常:

  • 相关阅读:
    react路由组件&&非路由组件
    react函数式组件(非路由组件)实现路由跳转
    react使用antd组件递归实现左侧菜单导航树
    【LeetCode】65. Valid Number
    【LeetCode】66. Plus One (2 solutions)
    【LeetCode】68. Text Justification
    【LeetCode】69. Sqrt(x) (2 solutions)
    【LeetCode】72. Edit Distance
    【LeetCode】73. Set Matrix Zeroes (2 solutions)
    【LeetCode】76. Minimum Window Substring
  • 原文地址:https://www.cnblogs.com/zqr99/p/7527672.html
Copyright © 2011-2022 走看看