JNDI学习笔记

JNDI学习笔记

基础知识篇


  1. JNDI(Java Naming and Directory Interface)
  2. 原理:将要使用的东西放到一个固定的地方,要使用的时候,从这个地方根据名称取出我们要用的东西
  3. 使用方法:
    Context context = new InitialContext(); //获取到JNDI上下文环境
    DataSource ds = (DataSourse)context.lookup(jndiName);  //在JNDI环境中获取指定的数据源
  4. 使用JDBC操作数据库的步骤:
    1. 加载数据库驱动
    2. 获取数据库连接
    3. 操作数据库
    4. 关闭数据库连接
  5. 在Tomcat 4.1.27之后,可将数据库连接池配置在服务器上。
  6. 在服务器上有一个JNDI树,上面绑定了许多DataSourse,每一个DataSourse对应许多连接Connection,通过获取到这些连接进行数据库操作,如图
  7. 使用是从数据库连接池中获取一个连接,使用完毕后关闭掉这个连接,即将连接放回连接池中。
    • 不关闭的话,连接池也会自动回收,但时间过久,如果频繁访问数据库,会导致连接池中无连接可用。

在Tomcat中配置数据库连接池时,Tomcat的lib目录必须要有数据库的驱动程序

参考文章:java(JNDI)

配置篇


使用环境:
Java版本:jdk 1.8
服务器版本:Apache Tomcat 9.0
数据库版本:MySQL Community 5.27

  1. 将数据库驱动包放到Tomcat的lib目录下

  2. 修改conf目录下的server.xml文件,新增resource标签,如图

    <Resource 
      name="jdbc/mysql"
      auth="Container" 
      type="javax.sql.DataSource"
      maxActive="100" 
      maxIdle="30" 
      maxWait="10000"
      username="root" 
      password="root"
      driverClassName="com.mysql.jdbc.Driver"
      url="jdbc:mysql://127.0.0.1:3306/springtest?useUnicode=true&characterEncoding=utf-8"/>
  3. 在Web项目的web.xml文件中新增对resource的引用,如图

    <resource-ref>
     <res-ref-name>jdbc/mysql</res-ref-name>
     <res-type>javax.sql.DataSource</res-type>
     <res-auth>Container</res-auth>
    </resource-ref>
       
  4. 修改conf目录下的context.xml文件,新增resource-link标签,如图

    <ResourceLink name="mysqlData" global="jdbc/mysql" type="javax.sql.DataSource"/>
  5. 至此,数据库连接池就已经配置完了。

    参考文章:数据连接学习(一):JNDI入门及数据源配置


  目录