电脑疯子技术论坛|电脑极客社区

微信扫一扫 分享朋友圈

已有 1843 人浏览分享

什么是JNDI?jndi的三种配置方法讲解

[复制链接]
1843 0
今日才接触到这个名词:jndi 之前还真不知道这是什么:

另外,关于tomcat 下jndi的配置(三种)本次接触到的为第一种:全局配置。

---------------------------------------------内容如下-------------------------------------------------------

jndi(Java Naming and Directory Interface,Java命名和目录接口)是一组在Java应用中访问命
名和目录服务的API。命名服务将名称和对象联系起来,使得我们可以用名称

访问对象。目录服务是一种命名服务,在这种服务里,对象不但有名称,还有属性。

tomcat配置jndi有全局配置和局部配置。大致的有以下三种配置方式:

第一种:全局配置。

1)在tomcat的conf文件夹下的context.xml配置文件中加入:

  1. <resource auth="Container" driverclassname="com.mysql.jdbc.Driver" maxactive="20"
  2. maxidle="10" maxwait="10000" name="jndi/mybatis" password="123456" type="java
  3. x.sql.DataSource" url="jdbc:mysql://localhost:3306/appdb" username="root"> </resource>
复制代码


2)在项目的web.xml中加入资源引用:

  1. <resource-ref>  
  2.   <description>JNDI DataSource</description>  
  3.   <res-ref-name>jndi/mybatis</res-ref-name>  
  4.   <res-ref-type>javax.sql.DataSource</res-ref-type>  
  5.   <res-auth>Container</res-auth>  
  6. </resource-ref>
复制代码


其中res-ref-name值要和context.xml的name值一致。

3)jndi测试方法:

  1. public void testJNDI() throws NamingException, SQLException{  
  2.     Context ctx = new InitialContext();  
  3.     DataSource ds = (DataSource) ctx.lookup("java:comp/env/jndi/mybatis");  
  4.     Connection conn = ds.getConnection();  
  5.     System.out.println(conn.isClosed());  
  6. }
复制代码


4)在jsp中调用加载jndi方式,不可以直接用main方法测试,必须通过启动容器从jsp中调用:

  1. TestPageAccessURL test = new TestPageAccessURL();  
  2. test.testJNDI();
复制代码


第二种:局部配置(不推荐)。

1)在tomcat的server.xml的标签内,添加:

  1. <context docbase="/demo_jndi" path="/demo_jndi">  
  2.    <resource driverclassname="com.mysql.jdbc.Driver" maxactive="4" maxid
  3. le="2" maxwait="5000" name="jndi/mybatis" password="123456" type="ja
  4. vax.sql.DataSource" url="jdbc:mysql://localhost:3306/appdb" username="root">  
  5. </resource></context>
复制代码


其他配置同第一种方式。

第三种:局部配置。

1)在项目的META-INFO下面新建context.xml。加入:

  1. <!--?xml version="1.0" encoding="UTF-8"?-->  
  2. <context>  
  3.     <resource auth="Container" driverclassname="com.mysql.jdbc.Driver" maxactive=
  4. "20" maxidle="10" maxwait="10000" name="jndi/mybatis" password="123456" type
  5. ="javax.sql.DataSource" url="jdbc:mysql://localhost:3306/appdb" username="root">      
  6. </resource></context>
复制代码


其他配置同第一种方式。

总结:如果要配置局部的话,推荐使用第三种方式,这样不依赖tomcat了。
但是还是推荐使用第一种方式好,虽然依赖tomat,但是是全局的,而且可以配置

多个。对于以后切换使用方便。

在项目的web.xml中添加的资源引用可有可无。




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

本版积分规则

1

关注

0

粉丝

9021

主题
精彩推荐
热门资讯
网友晒图
图文推荐

Powered by Pcgho! X3.4

© 2008-2022 Pcgho Inc.