首先,先给大家介绍一下什么是JNDI:
  JNDI全名叫做Java命名和目录接口(Java Naming and Directory Interface ,JNDI)是用于从Java应用程序中访问名称和目录服务的一组API,JNDI是J2EE的核心技术之一,JNDI的功能简单说是可以简单的方式去查找某种资源。比如在Tomcat中配置了一个JNDI数据源,那么在程序中之需要用Java标准的API可以查找到这个数据源,以后数据源配置发生变化了,等等,程序都不需要改动,之需要改改JNDI的配置行。增加了程序的灵活性,也给系统解耦了。
  上篇中我讲到的连接基本是J2SE用的比较多的,而JNDI是J2EE中用的比较多的(除了框架bean)。
  由上面的介绍可以知道,我们需要在Tomcat中配置一个JNDI数据源,所以我们首先需要有一个Tomcat服务器。在eclipse中配置好Tomcat后(这里不多做解释,改天写一篇关于在eclipse如何配置Tomcat服务器),然后在context.xml中后加入我们数据源的配置,如下:
  <Resource
  name="jdbc/jspJNDI"
  auth="Container"
  type="javax.sql.DataSource"    
  driverClassName="oracle.jdbc.driver.OracleDriver"
  url="jdbc:oracle:thin:@127.0.0.1:1521:orcl"
  username="scott"
  password="a"
  initialSize="10"
  minIdle="5"
  maxTotal="100"
  validationQuery="select 1 from dual"
  />
  基本上是能通用的这个数据源配置,数据库用户名和密码可以改动,关键是这个name,我们后面找到这个数据源是通过这个name找到的,还有其他的我在此不多说了。
  现在我们写DbHleper的内容:
  package com.yc.commons;
  import java.sql.Connection;
  import javax.naming.Context;
  import javax.naming.InitialContext;
  import javax.sql.DataSource;
  import java.sql.SQLException;
  public class DbHelper {
  private static DataSource dataSource;
  static{
  try {
  Context context= new InitialContext();
  //java:comp/env/ 这是调用tomcat命名目录接口资源的前缀
  dataSource = (DataSource) context.lookup("java:comp/env/jdbc/jspJNDI");
  } catch (Exception e) {
  // TODO Auto-generated catch block
  e.printStackTrace();
  }
  }
  //获取数据库连接对象
  public static Connection getConn(){
  Connection conn = null;
  if(dataSource !=null){
  try {
  conn = dataSource.getConnection();  //在数据源中取到一个连接
  } catch (SQLException e) {
  // TODO Auto-generated catch block
  e.printStackTrace();
  }
  }
  return conn;
  }