转载地址:http://www.cnblogs.com/xdp-gacl/p/3951952.html

二、JNDI+Tomcat配置数据源的两种方式

2.1、全局jndi配置

  此种配置需要在server.xml中配置数据源,具体的配置步骤如下:

  1、在tomcat服务器的lib目录下加入数据库连接的驱动jar包

  2、修改tomcat服务器的conf目录下server.xml配置文件

  打开server.xml配置文件,可以看到里面自带的一个全局JNDI配置,如下图所示:

  编辑server.xml文件,添加全局JNDI数据源配置,配置如下:


 

 

   

   

              type="org.apache.catalina.UserDatabase"

              description="User database that can be updated and saved"

              factory="org.apache.catalina.users.MemoryUserDatabaseFactory"

              pathname="conf/tomcat-users.xml" />

        name="jdbc/oracle"

        auth="Container" 

        type="javax.sql.DataSource"

        maxActive="100" 

        maxIdle="30" 

        maxWait="10000"

        username="lead_oams" 

        password="p"

        driverClassName="oracle.jdbc.driver.OracleDriver"

        url="jdbc:oracle:thin:@192.168.1.229:1521:lead"/>


        name="jdbc/mysql"

        auth="Container" 

        type="javax.sql.DataSource"

        maxActive="100" 

        maxIdle="30" 

        maxWait="10000"

        username="root" 

        password="root"

        driverClassName="com.mysql.jdbc.Driver"

        url="jdbc:mysql://192.168.1.144:3306/leadtest?useUnicode=true&characterEncoding=utf-8"/>


        name="jdbc/sqlserver"

        auth="Container" 

        type="javax.sql.DataSource"

        maxActive="100" 

        maxIdle="30" 

        maxWait="10000"

        username="sa" 

        password="p@ssw0rd"

        driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver"

        url="jdbc:sqlserver://192.168.1.51:1433;DatabaseName=demo"/>


 

 经过以上的两个步骤,全局JNDI数据源就配置好了,在上述的server.xml文件中,分别配置了Oracle、MySQL、SQLServer这三种数据库的全局JNDI数据源。

2.2、全局jndi数据源测试

 1、创建一个JNDI测试项目JNDITest,在web.xml中添加JNDI配置的资源引用

    xmlns="http://java.sun.com/xml/ns/javaee" 

    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 

    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 

    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

 

    index.jsp

 

  

 

   

 

      Oracle DB Connection

      oracleDataSource

      javax.sql.DataSource

      Container

 

  

 

 

      MySQL DB Connection

      mysqlDataSource

      javax.sql.DataSource

      Container

 

  

 

 

      SQLServer DB Connection

      sqlserverDataSource

      javax.sql.DataSource

      Container

    

2、映射JNDITest项目的虚拟目录

  在tomcat的\conf\Catalina\localhost下(没有目录就新建)创建一个xml文件,文件名必须和项目名相同,测试JNDI数据源的web项目的项目名称是:JNDITest,所以xml文件的命名就叫JNDITest.xml

编辑JNDITest.xml,配置如下:

   

   

   

   

   

   


3、测试从JNDI数据源获取数据库连接

  配置完数据源连接池之后,就可以按照以下的步骤进行访问:

     初始化名称查找上下文
     通过JNDI名称找到DataSource
     通过DataSource取得一个连接
     操作数据库
     关闭数据库,关闭的时候是将连接放回到连接池之中

 Connection connOracle = null;

            try {

                //1、初始化名称查找上下文

                Context ctx = new InitialContext();

                //InitialContext ctx = new InitialContext();亦可 

                //2、通过JNDI名称找到DataSource,对名称进行定位java:comp/env是必须加的,后面跟的是DataSource名

                /*

                DataSource名在web.xml文件中的oracleDataSource进行了配置

                 

                 

                      Oracle DB Connection

                      oracleDataSource

                      javax.sql.DataSource

                      Container

                 

                */

                DataSource ds = (DataSource)ctx.lookup("java:comp/env/oracleDataSource");

                //3、通过DataSource取得一个连接

                connOracle = ds.getConnection();

                out.println("Oracle Connection pool connected !!");

                //4、操作数据库

            } catch (NamingException e) {

                System.out.println(e.getMessage());

            } catch (SQLException e) {

                e.printStackTrace();

            } finally {

                //5、关闭数据库,关闭的时候是将连接放回到连接池之中

                connOracle.close();

            }