JNDI学习笔记四

JNDI
(Java命名和目录服务接口)

JNDI(Java Naming and Directory Interface)

nJNDI概述

nJNDI的体系结构

nJNDI包和类

n命名服务的应用编程

n实例

 

n为什么需要JNDI?

nApplications must be able to access resources and external information in their operational environment without knowledge of how the external information is named and organized in that environment. The JNDI naming context and Java language annotations provide this capability.

n应用程序必须能在不知道外部信息是如何命名和组织在其运行环境中的情况下来存取资源和外部信息,JNDI命名上下文和Java语言的注释提供了这种能力[Java EE specification]。

 

nJNDI和注释(Annotation)是存取外部资源和信息的机制。

nThe Application Assembler and Deployer should be able to customize the behavior of an application’s business logic without accessing the application’s source code. Typically this will involve specification of parameter values, connection to external resources, and so on. Deployment descriptors provide this capability

n部署描述符( Deployment descriptors )是定制应用程序逻辑行为的机智。

n应用程序在运行环境中查找的资源(如数据源、Servlet、EJB)和外部信息必须在命名服务中注册,否则无法找到。

n 用一个有意义的文本名与对象关联。通过分布式系统的命名和目录服务能够对分布式系统中的资源(文件、分布式对象、服务)进行方便的访问和管理。

nJNDI是Java EE中的核心技术之一,它提供了企业级应用所需要的资源和外部信息的注册、存储以及获取组件等功能,许多J2EE组件的使用需要JNDI 的支持。

n在JMS,JMail,JDBC,EJB等技术中,大量应用这种技术。

n访问对象的基本方式

凭借对象名称 (name)与对象体(object) 的绑定 (binding),使用者通过上下文(context)来存取欲使用的对象。

命名服务系统示例

yRMI注册表

远程对象名—远程对象

yDNS

主机名称「dhu.edu.cn」—IP Address「202.120.144.2」

y文件系统

文件名或路径—文件句柄

n目录服务

目录服务是命名服务的扩充,也是凭借名称 与对象 的绑定来存取欲使用的对象。但允许对象拥有属性 (attributes)以记录额外的信息。于是,使用者可以通过名称来查看(look up)对象并获得该对象的属性信息,或是利用属性作为搜寻的过滤条件 (search filter)。

n目录服务是命名服务,命名服务不需要是目录服务。

例如:电话公司的电话服务系统,记录每个单位登记的电话号码。对于单位对象,有地址等属性可利用。

5

n什么是目录?

目录类似于一个数据库,它通常包含一些基于属性(名-值结构)的描述性信息。

由于目录中的信息被读的频率比写的频率高许多,所以目录没有复杂的事务和回滚机制。

n目录与数据库的区别

即目录服务的特殊性体现在以下方面:

n1.检索功能强大,而增、删、改等数据库更新功能则较弱。更新只是简单的更改操作。因为目录服务器是专门为那些检索频率多于更新频率的数据服务而设计的。

n2.对大量的信息查找或信息检索,目录应该快速给出应答。

n3.为提高性能和可靠性,并降低应答时间,分布式的目录信息要在广阔的网络范围内进行复制。复制点之间,暂时的不一致是难免的,只要最终能同步即可。

n目前使用Directory较著名的应用系统与架构有 Novell公司的 NDS(Novell Directory Services)、Sun公司的NIS(Network Information Service),与即将成为网络上一个新标准的 LDAP(Lightweight Directory Access Protocol)。

n名称、上下文(context)、名称系统与名称空间

n名称—描述对象的名称字符串。

一个名称空间中所有的命名必须遵循相应的规则—该名称空间的命名惯例。如DNS的命名惯例。

n 原子名字:不可再分的名字。P154中误

n 混合名字(Compound Name):按照命名约定组成的零个或多个原子名字序列。

n复合名字:(Composite Name):跨越多个命名系统的名字,由多个部分组成,每个部分处于不同的命名空间。

n绑定(binding)

一个原子名字到对象的关联。

n上下文(Context)

一个对象,其状态是不同原子名字到对象的绑定集合,其操作有解析名字、绑定名字、解绑定名字、列举绑定名字、注销名字等。

n命名系统

一个具有相同类型(有相同的命名约定)的上下文对象的集合。

命名系统的主要功能是从名字映射到对象,对象可以是任何类型。

一个目录系统用于表现一个计算机环境中各种信息的特殊类型的对象。一个目录对象和它的属性相关联,属性表现为一个标识符和一个值的集合。

See P155

n名称空间—一个命名/目录系统中名字的集合。

n目录的属性与子上下文

n一个上下文内部可以具有另一个上下文,称为子上下文。

n子上下文仅在目录服务中有效,而在命名服务中无效,因为命名服务未安排在类似分层树的结构中。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值