什么是JNDI?

原创 2011年01月19日 16:03:00

JNDI全称 Java Naming and Directory Interface 
JNDI是Java平台的一个标准扩展,提供了一组接口、类和关于命名空间的概念。如同其它很多Java技术一样,JDNI是provider-based的技术,暴露了一个API和一个服务供应接口(SPI)。这意味着任何基于名字的技术都能通过JNDI而提供服务,只要JNDI支持这项技术。JNDI目前所支持的技术包括LDAP、CORBA Common Object Service(COS)名字服务、RMI、NDS、DNS、Windows注册表等等。很多J2EE技术,包括EJB都依靠JNDI来组织和定位实体。 
JDNI通过绑定的概念将对象和名称联系起来。在一个文件系统中,文件名被绑定给文件。在DNS中,一个IP地址绑定一个URL。在目录服务中,一个对象名被绑定给一个对象实体。 
JNDI中的一组绑定作为上下文来引用。每个上下文暴露的一组操作是一致的。例如,每个上下文提供了一个查找操作,返回指定名字的相应对象。每个上下文都提供了绑定和撤除绑定名字到某个对象的操作。JNDI使用通用的方式来暴露命名空间,即使用分层上下文以及使用相同命名语法的子上下文。 
  jndi的用途: 
1。你可以用jndi来得到object类的属性 
如:Attribute attr =directory.getAttributes(personName).get("email"); 
  String email = (String)attr.get(); 
2。你可以用jndi来搜索对象 
如:foxes = directory.search("o=Wiz,c=US", "sn=Fox", controls); 
查找谁的名字叫Fox在wiz部门的员工? 
3。你可以用jndi通过naming/directory服务查询像printers和databases的对象 
如:查询  Printer 
Printer printer = (Printer)namespace.lookup(printerName); 
printer.print(document); 
4。你可以用jndi列表出命名空间的特殊级别的内容 
如: 
  NamingEnumeration list = namespace.list("o=Widget, c=US"); 
