*****************************************
1 将接口分为Context 和 DirContext
JNDI有两个核心接口Context和DirContext, Context中包含了基本的名字操作,而DirContext则将这些操作扩展到目录服务。将这些操作分为两个包一方面为了模块化,另一方面也可以使服务减少不必要的开销。名字是计算服务中的一个基本功能,使用基本的名字服务就可以获得文件系统、电子表格、日历服务等功能;DirContext 对Context进行了扩展,提供了基本的目录服务操作,对名字对象属性的维护、基于属性的名字查找等等。
2 将JNDI 分成多个功能包
JNDI 分为两个客户端包(javax.naming,javax.naming.directory) 和一个服务端包 (javax.naming.spi)。这样做也同样是为了减少应用程序不必要的开销,使得应用程序只需要包括所必须的包。
3 将客户端API 和 服务端的API 分开
JNDI 将客户端接口与服务提供商需要的接口分开为不同的包。比如,客户端程序只需要使用javax.naming包中提供的类,而服务提供商可能需要 javax.naming和javax.naming.spi两中包。这样分开可以使客户和服务器端只专注于与自身有关的类信息。
4 上下文列表的多种方法
一般来说有两种进行上下文列表的应用:上下文浏览应用和对上下文中的对象进行实际操作的应用。
上下文浏览应用一般只需要显示上下文中包含内容的名字,或者再获取一些诸如对象的类型之类的信息。这种类型的应用一般都是交互式的,可以允许用户在列举的上下文列表中选择一些进行进一步的显示。
另外有一些应用需要对上下文中的对象进行实际的操作,比如,一个备份程序需要对目录中所有文件的状态进行操作,或者某打印机管理员可能需要对大楼中的所有打印机进行复位。为了进行这样的操作,程序需要获取上下文中的实际对象。
对于这样两种类型的应用,Context接口提供了两种上下文列表方法list()和listBindings()。其中list()只返回一系列名字 /类映射,而listBindings() 则返回名字、类和对象本身。显然list()用于上下文浏览应用而listBindings()用于那些需要对对象进行实际操作的应用。
5 对联合的支持
联合是JNDI的一个基本概念,在客户端接口中可以支持跨越多个名字空间的名字,调用名字接口的程序不需要知道细节问题,只需要指定有关的名字,有关在几个名字系统中如何解析复合名字的问题留给服务提供商来解决,与客户无关。
6 DirContext 与 DirObject
对于目录服务的实现来说,如果不用扩展Context的DirContext接口,也可以使用一个单独的包含了所有目录相关方法的接口如 DirObject,这样的话如果应用只使用目录服务就可以只包括DirObject,而如果名字服务和目录服务都使用,则可以包括Context和 DirObject。这样当然条理比较清晰,但是对于某些混合操作,比如一些对目录和名字都有效的操作就不太方便了,所以JNDI采用了 DirContext而不是DirObject。
7 Schema的支持
DirContext接口包含对schema的支持,例如,客户可以通过DirContext对象获得指向该DirContext实例的schema的定义空间的schema对象,或者获取该schema对象的类定义。Attribute类还更进一步地支持获取属性类型信息、属性定义等的方法。服务提供商既可以动态地返回这些schema信息,也可以静态地事先准备好有关的schema信息。
8 Context 和 DirContext
接口中的方法重载在Context和DirContext接口中的每个接受Name参数的方法都有一个接受字符串参数的同名方法。设计以字符串为参数的方法的原因是由于有很多应用只通过对象的名字来访问这些对象,对于这些应用来说,直接使用名字来访问这些方法当然是最直观的。
而设计以Name类对象为参数的方法的动机,也是由于有不少对名字进行维护的应用并不关系名字的字面表达,所以需要以Name对象作为参数。 在JNDI中这两种形式的方法都可以调用,以方便各种不同的应用。
9 引用
JNDI包容了多种使用目录来定位对象的方法,例如,一些应用直接将对象自身绑定在目录中;一些应用可能动态地产生目录树,当应用退出时就删去该树;另外一些应用可能只是将指向对象的URL存贮在名字空间里;还有一些系统可能将一些引用信息绑定到树中,当使用时再用这些信息来访问实际的对象。
针对这些不同的方式,JNDI定义了一个Reference类来为应用信息的表达提供一种统一的方式。Reference类包含了诸如地址、类型信息等用于访问具体对象的信息。为了能将对象的引用绑定到目录树中,该对象的类必须实现Referenceable接口,其中包含了方法 getReference() 。 Serializable接口与Referenceable接口有颇多相似之处,不同在于可引用的对象只包含一些用于创建实际对象的信息而 Serializable会包含更多的甚至不适合存储在目录结构中的信息。
10 引用到实际对象的自动定位对于作为引用绑定在目录树中的对象,JNDI SPI 指定针对引用创建实际的对象。因此,在程序中只需要认为用lookup()方法返回的对象就是实际对象,而不用在调用什么方法来将引用转换为实际对象了,所有的工作都由JNDI内部完成了。
********************************
分享到:
相关推荐
Java 命名和目录接口(Java Naming and Directory Interface,简称JNDI)是Java应用程序用来访问命名和目录服务的一组API。它提供了一个统一的接口,使得开发者可以在不同的命名和目录服务之间进行切换,而不需要...
- **name**:定义的数据源名称,通常与JNDI名称相对应。 - **auth**:设置为“Container”,表示由容器管理安全性。 - **type**:指定资源类型,此处为`javax.sql.DataSource`。 - **driverClassName**:数据库驱动...
【JBPM4整理学习资料】是一份全面介绍JBoss企业级业务流程管理(Business Process Management,简称BPM)系统JBPM4的教育资源。该资料集合了API文档、安装配置指南、常见操作步骤、数据库表结构解析以及流程分支与...
免责声明:资料部分来源...收取的费用仅用于收集和整理资料耗费时间的酬劳。 本人尊重原创作者或出版方,资料版权归原作者或出版方所有,本人不对所涉及的版权问题或内容负法律责任。如有侵权,请举报或通知本人删除。
尽管严格来说,Tomcat并非一个完整的应用服务器,但它的功能足以支持Servlet和JSP的运行,同时也具备一些应用服务器的功能,如JNDI(Java Naming and Directory Interface)、数据库连接池和用户事务处理等。...
3.2 配置管理:使用WAS管理控制台或命令行工具,可以配置服务器、数据源、安全设置、JNDI绑定等。 四、WAS性能调优 4.1 JMX监控:通过Java Management Extensions (JMX) 监控服务器性能,包括CPU使用率、内存状态...
这份压缩包中的"Java学习材料(499篇文章)等自己整理的资料——.rar"显然是一个精心收集的资源集合,涵盖了Java的学习路径,从基础到进阶,包括面试准备和编程规范。 首先,让我们来探讨Java的基础部分。JavaSE...
标题中的“文章收藏”可能指的是一个集合或整理的IT技术文章资源,这通常涵盖了各种编程、框架、设计模式或者特定技术的主题。在这个场景下,“JNDI 在 J2EE 中的角色”是一个具体的文章主题,它涉及到Java Naming ...
这份"java web 笔记整理"涵盖了该领域的关键概念和技术,包括Servlet、JSP、MVC模式、JNDI、JTA以及EJB等核心内容。以下是根据笔记内容整理出的知识点详解: 1. **Servlet**:Servlet是Java平台上的服务器端组件,...
"达内java笔记,精挑细选(达内助教整理)"是一个专门为学习Java和J2EE技术而准备的学习资料集,包含了助教精心筛选和整理的知识要点。这份笔记将帮助初学者或有经验的开发者快速掌握J2EE的核心概念和技术。 首先,...
这份名为《整理的Java-EE面试总结.pdf》的文档是一份关于Java...这些内容是面试中高频出现的问题,对于求职者来说是一份非常实用的复习资料。通过这些知识点的整理,面试者可以有效地进行查缺补漏,提高面试的成功率。
JavaEE基础知识整理 JavaEE是一个标准中间件体系结构,JavaEE编程思想是组件容器。JavaEE技术框架由表示层、业务逻辑层和数据层组成。HTTP是一个无状态协议,GET和POST请求有所区别。GET请求提交数据在地址栏显示,...
【标题】"2019最新整理的黑马java视频教程" 涵盖了Java编程语言从基础到高级,以及企业应用开发的全方位学习资源。这个教程是为那些希望掌握Java技术并准备在IT行业就业的人群设计的,无论你是初学者还是有一定经验...
【标题】"最新NIIT考试题目jsp(附96分答案)整理.pdf"涉及的知识点主要围绕Java Web开发中的Servlet、JSP、HTML、HTTP协议、Cookie管理、JNDI以及资源包配置等方面展开。 1. **Servlet**: - Servlet是一种Java编写...
- **Java Naming and Directory Interface (JNDI)**:提供命名和目录服务。 ### 知识点四:RMI与RPC的区别 #### RMI (Remote Method Invocation) - **面向对象**:RMI 是基于 Java 的面向对象的远程过程调用机制。...
输入数据源名称和JNDI名称,选择相应的数据库类型(如Oracle)和驱动程序。 - **设置连接属性**:包括最小/最大连接数、验证方法、超时设置等。 - **测试配置**:在配置完成后,可以进行连接测试,确保数据源能够...
【Java知识整理笔记】 在Java开发中,Eclipse是一款广泛使用的集成开发环境(IDE),它提供了许多便捷的快捷键操作,提升开发效率。比如: 1. `Alt+/` 可以快速呼出代码补全菜单,帮助开发者快速完成代码编写。 2. ...
- **JNDI**:Java Naming and Directory Interface,用于查找和定位应用程序所需的资源,如数据库连接。 - **JDBC**:Java Database Connectivity,Java语言中用来规范客户端程序如何来访问数据库的应用程序接口。 ...