• 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

  • 相关阅读:
    第一章 搭建Qt开发环境
    Git
    spring和springmvc
    spring注解
    转:spring mvc 设置@Scope("prototype")
    转:win10完美去除快捷方式小箭头
    数据库操作之DBUtils
    java.awt.headless系统设定
    POI 导出Exicel, 报Could not initialize class sun.awt.X11FontManager错误
    ORA-01950: no privileges on tablespace
  • 原文地址:https://www.cnblogs.com/king1302217/p/3006705.html
Copyright © 2020-2023  润新知