Tomcat6.0 配置JNDI数据源总结

1.    第一种方式:

a)      首先将对应数据库的驱动jar包拷贝到tomcat 安装目录下的lib目录。如果用到Apache DBCP连接池,需要另外拷贝commons-dbcp-1.2.2.jar, commons-pool-1.3.jar.

b)      在tomcat6.0安装目录下找到conf/server.xml 文件。打开文件并找到<host></host>标签

c)      在<host></host>标签之配置datasource如下:

<Context path="/jndi" docBase="D:\workspace\JNDI\WebRoot" override="true" allowLinking="true" reloadable="true">

<Resource

name="pk"

auth="Container"

type="javax.sql.DataSource"

maxActive="500"

initialSize = "10"

maxIdle="100"

maxWait="10000"

logAbandoned="true"

username="pk"

password="pk"

driverClassName="oracle.jdbc.driver.OracleDriver"

url="jdbc:oracle:thin:@127.0.0.1:1521:pk"

/>

</Context>

注:

name 表示指定的jndi名称
auth 表示认证方式,一般为Container
type 表示数据源类型,使用标准的javax.sql.DataSource
maxActive 表示连接池当中最大的数据库连接
maxIdle 表示最大的空闲连接数
maxWait 当池的数据库连接已经被占用的时候,最大等待时间
username 表示数据库用户名
password 表示数据库用户的密码
driverClassName 表示JDBC DRIVER
url 表示数据库URL地址

logAbandoned 表示被丢弃的数据库连接是否做记录,以便跟踪

initialSize 表示初始的连接数

注意: 如果项目中用到apache dbcp连接池,这里需要另外加上:

factory="org.apache.commons.dbcp.BasicDataSourceFactory".

d) 在web.xml中如下配置:(tomcat 5.5 以后可以不配置,建议配置)

<resource-ref>   

      <res-ref-name>pk</res-ref-name>   

      <res-type>javax.sql.DataSource</res-type>   

      <res-auth>Container</res-auth>   

</resource-ref> 

2.    第二种方式:

a)      在WebRoot/META-INF/下新建context.xml 文件.添加如下内容:

<?xml version="1.0" encoding="UTF-8"?>

 

<Context path="/jndi" docBase="D:\workspace\JNDI\WebRoot" override="true" allowLinking="true" reloadable="true">

   <Resource

     name="pk"

     auth="Container"

     type="javax.sql.DataSource"

     maxActive="500"

     initialSize = "10"

     maxIdle="100"

     maxWait="10000"

     logAbandoned="true"

     username="pk"

     password="pk"

     driverClassName="oracle.jdbc.driver.OracleDriver"

    url="jdbc:oracle:thin:@127.0.0.1:1521:pk"

  />

</Context>

注意: 1.如果项目中用到apache dbcp连接池,这里需要另外加上:

       factory="org.apache.commons.dbcp.BasicDataSourceFactory".

             2.如此配置,虚拟路径不生效.

b)      在web.xml 中:(Tomcat5.5以后版本可不写)

<resource-ref>   

      <res-ref-name>pk</res-ref-name>   

      <res-type>javax.sql.DataSource</res-type>    

      <res-auth>Container</res-auth>   

</resource-ref> 

3.     第三种方式:使用tomcat自带的dbcp

    a) 基本上同第二种方式,只是需要更改一个属性:

       factory = org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory

4.     第四种方式:

a)      在tomcat6.0安装目录下conf/context.xml 中,添加如下内容:

<Context path="/jndi" docBase="D:\workspace\JNDI\WebRoot" override="true" allowLinking="true" reloadable="true">

     <Resource

       name="pk"

       auth="Container"

       type="javax.sql.DataSource"

       maxActive="500"

       initialSize = "10"

       maxIdle="100"

       maxWait="10000"

       logAbandoned="true"

       username="pk"

       password="pk"

       driverClassName="oracle.jdbc.driver.OracleDriver"

      url="jdbc:oracle:thin:@127.0.0.1:1521:pk"

      factory="org.apache.commons.dbcp.BasicDataSourceFactory"

    />

