Tomcat在启动时,会按照用户的配置,创建数据源,并把数据源对象绑定到一个名字上(用的是JNDI)。
JNDI:Java Naming and DIrectory Interface (JDK:javax.naming.*)
JNDI就好比window系统的注册表,它是一个Map结构。key是一个由路径和名称组成的字符串,value就是绑定的一个对象。
利用Tomcat管理数据源
a、拷贝数据库驱动jar包到Tomcatlib目录下
b、在应用的META-INF目录下建立一个名称为context.xml的配置文件
<?xml version="1.0" encoding="UTF-8"?> <Context> <Resource name="jdbc/EmployeeDB" auth="Container" type="javax.sql.DataSource" username="root" password="root" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/day16" maxActive="8" maxIdle="4"/> </Context>
c、启动Tomcat,数据源就给你建好了
d、在应用中如何获取数据源
package com.itheima.test; import java.sql.Connection; import javax.naming.Context; import javax.naming.InitialContext; import javax.sql.DataSource; /** * JDNI测试 * java:comp/env (java的计算机环境) :是Tomcat下jndi名字查找 规范 * @author wangli * */ public class JdniTest { /** * @param args */ public static void main(String[] args) { try { Context initCtx = new InitialContext(); Context envCtx = (Context) initCtx.lookup("java:comp/env"); DataSource ds = (DataSource) envCtx.lookup("jdbc/EmployeeDB");//转化的类型就是 Resource结点的type属性 Connection con = ds.getConnection(); System.out.println(con); con.close(); } catch (Exception e) { e.printStackTrace(); } } }
特别注意:不要在main方法中获取数据源,获取不到