Jndi技术----与数据库的连接(tomcat)
一 jndi技术简介
(1)JNDI(Java Naming and Directory Interface),Java命名和目录接口,它对应于J2SE中的javax.naming包,
(2)这套API的主要作用在于:它可以把Java对象放在一个容器中(JNDI容器),并为容器中的java对象取一个名称,以后程序想获得Java对象,只需通过名称检索即可。
(3)其核心API为Context,它代表JNDI容器,其lookup方法为检索容器中对应名称的对象。
二 代码分析
提示:因为是测试tomcat的使用,所以是建的一个servelt.java类,代码如下:
1. 配置文件中是与数据库的连接
<Context>
<!-- name属性是和数据库连接池相关联的,可 通过 该名字查找数据库连接池对象 -->
<Resource name ="jdbc/TestDB"
auth="Container"
type="javax.sql.DataSource"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/jdbc"
username="root"
password="qiao"
maxActive="50"
maxIdle="10"/>
</Context>
2. 调用xml文件并使用
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
try {
//初始化Jndi容器 Context是接口
Context initCtx = new InitialContext();
//检索web服务器重的Jndi
Context envCtx = (Context) initCtx.lookup("java:comp/env");
//从容器中查找数据库的连接池
DataSource ds = (DataSource) envCtx.lookup("jdbc/TestDB");
Connection con = ds.getConnection();
System.out.println(con);
//得到数据库的元数据对象
DatabaseMetaData meta = con.getMetaData();
//得到产品号
System.out.println(meta.getDatabaseProductName());
//驱动名称
System.out.println(meta.getDriverName());
//url地址
System.out.println(meta.getURL());
} catch (NamingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}