什么是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),这个服务器支持多种语言、多种平台。

Tomcat配置JNDI数据源

  • 2017年11月27日 16:32
  • 1.25MB
  • 下载

TOMCAT7 JNDI修正版

  • 2017年09月14日 13:47
  • 9.1MB
  • 下载

【WebLogic使用】3.WebLogic配置jndi数据源

一、什么是jndi数据源 JNDI是Java命名与目录接口(Java Naming and Directory Interface),在J2EE规范中是重要的规范之一。 我们平时开发web程序的时候...

jndi学习经典

  • 2013年11月18日 20:52
  • 751B
  • 下载

JNDI 连接数据库

  • 2012年05月14日 19:08
  • 3KB
  • 下载

【进阶EJB】JNDI知多少?

EJB近几年好像不太常用了,但是作为SUN公司重点推荐的一种规范,其强大之处还不被很多人熟知。接下来一系列关于EJB的博文就将一一揭开EJB的神秘面纱,在网上搜过很多关于EJB的资料,很多资料也是很自...

File System Service Provider for JNDI

  • 2010年04月22日 09:48
  • 93KB
  • 下载

jndi所依赖的jar包

  • 2015年11月17日 19:52
  • 173KB
  • 下载

史上最全最详细JNDI数据源配置说明

环境:tomcat6.0+Maven 要使用数据源就要知道数据源的由来:在java开发使用jdbc都要经历这四步 ①加载数据库驱动程序:(Class.forName(“数据库驱动类”);) ②连...

JNDI数据库访问

  • 2016年02月14日 20:58
  • 2KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:什么是JNDI?
举报原因:
原因补充:

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