JNDI学习笔记
基础知识篇
- JNDI(Java Naming and Directory Interface)
- 原理:将要使用的东西放到一个固定的地方,要使用的时候,从这个地方根据名称取出我们要用的东西
- 使用方法:
Context context = new InitialContext(); //获取到JNDI上下文环境 DataSource ds = (DataSourse)context.lookup(jndiName); //在JNDI环境中获取指定的数据源
- 使用JDBC操作数据库的步骤:
- 加载数据库驱动
- 获取数据库连接
- 操作数据库
- 关闭数据库连接
- 在Tomcat 4.1.27之后,可将数据库连接池配置在服务器上。
- 在服务器上有一个JNDI树,上面绑定了许多DataSourse,每一个DataSourse对应许多连接Connection,通过获取到这些连接进行数据库操作,如图
- 使用是从数据库连接池中获取一个连接,使用完毕后关闭掉这个连接,即将连接放回连接池中。
- 不关闭的话,连接池也会自动回收,但时间过久,如果频繁访问数据库,会导致连接池中无连接可用。
在Tomcat中配置数据库连接池时,Tomcat的
lib
目录必须要有数据库的驱动程序
参考文章:java(JNDI)
配置篇
使用环境:
Java版本:jdk 1.8
服务器版本:Apache Tomcat 9.0
数据库版本:MySQL Community 5.27
- 将数据库驱动包放到Tomcat的
lib
目录下 - 修改
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"/>
- 在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>
- 修改
conf
目录下的context.xml文件,新增resource-link标签,如图<ResourceLink name="mysqlData" global="jdbc/mysql" type="javax.sql.DataSource"/>
- 至此,数据库连接池就已经配置完了。