Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 431|回复: 0

[jsp学习]tomcat5_5 jndi各种配置方式分析总结(mysql)

[复制链接]
  • TA的每日心情
    开心
    2021-3-12 23:18
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2014-10-1 19:26:02 | 显示全部楼层 |阅读模式
    准备工作:
    安装tomcat5.5(注意这点)
    安装mysql
    拷贝mysql驱动到tomcat_home/common/lib下
    新建一个web工程
    在工程中加入index.jsp



       
       
        <%
        @page
        import
        =
        "
        java.util.*,javax.naming.*,java.sql.*,javax.sql.*
        "
         
        %>
       

        <%
        @page contentType
        =
        "
        text/HTML;charset=BIG5
        "
        %>
       

        <%
            
        Context ctx
        =
         
        new
         InitialContext();      
        String strLookup
        =
         
        "
        java:comp/env/jdbc/test
        "
        ;
        DataSource ds
        =
        (DataSource) ctx.lookup(strLookup);
        Connection con
        =
         ds.getConnection();
       
        if
         (con
        !=
         
        null
        )
       
        {
            out.print("success");
        }
        else
       
        {
            out.print("failure");
        }
               

        %>
       
    web.xml中加入


       
       
        <
        resource
        -
        ref
        >
       
       
        <
        res
        -
        ref
        -
        name
        >
        jdbc
        /
        test
        </
        res
        -
        ref
        -
        name
        >
       
       
        <
        res
        -
        type
        >
        javax.sql.DataSource
        </
        res
        -
        type
        >
       
       
        <
        res
        -
        auth
        >
        Container
        </
        res
        -
        auth
        >
       
       
        <
        res
        -
        sharing
        -
        scope
        >
        Shareable
        </
        res
        -
        sharing
        -
        scope
        >
       

        </
        resource
        -
        ref
        >
        配置tomcat
    这一步的目的就是告诉tomcat如何连接数据库
    可以分为两种大的类型,每种类型又有很多种配置方式
    配置类型一;
    (直接配置的类型,这种方式最简单) 方法一:
    直接在tomcat_home/conf/localhost/下建立一个xml文件,文件名是<yourAppName>.xml
    例如我的工程名叫jndi,对应的名字叫jdni.xml
    内容如下:
      
       
       
        <
        Context
        >
       

        <
        Resource
              name
        =
        "
        jdbc/test
        "
       
              type
        =
        "
        javax.sql.DataSource
        "
       
              password
        =
        "
        bb
        "
       
              driverClassName
        =
        "
        com.mysql.jdbc.Driver
        "
       
              maxIdle
        =
        "
        2
        "
       
              maxWait
        =
        "
        50
        "
       
              username
        =
        "
        root
        "
       
              url
        =
        "
        jdbc:mysql://localhost:3306/test
        "
       
              maxActive
        =
        "
        4
        "
        />
       

        </
        Context
        >
       
    方法二:
    只需在tomcat_homewebappsmyappsMETA-INFcontext.xml中增加:

       
       
        <
        context
        >
       

        <
        Resource
              name
        =
        "
        jdbc/test
        "
       
              type
        =
        "
        javax.sql.DataSource
        "
       
              password
        =
        "
        bb
        "
       
              driverClassName
        =
        "
        com.mysql.jdbc.Driver
        "
       
              maxIdle
        =
        "
        2
        "
       
              maxWait
        =
        "
        50
        "
       
              username
        =
        "
        root
        "
       
              url
        =
        "
        jdbc:mysql://localhost:3306/test
        "
       
              maxActive
        =
        "
        4
        "
        />
       

        </
        context
        >
       
    说明:这种配置需要告诉tomcat resource的内容,resource应用于什么地方
    第一种方法通过文件名知道了app的name
    第二种方式本身就在app内部,所以name肯定知道
    两种方式都要放在context中 配置类型二:
    (配置全局resource,然后通过resourcelink来映射) 步骤一:配置全局resource(这一步对于所有的配置都是一样的)
    打开tomcat_home/conf/server.xml加入
       
       
        <
        Resource
              name
        =
        "
        jdbc/test
        "
       
              type
        =
        "
        javax.sql.DataSource
        "
       
              password
        =
        "
        bb
        "
       
              driverClassName
        =
        "
        com.mysql.jdbc.Driver
        "
       
              maxIdle
        =
        "
        2
        "
       
              maxWait
        =
        "
        50
        "
       
              username
        =
        "
        root
        "
       
              url
        =
        "
        jdbc:mysql://localhost:3306/test
        "
       
              maxActive
        =
        "
        4
        "
        />
       
    步骤二:映射
    (映射可以配置在多个地方,也就有多个配置方法:) 方法一:(对比类型一的配置理解)
    直接在tomcat_home/conf/localhost/下建立一个xml文件,文件名是<yourAppName>.xml
    例如我的工程名叫jndi,对应的名字叫jdni.xml加入如下内容
      
       
       
        <
        Context
        >
       

        <
        ResourceLink global
        =
        "
        jdbc/test
        "
         name
        =
        "
        jdbc/test
        "
         type
        =
        "
        javax.sql.DataSource
        "
        />
       

        </
        Context
        >
       
    方法二:(对比类型一的配置理解)
    在tomcat_homewebappsmyappsMETA-INFcontext.xml的Context中增加:



       
       
        <
        context
        >
       

        <
        ResourceLink global
        =
        "
        jdbc/test
        "
         name
        =
        "
        jdbc/test
        "
         type
        =
        "
        javax.sql.DataSource
        "
        />
         

        </
        context
        >
       
    方法三:(上边两种方法都是把全局的resource 映射给jndi这个web应用,第三种方法就是把这个
    全局的resource直接公开给所有的应用)
    在tomcat_home/conf/context.xml的<Context></context>之间加入
    <ResourceLink global="jdbc/test" name="jdbc/test" type="javax.sql.DataSource"/>

    运行测试:
    打开ie,输入http://localhost:8080/jndi/index.jsp
    看到success 常见错误:
    1,Name jdbc is not bound in this Context
    2,Cannot create JDBC driver of class "" for connect URL "null" conf localhost
    原因:
    大多数是因为配置了全局的resource,但没有link造成的。
    解决:
    加入link就行了,link的方式见类型二的三种方法。 分析:
    看到上边这么多方法,是否感觉眼花缭乱,其实不要死记配置,按照原理分析一下就好了。
    你需要的是告诉tomcat哪个应用如何连接数据库。 类型一的方式对应一个应用单独使用这个配置的情况
    就是直接告诉tomcat"应用名"  "连接数据库需要的参数" 类型二的方式对应多个应用共享一个配置的情况
    这样先配置server.xml告诉tomcat全局范围的"连接数据库需要的参数"
    然后映射,映射的时候
    1,如果不知道"app name(应用名)"就只需要通过文件名来传递这个信息
    2,如果"app name"都知道就只需要加入映射的内容
    3,如果要配置成全局公用的,就不需要"app name",本身放在tomcat的context.xml中 最后再次提醒一下:所有的配置必须放在<context></context>之间
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2025-2-27 05:46 , Processed in 0.296140 second(s), 36 queries .

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc.

    快速回复 返回顶部 返回列表