Jndi技术----与数据库的连接(tomcat)

来源:互联网 发布:java ee ide 编辑:程序博客网 时间:2024/04/28 01:42
 

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();

       }

    }

 

原创粉丝点击