JNDI学习<四>

命名服务的相关概念:

Naming Service 命名服务
命名服务将名称和对象进行关联,提供通过名称找到对象的操作。
例如:DNS系统将计算机名和IP地址进行关联。文件系统将文件名和文件句柄进行关联等等。

Name 名称
要在命名系统中查找对象,需要提供对象的名称。对象的名称是用来标识该对象的易于人理解的名称。
例如:文件系统用文件名来标识文件对象。DNS系统用机器名来表示IP地址。

Naming Convention 命名规范`
一个命名系统中的所有名称必须遵循的语法规则称为命名规范。
例如:UNIX文件系统的命名规范要求文件名是一个相对于根目录的路径,路径中的每一部分以/分隔。如:/usr/bin。

Binding 绑定
一个名称和一个对象的关联称为一个绑定。
例如:文件系统中,文件名绑定到文件。DNS系统中,机器名绑定到IP地址。

Reference 引用
在一些命名服务系统中,系统并不是直接将对象存储在系统中,而是保持对象的引用。引用包含了如何访问实际对象的信息。

Address 地址
引用通常用一个或多个地址(通信端口)来表示。

Context 上下文
一个上下文是一系列名称和对象的绑定的集合。每个上下文都有与之关联的命名规范。一个上下文通常提供一个lookup操作来返回对象,也可能提供绑定,解除绑定,列举绑定名等操作。一个上下文中的名称可以绑定到一个具有相同命名规范的上下文中,称之为子上下文(subcontext)。
例如:在文件系统中,/usr是一个Context,/usr/bin是usr的subcontext。

Naming System 命名系统
一个相同类型的Context的集合。一个命名系统向客户提供命名服务来执行命名相关的操作。如DNS系统,LDAP系统等。

Namespace 名称空间
一个命名系统的所有名称的集合。
例如:文件系统中的名称空间是组成该文件系统的所有文件和目录的名称。

Atomic Name/Compound Name/Composite Name
Atomic Name 原子名称,是一个简单的基本的名称。
Compound Name 混合名称,是由多个原子名称一起构成的名称。
Composite Name 复合名称,是跨越多个命名系统的名称。
例如:一个名称可能是uid=admin,ou=cms,dc=foobar,dc=com/user/bin/jndi,
其中,uid=admin,ou=cms,dc=foobar,dc=com/user/bin/jndi是一个复合名称,跨越了两个命名系统LDAP和文件系统,uid=admin,ou=cms,dc=foobar,dc=com和/user/bin/jndi是两个混合名称,
uid=admin、ou=cms、dc=foobar分别是原子名称。

目录服务的相关概念

Directory Service 目录服务
目录服务是命名服务的扩展,除了提供名称和对象的关联,还允许对象具有属性。目录服务中的对象称之为目录对象。目录服务提供创建、添加、删除目录对象以及修改目录对象属性等操作。

Attribute 属性
一个目录对象可以包含属性。一个属性具有一个属性标识符和一系列属性值。
例如:一个打印机对象可以包含速度、分辨率等属性。分辨率的属性标识是resolution,属性值可能是300dpi,600dpi等等。

Search Filter 查找过滤器
目录服务除了通过名称查找对象的操作,通常还提供通过目录对象的属性来查找对象的操作。这种的查找一般通过规定的表达式来表示,称之为查找过滤器。


转自:http://hi.baidu.com/swallow_me/item/f7eb59f156a81bbc30c19940



JNDI包包含在jdk1.3及以后的版本中.为使用JNDI,你需要JNDI classes和一个或多个服务提供者(service providers).jdk1.3包含三个service providers:
·LDAP(Lightweight Directory Access Protocol)
·COS(CORBA Common Object Services name service)
·RMI(Java Remote Method Invocation Registry)


 

  Java 2 SDK 1.4.x的最新版本进行了改进,将以下命名/目录服务提供程序包括进来:

  • 轻量级目录访问协议Lightweight Directory Access ProtocolLDAP) 服务提供程序。
  • 公共对象请求代理架构(Common Object Request Broker Architecture CORBA)公共对象服务(Common Object Services COS)命名服务提供程序。
  • Java远程方法调用( Remote Method Invocation RMI)注册表服务提供程序。
  • 域名系统 Domain Name System DNS) 服务提供程序
Names名字
   在Context接口中每一个命名方法都有2个重 :一个接受Name参数一个接受java.lang.Sting。 Name是一个用于表示泛化的"名字"的接口.因此在Context接口中,一个Name参数是代表合成名字的CompositeName的实例,因此你可以用可以横越不同命名空间的名字来命名一个对象.其他类型的Name参数代表复合的名字.接受Name参数的重载对需要操作名字的应用很有用:组合他们,比较组件等等 .
   java.lang.Sting的名字参数表示一个合成 的名字,这个参数对简单的应用程序来说看起来更有用,比如仅读和查询符合的对象

 

在JNDI中,所有的naming和directory操作都在相关的上下文环境下被执行.没有绝对根结点.但是JNDI定义了一个初始上下文-- InitialContext,它提供用于naming和directory操作的开始点.一旦你拥有了初始上下文,你可以用它来查询其他的上下文和对象.

以上转自http://dev.youkuaiyun.com/htmls/71/71714.html

 

在客户端使用JNDI

u       创建一个java.util.Hashtable或者java.util.Properties的实例。

u       添加变量到HashtableProperties对象:

naming server提供的JNDI class类名。

包含aming server位置的URL

安全信任书。

u       通过HashtableProperitesjndi属性文件创建一个InitialContext对象。



 

           环境变量

             相应的常量          

        说明         

    java.naming.factory.initial   

      Context.INITIAL_CONTEXT_FACTORY     

    Context Factory

类名,由服务提供商给出。

    java.naming.provider.url

      Context.PROVIDE_URL

     初始化地址。

     java.naming.security.

     principal

      Context.SECURITY_PRINCIPAL 

     服务使用者信息。

    java.naming.security.

     credentials

      Context.SECURITY_CREDENTIAL

      口令


转自:http://blog.sina.com.cn/s/blog_605f5b4f0100px5a.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值