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简介** Java Naming and Directory Interface (JNDI) 是Java平台提供的一种标准服务接口,用于在分布式环境中查找和管理资源。JNDI的主要目的是为了统一不同类型的命名和目录服务,使得开发者可以通过相同的...
#### 一、JNDI简介 **JNDI**(Java Naming and Directory Interface)是Java平台中的一个API,用于访问命名和目录服务,这些服务可以存储对象引用及其名称。JNDI的主要作用在于提供了一种在分布式环境中查找和访问...
#### JNDI简介 Java Naming and Directory Interface (JNDI) 是一种在Java环境中访问命名和目录服务的API。它为开发人员提供了查找和引用远程对象的标准方法,这包括数据库资源、消息队列和其他服务。JNDI的一个主要...
#### 二、JNDI简介 JNDI是一种标准的API,用于访问命名和目录服务。它允许开发者使用统一的方式在分布式环境中查找和引用远程对象。对于数据库连接而言,这意味着可以将连接配置信息从应用程序代码中分离出来,存储...
1. **JNDI简介** JNDI是一个接口规范,它提供了查找和绑定Java对象的命名和目录服务。在Java EE应用中,JNDI常用来查找和管理数据源、EJB等资源。通过JNDI,我们可以将数据库连接信息抽象出来,使应用更具可移植性...
1. JNDI简介: JNDI是Java平台的一部分,允许开发者查找和绑定数据,这些数据可以是任何类型,比如对象、配置信息、数据库连接等。JNDI通过提供统一的接口,使得开发者不必关心底层服务的具体实现,可以方便地接入...
#### 一、JNDI简介 Java Naming and Directory Interface (JNDI) 是一种为应用程序提供命名和目录服务的 Java API。它允许开发人员以一致的方式访问多种命名和目录服务,如 DNS、LDAP 和 RMI 等。在企业级应用开发...
#### 二、JNDI简介 JNDI是一种Java平台的标准接口,用于访问命名和目录服务。它提供了一种查找和获取命名对象的方式,这些对象可以是本地的也可以是远程的。在Web应用程序中,JNDI经常被用来查找数据库连接等资源。...
**JNDI 简介** Java Naming and Directory Interface (JNDI) 是Java平台提供的一种标准接口,用于实现命名和目录服务。JNDI的主要目的是为了管理和访问各种类型的资源和服务,如数据库连接、电子邮件服务器、...
#### 一、JNDI简介 JNDI(Java Naming and Directory Interface),即Java命名和目录接口,是在分布式计算环境中使用的一种标准化接口,它允许Java应用程序查找和访问各种命名和目录服务中的共享组件及资源。 在...
#### JNDI简介 JNDI(Java Naming and Directory Interface,Java命名和目录接口)是Java平台提供的一个API,它使得Java应用程序能够以统一的方式访问多种命名和目录服务。JNDI支持LDAP、RMI(Remote Method ...
#### 一、JNDI简介 - **Java Naming and Directory Interface (JNDI)**:一种API,允许Java应用程序查找和获取远程对象和服务,提供了一种标准的方式来访问命名服务(如DNS)或目录服务(如LDAP)。通过JNDI,开发...
1. JNDI简介: JNDI提供了一种统一的方式来管理和查找资源,比如EJB、数据源、邮件会话等。它使用命名服务来存储和检索这些资源的引用,使得开发者可以按名称查找服务,而不是硬编码具体的类或实例。JNDI由两部分...
#### JNDI简介 JNDI(Java Naming and Directory Interface)是Java平台中用于访问命名和目录服务的应用程序接口。它提供了一个统一的框架来查找、绑定和命名Java应用中的资源,如数据库连接、消息队列等。在J2EE...
Java 命名和目录接口(Java Naming and Directory Interface,简称JNDI)是Java应用程序用来访问命名和目录服务的一组API。它提供了一个统一的接口,使得开发者可以在不同的命名和目录服务之间进行切换,而不需要...
#### 一、JNDI简介与重要性 Java Naming and Directory Interface(JNDI)是一种Java应用程序查找和访问各种命名及目录服务的API。它允许Java应用程序查找并使用远程对象和服务,如数据库连接等。在J2EE(现在的...