`
wangzhen5
  • 浏览: 79607 次
  • 性别: Icon_minigender_1
  • 来自: 河南省
社区版块
存档分类
最新评论
阅读更多
编辑本段术语简介
  英文全称是:Java Naming and Directory Interface   术语解释:一组帮助做多个命名和目录服务接口的API。   JNDI(Java Naming and Directory Interface)是SUN公司提供的一种标准的Java命名系统接口,JNDI提供统一的客户端API,通过不同的访问提供者接口JNDI SPI的实现,由管理者将JNDI API映射为特定的命名服务和目录系统,使得Java应用程序可以和这些命名服务和目录服务之间进行交互。集群JNDI实现了高可靠性JNDI[8],通过服务器的集群,保证了JNDI的负载平衡和错误恢复。在全局共享的方式下,集群中的一个应用服务器保证本地JNDI树的独立性,并拥有全局的JNDI树。每个应用服务器在把部署的服务对象绑定到自己本地的JNDI树的同时,还绑定到一个共享的全局JNDI树,实现全局JNDI和自身JNDI的联系。   JNDI(Java Naming and Directory Interface)是一个应用程序设计的API,为开发人员提供了查找和访问各种命名和目录服务的通用、统一的接口,类似JDBC都是构建在抽象层上。   JNDI可访问的现有的目录及服务有:   DNS、XNam 、Novell目录服务、LDAP(Lightweight Directory Access Protocol 轻型目录访问协议)、 CORBA对象服务、文件系统、Windows XP/2000/NT/Me/9x的注册表、RMI、DSML v1&v2、NIS。
编辑本段JNDI优点
  包含了大量的命名和目录服务,使用通用接口来访问不同种类的服务;   可以同时连接到多个命名或目录服务上;   建立起逻辑关联,允许把名称同Java对象或资源关联起来,而不必知道对象或资源的物理ID。   JNDI程序包:   javax.naming:命名操作;   javax.naming.directory:目录操作;   javax.naming.event:在命名目录服务器中请求事件通知;   javax.naming.ldap:提供LDAP支持;   javax.naming.spi:允许动态插入不同实现。   利用JNDI的命名与服务功能来满足企业级APIs对命名与服务的访问,诸如EJBs、JMS、JDBC 2.0以及IIOP上的RMI通过JNDI来使用CORBA的命名服务。
编辑本段JNDI与JDBC
  JNDI提供了一种统一的方式,可以用在网络上查找和访问服务。通过指定一个资源名称,该名称对应于数据库或命名服务中的一个记录,同时返回数据库连接建立所必须的信息。   JNDI主要有两部分组成:应用程序编辑接口和服务供应商接口。应用程序编程接口提供了Java应用程序访问各种命名和目录服务的功能,服务供应商接口提供了任意一种服务的供应商使用的功能。   代码示例:   try{   Context cntxt = new InitialContext();   DataSource ds = (DataSource) cntxt.lookup("jdbc/dpt");   }   catch(NamingException ne){   ...   }
编辑本段JNDI与JMS
  消息通信是软件组件或应用程序用来通信的一种方法。JMS就是一种允许应用程序创建、发送、接收、和读取消息的JAVA技术。   代码示例:   try{   Properties env = new Properties();   InitialContext inictxt = new InitialContext(env);   TopicConnectionFactory connFactory = (TopicConnectionFactory) inictxt.lookup("TTopicConnectionFactory");   ...   }   catch(NamingException ne){   ...   }   访问特定目录:举个例子,人是个对象,他有好几个属性,诸如这个人的姓名、电话号码、电子邮件地址、邮政编码等属性。通过getAttributes()方法   Attribute attr =   directory.getAttributes(personName).get("email");   String email = (String)attr.get();   通过使用JNDI让客户使用对象的名称或属性来查找对象:   foxes = directory.search("o=Wiz,c=US", "sn=Fox", controls);   通过使用JNDI来查找诸如打印机、数据库这样的对象,查找打印机的例子:   Printer printer = (Printer)namespace.lookup(printerName);   printer.print(document);   浏览命名空间:   NamingEnumeration list = namespace.list("o=Widget, c=US");   while (list.hasMore()) {   NameClassPair entry = (NameClassPair)list.next();   display(entry.getName(), entry.getClassName());   }   参考资料:   http://java.sun.com/products/jndi/examples.html   http://java.sun.com/products/jndi/serviceproviders.html
编辑本段常用的JNDI操作
  void bind(String sName,Object object);――绑定:把名称同对象关联的过程   void rebind(String sName,Object object);――重新绑定:用来把对象同一个已经存在的名称重新绑定   void unbind(String sName);――释放:用来把对象从目录中释放出来   void lookup(String sName,Object object);――查找:返回目录中的一个对象   void rename(String sOldName,String sNewName);――重命名:用来修改对象名称绑定的名称   NamingEnumeration listBinding(String sName);――清单:返回绑定在特定上下文中对象的清单列表   NamingEnumeration list(String sName);   代码示例:重新得到了名称、类名和绑定对象。   NamingEnumeration namEnumList = ctxt.listBinding("cntxtName");   ...   while ( namEnumList.hasMore() ) {   Binding bnd = (Binding) namEnumList.next();   String sObjName = bnd.getName();   String sClassName = bnd.getClassName();   SomeObject objLocal = (SomeObject) bnd.getObject();   }
分享到:
评论

相关推荐

    jndi-1_2_1.zip_jndi_jndi-1.2.1.jar

    在JAVA编程中对JNDI的支持.是一个开放的源码.

    jndi-JNDI-Injection-Exploit

    java asm jndi_JNDI-Injection-Exploit,用于log4j2漏洞验证 可执行程序为jar包,在命令行中运行以下命令: $ java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar [-C] [command] [-A] [address] 其中: -C ...

    JNDI-Inject-Exploit

    # JNDI-Inject-Exploit ## 免责声明 本工具仅面向**合法授权的企业安全测试**,如您需测试本工具的可用性请自行搭建靶机环境,在使用本工具进行检测时,您应确保该行为符合当地的法律法规,并且已经取得了足够的...

    hibernate 3.1+tomcat 5.5.x(配置jndi)

    hibernate 3.1+tomcat 5.5.x(配置jndi)hibernate 3.1+tomcat 5.5.x(配置jndi)hibernate 3.1+tomcat 5.5.x(配置jndi)hibernate 3.1+tomcat 5.5.x(配置jndi)hibernate 3.1+tomcat 5.5.x(配置jndi)hibernate 3.1+...

    Tomcat中JNDI原理

    简单我tomcat5.0中的JNDI应用

    jboss配置MySql的JNDI

    jboss配置MySql的JNDI

    JNDI(Java Naming and Directory Interface)是SUN公司提供的一种标准的Java命名系统接口

    JNDI(Java Naming and Directory Interface)是SUN公司提供的一种标准的Java命名系统接口,JNDI提供统一的客户端API,通过不同的访问提供者接口JNDI SPI的实现,由管理者将JNDI API映射为特定的命名服务和目录系统,...

    jndi-tool JNDI服务利用工具

    JNDI服务利用工具 RMI/LDAP,支持部分场景回显、内存shell,高版本JDK场景下利用等,fastjson rce命令执行,log4j rce命令执行 漏洞检测辅助工具

    tomcat jndi数据源解密factory

    自定义jndi数据源factory类,用于解密jndi中的加密数据,解密方式为DES,具体可根据实际需求修改。

    JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar

    $ java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar [-C] [command] [-A] [address] where: -C - command executed in the remote classfile. (optional , default command is "open /Applications/...

    Java分布式处理技术RMI,JNDI,

    Java 分布式处理技术 RMI,JNDI Java 分布式处理技术是指在 Java 平台上实现分布式计算和对象之间的交互的技术。其中,RMI(Remote Method Invocation)是 Java 分布式处理技术的核心组件之一。RMI 允许在不同的 ...

    jndi所依赖的jar包

    jndi所依赖的jar包,fscontext.jar和providerutil.jar,jndi.jar 将jndi.jar复制到%JAVA_HOME%\jre\lib\ext目录下就可得到持久的扩展

    Windows_7_下搭建LDAP服务器并使用JNDI

    Windows_7_下搭建LDAP服务器并使用JNDI Windows_7_下搭建LDAP服务器并使用JNDI Windows_7_下搭建LDAP服务器并使用JNDI

    jndi之fsContext ldap

    jndi,就是命名服务(n:naming)和目录服务(d:directory). 命名服务:把对象映射到方便记忆的名字的机制.可以通过域名系统dns来理解,例如我们访问百度,只要输入www.baidu.com而不是百度的IP地址. 目录服务:其实也是一种...

    tomcat8 JNDI数据源加密

    TOMCAT8 JNDI对用户名和密码加密

    hibernate中jndi的配置使用

    配置了tomcat之后发现jndi好简单啊,可是碰到了hibernate该怎么做呢,本例详细解析

    JNDI-Injection-Exploit-1.0-SNAPSHOT-all

    JNDI-Injection-Exploit-1.0-SNAPSHOT-all

    J2EE JNDI配置原理详解 JBOSS安装配置 Maven入门 Ant使用入门

    1.1 Apache Tomcat各版本 1.2 Apache Tomcat Versions 1.3 Java事务处理总结 1.4 JavaBean中使用JDBC...1.22 JNDI配置原理详解 1.23 JSF+Seam框架学习心得 1.24 java jdbc驱动的四种类型 1.25 resource-ref元素

    Java Jndi数据连接池,sql2000或者sql2005数据库

    首先配置Tomcat服务器文件 ... <Resource name="jdbc/jndidemo" auth="Container" type="javax.sql.DataSource" maxActive="100" maxIdle="30" maxWait="10000" username="sa" password="1" driverClassName=...

    JNDI基础教程课件

    jndi入门学习资料,介绍jndi基本原理,安装和使用,基本配置

Global site tag (gtag.js) - Google Analytics