zhouyi 发表于 2017-2-5 10:21:35

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

  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();
  }
  }
页: [1]
查看完整版本: Jndi技术----与数据库的连接(tomcat)