`
messi_18
  • 浏览: 98760 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

JNDI总结

 
阅读更多
今天不知那根弦动了下,开始咬文嚼字JNDI。之所以说咬文嚼字,实在是浮于表面没有深入。权当作读书笔记。

JNDI这个东西是用来干嘛的啊?EJB,RMI-IIOP都用它来定位对象:先绑定对象到一个名字,然后再那这个名字把那个绑定的对象取出来。(写到这里,我忽然间知道我为何关注JNDI了:我是这几天一直看RMI,RMI-IIOP, EJB, CORBA, IDL这些东西来着。至于我为何看这些我也记不清了为何了。)

就是这样简单啊。好像超市门前的存储箱啊,先把包保存进去,拿到一个记着箱子号的条形码,买完东西那这个条形码一扫,东西就取出来了。我这里写的很不准确,因为忽略了细节:我拿到的包是我放进去的那个包(返回reference),还是那个包的克隆品(序列化),还是一个看起来像包的什么东西(返回的是本地构造的stub)。这里取到的东西应该是provider相关的。实际上在RMI-IIOP的场景,返回的是本地的stub的实例。

我今天所要说的是。什么是JNDI?它其实就一个API。有两部分组成,一部分是JNDI API(Java Naming and Directory Interface
Application Programming Interface),一部分是JNDI SPI(Java Naming and Directory Interface
Service Provider Interface)。前者是外观,后者是具体实现。看到provider,我想很多人就明白了十之七八。这就是plugin啊,看来JNDI是支持不同的服务的。

从这里可以看到,从jdk1.4之后,JNDI SPI包含了下面四个provider:
The LDAP Service Provider
The COS Naming Service Provider
The RMI Registry Service Provider
The DNS Service Provider

所以我们平时用JNDI的时候,都这么用的。
Hashtable<String,String> props = new Hashtable<String,String>();
		props.put("java.naming.factory.initial", "com.sun.jndi.cosnaming.CNCtxFactory");
		props.put("java.naming.provider.url", "iiop://localhost:1050");
		Context context = new InitialContext(props);
context.lookup("some service");

我们会用一系列的参数来初始化InitialContext。其实这里无疑是一个工厂模式:根据传入的java.naming.factory.initial创建不同的provider。

从一定程度上说,EJB容器也是一个JNDI service provider。只有这样我才可以通过JNDI来定位EJB啊。

总结一下:JNDI是由两部分组成的:应用程序API和provider API。前者是调用接口,后者包装了不同的服务提供者。这里再补充一句,那也得服务程序启动之后,您才能去施展JNDI啊。那服务程序是什么?就是LDAP,COS,RMI,DNS啊。
分享到:
评论

相关推荐

    java JNDI总结

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

    JNDI技术总结

    JNDI技术总结

    jndi-tool JNDI服务利用工具

    总结来说,"jndi-tool"是一个强大的JNDI服务利用工具,适用于评估和利用与Fastjson和Log4j漏洞相关的RCE风险。它利用RMI和LDAP协议,可以在高版本JDK环境下运行,为安全专业人士提供了一种有效测试环境安全性的手段...

    JNDI学习总结(一)——JNDI数据源的配置.html

    JNDI学习总结,JNDI配置数据源,资料详细,适合初学者

    jndi数据库查询例子

    总结** JNDI数据库查询是Java企业级应用中的常见实践,通过JNDI,我们可以方便地管理和查找数据源,简化了数据库连接的创建过程,同时提供了更好的可配置性和可扩展性。在MyEclipse这样的IDE中,配置JNDI数据源...

    java jndi的使用

    总结一下,Java JNDI是Java应用程序与命名和目录服务交互的关键工具。通过JNDI,开发者可以轻松地在各种服务之间查找和绑定资源,尤其是数据源,以实现灵活且可扩展的数据库访问。在实际项目中,这通常涉及配置...

    jndi连接池帮助文档

    总结来说,JNDI连接池是Java应用中管理数据库连接的重要工具,它利用JNDI的抽象特性,结合连接池技术,实现了高效、复用的数据库连接管理,提高了系统性能,并简化了应用程序的配置和维护工作。通过JNDI,开发者可以...

    配置 JNDI 数据源

    总结来说,配置JNDI数据源是Spring与Tomcat协同工作的一个重要环节,它提高了系统的灵活性和可维护性,同时也优化了数据库连接的管理。通过理解JNDI的工作原理以及如何在Spring中配置和使用JNDI数据源,开发者能够更...

    jndi用到的所有jar

    总结起来,这个压缩包提供了使用JNDI进行数据源管理所需的全部库文件,对于在WebSphere或其他支持JNDI的环境中开发和部署Java应用是必不可少的。正确理解和使用这些JNDI相关库,能够帮助开发者构建更加灵活和可扩展...

    04_JNDI.pdf

    总结来说,JNDI作为一种重要的Java API,为开发者提供了强大的命名和服务定位功能,尤其是在构建复杂的分布式应用程序时显得尤为重要。通过理解其基本概念和使用方法,可以帮助开发者更好地管理和组织应用中的各种...

    JNDI配置原理详解.doc

    #### 五、总结 通过本文的学习,我们了解了JNDI的基本原理及其在不同环境下的配置方法。特别地,对于非服务器环境,我们探讨了如何通过启动本地RMI服务来模拟JNDI行为。此外,还简要介绍了JNDI的安全性配置选项。...

    jndi-1.2.1.jar.zip

    总结来说,JNDI 1.2.1是Java平台中一个重要的组件,它提供了一种标准化的方法来访问和管理命名及目录服务,大大简化了开发者的工作,提高了代码的可移植性和可维护性。无论是企业级应用还是小型项目,JNDI都扮演着不...

    JNDI数据链接池示例

    总结一下,JNDI数据链接池是Java应用中管理和优化数据库访问的关键技术,通过JNDI接口查找和使用数据源,实现连接的高效复用,从而提升系统的性能。TestJNDI文件提供了实践这一概念的实际代码,对学习和掌握JNDI数据...

    tomcat-jndi

    总结来说,Tomcat的JNDI功能提供了强大的资源管理和配置灵活性,通过解耦配置和代码,提高了系统的可扩展性和可维护性。理解并熟练运用Tomcat的JNDI机制,对于开发高质量、高可用性的Java Web应用至关重要。而`...

    resin jndi配置

    #### 总结 通过以上分析,我们可以看到,Resin在JNDI配置方面提供了强大的支持,不仅简化了数据库连接的管理,还提高了应用的性能和稳定性。无论是对于开发者还是运维人员,掌握Resin的JNDI配置都是提升项目质量和...

    JNDI.rar_jndi

    总结,JNDI是Java平台中的一个重要组件,用于访问和管理命名和目录服务。在实际开发中,尤其是企业级应用中,利用JNDI获取数据库连接和数据源,可以实现灵活的资源管理和高效的应用部署。了解并熟练掌握JNDI的使用,...

    Jndi.pdf

    #### 六、总结 JNDI 作为一种高级的命名和目录服务接口,不仅提供了强大的功能,而且具有很高的灵活性和可扩展性。通过对 JNDI 的学习和掌握,开发者可以更高效地构建支持多种目录服务的应用程序,提高系统的可维护...

    JNDI tomcat

    **总结** JNDI在Tomcat中的应用使得管理Web应用的资源更加灵活和方便。理解JNDI的工作原理和在Tomcat中的配置方法,对于开发和维护高性能的Java Web应用至关重要。同时,合理地利用JNDI工具可以提高开发效率,降低...

    初学jndi笔记

    #### 六、总结 本文通过对JNDI基础知识的介绍,以及构建Initial Context的不同方法的探讨,帮助初学者更好地理解和使用JNDI。在实际开发中,正确地使用JNDI可以大大简化分布式应用中资源的查找和使用过程,提高代码...

Global site tag (gtag.js) - Google Analytics