`

JNDI简介

 
阅读更多

JNDI(The Java Naming and Directory Interface,Java 命名和目录接口)
    是一组在Java 应用中访问命名和目录服务的API。为开发人员提供了查找和访问各种命名和
    目录服务的通用、统一的方式。借助于JNDI 提供的接口,能够通过名字定位用户、机器、
    网络、对象服务等。
   
    命名服务:就像DNS 一样,通过命名服务器提供服务,大部分的J2EE服务器都含有命名服务器。
    目录服务:一种简化的 RDBMS 系统,通过目录具有的属性保存一些简单的信息。
        目录服务通过目录服务器实现,比如微软ACTIVE DIRECTORY 等。

   
JNDI 是java提供的一组接口,不同的应用程序可以有不同的jndi接口的实现。通过对不同的jndi的实现
    就可以通过jndi格式的字符串来(定位)访问相应的资源。
    和多数java服务一样,SUN对JNDI也只提供接口,使用JNDI只需要用到JNDI接口而不必关心具体实现:
    各WEB容器的JNDI实现类是不同的,比如在JBOSS中,JNDI提供类是
    org.jnp.interfaces.NamingContextFactory,与tomcat是不同的。
   
    通过配置一个JNDI字符串,让其它程序能够通过这个配置找到并加载该资源。比如spring的依赖注入,
    通过bean标签的配置,将一个bean的所在路径,属性等信息标明,其它程序就可以使用这个JNDI来加载
    该bean类。

JNDI 与 静态变量的区别:
    一个静态变量只能在本地程序中使用,但如果是跨域的跨进程的程序间要访问某一特定的资源就要使用
    JNDI 来进行访问。
   
    JNDI主要作用是为分布式开发作服务的,当你需要网络上其它主机给你提供服务时候,可以将该主机的服
    务注册成JNDI,之后直接从JNDI处获取服务.
   
通过JNDI来加载程序交互所需的对象,你无需知道该对象的具体类以及某些属性的值,你就可以获得该对象,并
    进行使用。现在一般的公司服务器都是配置好了JNDI,然后给你JNDI名称,你无需知道数据库用户名和密码
    (也有可能不想告诉你)。
   
大部分程序就是通过加载xml文件,将所有的JNDI解析成键值对存储在map中,然后初始化 javax.naming.Context
    然后调用 lookup("JNDI KEY NAME") 方法来获得指定的资源。
    java.naming.factory.initial 该 key 指向加载资源的类,也就是外部程序会调用该类来加载指定的资源。
    该类由资源提供方提供。
   
    一般 web 服务器启动的时候就会将一些参数存到 System.properties 中这样,后面的代码如果要查JNDI,
    直接new InitialContext()就可以了
   
示例:
    tomcat server.xml  配置JNDI
       

<Resource  
        name="jdbc/test" <!-- JNDI数据池名称 -->  
        type="javax.sql.DataSource" <!-- 数据类 -->  
        password="karid"     <!-- 密码 -->  
        driverClassName="oracle.jdbc.driver.OracleDriver"  <!-- 驱动 -->  
        maxIdle="2"               <!-- 最少可用lia -->  
        maxWait="5000"        <!-- 最大等待时间 5秒 -->  
        username="karid"       <!-- 用户名 -->  
        url="jdbc:oracle:thin:@127.0.0.1:1521:karid"  
        maxActive="4" <!-- 最大可用连接 --> />       

 
    web.xml    引用JNDI资源
       

<description>MySQL Test App</description>
        <resource-ref>
             <description>DB Connection</description>
             <res-ref-name>jdbc/test</res-ref-name>
             <res-type>javax.sql.DataSource</res-type>
             <res-auth>Container</res-auth>
        </resource-ref> 

 
    java       加载初始化JNDI资源
      

 Context initContext = new InitialContext();  
        if (initContext == null)  
            System.out.println("无配置环境");  
        Context envContext = (Context) initContext.lookup("java:/compenv");  
        ds = (DataSource) envContext.lookup("jdbc/test"); //根据名称取得数据源   

 
     
示例2:
    JNDI
       

<Context path="/jndi">
            <Resource name="bean/MyBeanFactory" auth="Container"
                    type="com.huawei.jndi.bean.MyBean"
                    factory="org.apache.naming.factory.BeanFactory"
                    bar="23"/>
        </Context> 

 
    java
       

Context initContext = new InitialContext(); 
        Context envCtx = (Context) initContext.lookup("java:comp/env"); 
        MyBean bean = (MyBean) envCtx.lookup("bean/MyBeanFactory"); 
        System.out.println(bean.getBar());  

 

分享到:
评论

相关推荐

    JNDI简介与SPI实现

    **JNDI简介** Java Naming and Directory Interface (JNDI) 是Java平台提供的一种标准服务接口,用于在分布式环境中查找和管理资源。JNDI的主要目的是为了统一不同类型的命名和目录服务,使得开发者可以通过相同的...

    java JNDI总结

    #### 一、JNDI简介 **JNDI**(Java Naming and Directory Interface)是Java平台中的一个API,用于访问命名和目录服务,这些服务可以存储对象引用及其名称。JNDI的主要作用在于提供了一种在分布式环境中查找和访问...

    javaJNDI连接数据库

    #### JNDI简介 Java Naming and Directory Interface (JNDI) 是一种在Java环境中访问命名和目录服务的API。它为开发人员提供了查找和引用远程对象的标准方法,这包括数据库资源、消息队列和其他服务。JNDI的一个主要...

    JNDI数据源配置

    #### 二、JNDI简介 JNDI是一种标准的API,用于访问命名和目录服务。它允许开发者使用统一的方式在分布式环境中查找和引用远程对象。对于数据库连接而言,这意味着可以将连接配置信息从应用程序代码中分离出来,存储...

    Jboss_jndi.zip

    1. **JNDI简介** JNDI是一个接口规范,它提供了查找和绑定Java对象的命名和目录服务。在Java EE应用中,JNDI常用来查找和管理数据源、EJB等资源。通过JNDI,我们可以将数据库连接信息抽象出来,使应用更具可移植性...

    Java演示JNDI的使用.rar

    1. JNDI简介: JNDI是Java平台的一部分,允许开发者查找和绑定数据,这些数据可以是任何类型,比如对象、配置信息、数据库连接等。JNDI通过提供统一的接口,使得开发者不必关心底层服务的具体实现,可以方便地接入...

    jndi配置

    #### 一、JNDI简介 Java Naming and Directory Interface (JNDI) 是一种为应用程序提供命名和目录服务的 Java API。它允许开发人员以一致的方式访问多种命名和目录服务,如 DNS、LDAP 和 RMI 等。在企业级应用开发...

    Jndi数据连接池Jndi 数据连 接池

    #### 二、JNDI简介 JNDI是一种Java平台的标准接口,用于访问命名和目录服务。它提供了一种查找和获取命名对象的方式,这些对象可以是本地的也可以是远程的。在Web应用程序中,JNDI经常被用来查找数据库连接等资源。...

    JNDI参考资料.doc

    **JNDI 简介** Java Naming and Directory Interface (JNDI) 是Java平台提供的一种标准接口,用于实现命名和目录服务。JNDI的主要目的是为了管理和访问各种类型的资源和服务,如数据库连接、电子邮件服务器、...

    servlet学习笔记_JNDI.doc

    #### 一、JNDI简介 JNDI(Java Naming and Directory Interface),即Java命名和目录接口,是在分布式计算环境中使用的一种标准化接口,它允许Java应用程序查找和访问各种命名和目录服务中的共享组件及资源。 在...

    初学ldap和jndi

    #### JNDI简介 JNDI(Java Naming and Directory Interface,Java命名和目录接口)是Java平台提供的一个API,它使得Java应用程序能够以统一的方式访问多种命名和目录服务。JNDI支持LDAP、RMI(Remote Method ...

    windchill JNDI guide

    #### 一、JNDI简介 - **Java Naming and Directory Interface (JNDI)**:一种API,允许Java应用程序查找和获取远程对象和服务,提供了一种标准的方式来访问命名服务(如DNS)或目录服务(如LDAP)。通过JNDI,开发...

    基于java的EJB中JNDI的使用源码例子.zip

    1. JNDI简介: JNDI提供了一种统一的方式来管理和查找资源,比如EJB、数据源、邮件会话等。它使用命名服务来存储和检索这些资源的引用,使得开发者可以按名称查找服务,而不是硬编码具体的类或实例。JNDI由两部分...

    Tomcat中配置和使用JNDI.doc

    #### JNDI简介 JNDI(Java Naming and Directory Interface)是Java平台中用于访问命名和目录服务的应用程序接口。它提供了一个统一的框架来查找、绑定和命名Java应用中的资源,如数据库连接、消息队列等。在J2EE...

    JNDI简介_动力节点Java学院整理

    Java 命名和目录接口(Java Naming and Directory Interface,简称JNDI)是Java应用程序用来访问命名和目录服务的一组API。它提供了一个统一的接口,使得开发者可以在不同的命名和目录服务之间进行切换,而不需要...

    java中使用tomcat提供的JNDI数据源

    #### 一、JNDI简介与重要性 Java Naming and Directory Interface(JNDI)是一种Java应用程序查找和访问各种命名及目录服务的API。它允许Java应用程序查找并使用远程对象和服务,如数据库连接等。在J2EE(现在的...

Global site tag (gtag.js) - Google Analytics