while (list.hasMore()) { 
  NameClassPair entry = (NameClassPair)list.next(); 
  display(entry.getName(), entry.getClassName()); 

以上根据jndi文档翻译的 
地址: 
http://java.sun.com/products/jndi/overview.html 
tomcat数据库连接池配置中的 
java:comp/env代表你的JVM的环境,comp=computer env=environment 


JNDI(The Java Naming and Directory Interface,Java命名和目录接口)是一组在Java应用中访问命名和目录服务的API。命名服务将名称和对象联系起来,使得我们可以用名称访问对象。目录服务是一种命名服务,在这种服务里,对象不但有名称,还有属性。 
命名或目录服务使你可以集中存储共有信息,这一点在网络应用中是重要的,因为这使得这样的应用更协调、更容易管理。例如,可以将打印机设置存储在目录服务中,以便被与打印机有关的应用使用 

JNDI概述 
我们大家每天都不知不觉地使用了命名服务。例如,当你在web浏览器输入URL,http://java.sun.com时,DNS(Domain Name System,域名系统)将这个符号URL名转换成通讯标识(IP地址)。命名系统中的对象可以是DNS记录中的名称、应用服务器中的EJB组件(Enterprise JavaBeans Component)、LDAP(Lightweight Directory Access Protocol)中的用户Profile。 
目录服务是命名服务的自然扩展。两者之间的关键差别是目录服务中对象可以有属性(例如,用户有email地址),而命名服务中对象没有属性。因此,在目录服务中,你可以根据属性搜索对象。JNDI允许你访问文件系统中的文件,定位远程RMI注册的对象,访问象LDAP这样的目录服务,定位网络上的EJB组件。 
对于象LDAP 客户端、应用launcher、类浏览器、网络管理实用程序,甚至地址薄这样的应用来说,JNDI是一个很好的选择。 
JNDI架构 
JNDI架构提供了一组标准的独立于命名系统的API,这些API构建在与命名系统有关的驱动之上。这一层有助于将应用与实际数据源分离,因此不管应用 
访问的是LDAP、RMI、DNS、还是其他的目录服务。换句话说,JNDI独立于目录服务的具体实现,只要你有目录的服务提供接口(或驱动),你就可以使用目录。 


JNDI是一组API,它用命名/目录服务增强了网络应用。本文中的示例说明了用JNDI开发基于目录的应用是多么容易。它也说明了如何用同样的API访问不同的命名/目录服务。开发者不必学习不同的API。在某些情况下,例如,在RMI和CORBA应用中,JNDI允许你部署时才选择命名服务。 
JNDI未来将增加的功能包括:与标准的Java SASL API(JSR-28,http://jcp.org/aboutJava/communityprocess/review/jsr028/) 的集成、支持国际化域名、支持安全DNS。 
为了开始使用JNDI和LDAP,下载Sun ONE目录服务器试用版(http://wwws.sun.com/software/products/directory_srvr/home_directory.html),这个服务器支持多种语言、多种平台。

JNDI是用来做什么的?

.什么是JDNI     1.java Naming and Directory Interface,java命名和目录接口      2.是一组在Java应用中访问命名和目录服务的API      ...
  • Blessed_
  • Blessed_
  • 2017年05月30日 10:53
  • 774

JavaEE规范学习(一)--- JNDI

JNDI(JavaNaming and Directory Interface,Java命名和目录接口)是SUN公司提供的一种标准的Java命名系统接口,JNDI提供统一的客户端API,通过不同的访问...
  • Senior_lee
  • Senior_lee
  • 2016年04月05日 21:58
  • 1119

jndi通俗理解

看别人写的文章,对于刚接触jndi来说,理解还是有点困难的,主要我们不知道他们底层是怎么实现的,但是听了牛人给我们稍稍简介了一下,马上就顿悟了,下面我举一个例子。1、我们用jboss配置数据库连接来说...
  • wanhonghui
  • wanhonghui
  • 2010年10月27日 17:17
  • 592

JNDI是什么?看完就明白

JNDI 是什么 JNDI是 Java 命名与目录接口(Java Naming and Directory Interface),在J2EE规范中是重要的规范之一,不少专家认为,没有透彻理解JN...
  • sinat_24928447
  • sinat_24928447
  • 2016年01月11日 11:04
  • 246

通过JNDI访问WAS中定义的资源

在近期的国库B/S项目中,需要设计大量的报表,而定义报表往往需要指定数据库连接。一般情况下,JDBC连接已经足够。但由于当前项目所使用的DB2数据库的License只允许最大5个用户并发,因此,通过J...
  • tttk
  • tttk
  • 2007年06月02日 22:43
  • 1932

什么是JNDI (转)

http://book.csdn.net/bookfiles/371/10037114079.shtml
  • oraclhr
  • oraclhr
  • 2008年05月07日 17:29
  • 172

什么是JNDI?

 JNDI全称 Java Naming and Directory InterfaceJNDI 是Java平台的一个标准扩展,提供了一组接口、类和关于命名空间的概念。如同其它很多Java技术一样,JD...
  • loren_chao
  • loren_chao
  • 2007年07月24日 21:30
  • 609

什么是JNDI?

JNDI是 Java 命名与目录接口(Java Naming and Directory Interface),在J2EE规范中是重要的规范之一,不少专家认为,没有透彻理解JNDI的意义和作用,就没有...
  • xtayhicbladwin
  • xtayhicbladwin
  • 2009年10月10日 15:28
  • 557

什么是JNDI

JNDI是 Java 命名与目录接口(Java Naming and Directory Interface),在J2EE规范中是重要的规范之一,不少专家认为,没有透彻理解JNDI的意义和作用,就没有...
  • u011734857
  • u011734857
  • 2013年08月18日 18:31
  • 181

什么是JNDI

JNDI全称 Java Naming and Directory Interface JNDI是Java平台的一个标准扩展,提供了一组接口、类和关于命名空间的概念。如同其它很多Java技术一样,JDN...
  • d9g_bj
  • d9g_bj
  • 2007年03月14日 14:27
  • 678
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:什么是JNDI?
举报原因:
原因补充:

(最多只允许输入30个字)