zoukankan      html  css  js  c++  java
  • Tomcat6.0中JNDI的配置oracle11g

    以下是基于Tomcat6.0的配置

    1、在Tomcat根目录\conf\context.xml里的<Context>节点中添加以下配置

     

    <!-- 配置oracle11g JNDI-->

    <Resource name="jndi/oracle11g"  auth="Container" 

    type="javax.sql.DataSource"  

    driverClassName="oracle.jdbc.driver.OracleDriver" 

    url="jdbc:oracle:thin:@localhost:1521:orcl" 

    username="orcl" password="orcl"

    maxActive="100" 

    maxIdle="30" 

    maxWait="10000"/>

    这里我们介绍一下<Resource>节点中的属性,

    (1)name:指定ResourceJNDI名字,可自定义;

    (2)auth:指定管理ResourceManager,它有两个可选值:ContainerApplicationContainer表示容器用来创建ResourceApplication表示有Web应用来创建和管理Resource

    (3)type:指定Resource所属的Java类名;

    (4)maxActive:指定数据连接池中处于活动状态的数据库连接的最大数目,取值为0,表示不受限制;

    (5)maxIdle:指定数据库连接池中处于空闲状态的数据库连接的最大数目,取值为0,表示不受限制;

    (6)maxWait :指定数据库连接池中数据库连接处于的空闲状态的最长时间(以毫秒为单位),超过一段时间将会抛出异常。取值为-1,表示可以无限制等待;

    (7)username:指定连接数据库的用户名;

    (8)password:指定连接数据库的口令;

    (9)driverClassName:指定连接数据库的JDBC驱动程序;

    (10)url:指定连接数据库的URL


    2
    、在你的的web.xml里面增加以下代码:

    <resource-ref>
     <description>JNDI Datasource example</description>
     <res-ref-name>jndi/oracle11g</res-ref-name>
     <res-type>javax.sql.DataSource</res-type>
     <res-auth>Container</res-auth>
    </resource-ref>

    同样的这里我们介绍一下<resource-ref>的属性

    (1)description:对所引用资源的说明(自定义)

    (2)res-ref-name:指定所引用资源的JNDI名字,与<Resource>元素的name属性对应;

    (3)res-type:指定所引用资源的类名字,与<Resource>元素中的type属性对应;

    (4)res-auth:指定管理所引用的资源的Manager,与<Resource>元素中的auth属性对应。

    3、添加数据库驱动文件

    通过数据源访问数据库,由于数据源由Tomcat创建并维护,所以必须把JDBC驱动程序复制到Tomcatlib目录下。

    4、获得数据源

    这里我们建立一个类

    import java.sql.Connection;

    import javax.naming.Context;
    import javax.naming.InitialContext;
    import javax.sql.DataSource;

     

    public class DBHelper {
          private static Connection getCon() {
              Connection con = null;
              try {
                   Context context=new InitialContext();
                   DataSource  ds=(DataSource)context.lookup("java:/comp/env/jndi/oracle11g ");
                   con=ds.getConnection();
               } catch (Exception e) {
                   e.printStackTrace();
              }
              return con;
         }

    }

    这样我们就可以获得数据库连接了。

    值得注意的是上述代码中下划线行为通过Context获得数据源后取得Connection对象,红色字体的代码为前缀,不可以更改,蓝色字体的代码为创建的JNDI的名字。

    这样JNDI的配置就完成了,下面我再列出几个常见的错误,我就遇到了两个错误。

    1、错误一:

    错误提示:Cannot load JDBC driver class

    错误原因及解决方法:前面我们讲过通过数据源访问数据库,数据源由Tomcat创建,所以应该吧JDBC驱动程序的JAR文件复制到Tomcatlib目录下,一般来说这样操作,问题就应该解决了。

    2、错误二(

    错误信息:Name jdbc is not bound in this Contextjdbc名称没有绑定到当前上下文)

     

    一般来说此问题就是在使用lookup()方法查找数据源时参数未写JNDI名称或者未写前缀,建议仔细检查一下。

    3、错误三

    错误信息:Cannot create JDBC driver of class '' for connect URL 'null'   ----由于连接路径为NULL,不能创建驱动。

    此问题一般是因为在context.xml文件中指定的数据源名称与程序中所要访问的数据源名称不一致,建议仔细检查一下,很多问题都是由于粗心造成的。

     

     

    本文转载自http://blog.sina.com.cn/s/blog_4745d1c101017bph.html

  • 相关阅读:
    oracle pl/sql 中目录的创建
    oracle pl/sql中创建视图
    oracle pl/sql 函数中链表的使用
    oracle pl/sql 中的触发器
    (转载)gcc/g++打印头文件包含顺序和有效性
    (转载)Linux平台可以用gdb进行反汇编和调试
    (转载)轻量级Web服务器Lighttpd的编译及配置(for x86linux)
    (转载)浮点数的二进制表示
    gdb如何进行清屏
    gdb设置运行参数
  • 原文地址:https://www.cnblogs.com/king1302217/p/3006705.html
Copyright © 2011-2022 走看看