</Context>

注意: 虚拟目录不再生效.

b)      在web.xml 中:

<resource-ref>   

      <res-ref-name>pk</res-ref-name>   

      <res-type>javax.sql.DataSource</res-type>   

      <res-auth>Container</res-auth>   

</resource-ref> 

5.    第五种方式:

a)      在tomcat安装目录下conf/server.xml中,找到<GlobalNamingResources></GlobalNamingResources>,在其间加入如下内容:

     <Resource

       name="pk"

       auth="Container"

       type="javax.sql.DataSource"

       maxActive="500"

       initialSize = "10"

       maxIdle="100"

       maxWait="10000"

       logAbandoned="true"

       username="pk"

       password="pk"

       driverClassName="oracle.jdbc.driver.OracleDriver"

      url="jdbc:oracle:thin:@127.0.0.1:1521:pk"

      factory="org.apache.commons.dbcp.BasicDataSourceFactory"

    />

b)      在tomcat安装目录下conf/context.xml 中的<Context></Context>加入如下配置.

<ResourceLink global="pk" name="pk" type="javax.sql.Datasource"/>

Global: The name of the linked global resource in the global JNDI context.

name: The name of the resource link to be created, relative to the java:comp/env context.

Type: The fully qualified Java class name expected by the web application when it performs a lookup for this resource link.

    同样在context中加入虚拟目录设置,不会生效.

c)      web.xml 中:

<resource-ref>   

      <res-ref-name>pk</res-ref-name>   

      <res-type>javax.sql.DataSource</res-type>   

      <res-auth>Container</res-auth>   

</resource-ref>

6.    第六种方式:

a)      在tomcat安装目录下conf\Catalina\localhost\下新建jndi.xml 文件,文件内容如下:

<Context path="/jndi" docBase="D:\workspace\JNDI\WebRoot" override="true" allowLinking="true" reloadable="true">

       <Resource

       name="pk"

       auth="Container"

       type="javax.sql.DataSource"

       maxActive="500"

       initialSize = "10"

       maxIdle="100"

       maxWait="10000"

       logAbandoned="true"

       username="pk"

       password="pk"

       driverClassName="oracle.jdbc.driver.OracleDriver"

      url="jdbc:oracle:thin:@127.0.0.1:1521:pk"

      factory="org.apache.commons.dbcp.BasicDataSourceFactory"

    />

</Context>

注意: 1.jndi.xml 文件名必须同path的路径名相同.

       2.此时虚拟路径生效.

b)      Web.xml 中:

<resource-ref>   

      <res-ref-name>pk</res-ref-name>   

      <res-type>javax.sql.DataSource</res-type>   

      <res-auth>Container</res-auth>   

</resource-ref>

7.  测试:

a)     测试:新建jsp页面.添加如下代码:

<%@page import="java.sql.*"%>

<%@page import="javax.naming.*" %>

<%@page import="javax.sql.*"%>

<%

           //JNDI 数据源测试

           Context context = null;

           DataSource dataSource = null;

           Connection conn = null;

           PreparedStatement ps = null;

           ResultSet rs = null;

           try {

              context = new InitialContext();

 

dataSource = (DataSource) context.lookup("java:comp/env/pk");

 

              conn = dataSource.getConnection();

 

              String sql = "select * from dept t where id=?";

 

              ps = conn.prepareStatement(sql);

              ps.setInt(1, 48);

 

              rs = ps.executeQuery();

 

              while (rs.next()) {

                  out.print(rs.getString("dname"));

              }

 

           } catch (NamingException e) {

              //

              e.printStackTrace();

           } catch (SQLException e) {

              //

              e.printStackTrace();

           } finally {

              if (rs != null) {

                  try {

                     rs.close();

                  } catch (SQLException e) {

                     //

                  }

              }

              if (ps != null) {

                  try {

                     ps.close();

                  } catch (SQLException e) {

                     //

                  }

              }

              if (rs != null) {

                  try {

                     rs.close();

                  } catch (SQLException e) {

                     //

                  }

              }

           }

%>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值