基于JNDI的应用措施开拓
当前位置:以往代写 > JAVA 教程 >基于JNDI的应用措施开拓
2019-06-14

基于JNDI的应用措施开拓

基于JNDI的应用措施开拓

副标题#e#

JNDI(The Java Naming and Directory Interface,Java定名和目次接口)是一组在Java应用中会见定名和目次处事的API。定名处事将名称和工具接洽起来,使得我们可以用名称会见工具。目次处事是一种定名处事,在这种处事里,工具不单有名称,尚有属性。

定名或目次处事使你可以会合存储共有信息,这一点在网络应用中是重要的,因为这使得这样的应用更协调、更容易打点。譬喻,可以将打印机配置存储在目次处事中,以便被与打印机有关的应用利用。

本文用代码示例的方法给出了一个快速教程,使你可以开始利用JNDI。它:

1、提供了JNDI概述

2、描写了JNDI的特点

3、体验了一下用JNDI开拓应用

4、表白了如何操作JNDI会见LDAP处事器,譬喻,Sun ONE 目次处事器

5、表白了如何操作JNDI会见J2EE处事

6、提供了示例代码,你可以将其改编为本身的应用

JNDI概述

我们各人天天都不知不觉地利用了定名处事。譬喻,当你在web欣赏器输入URL,http://java.sun.com时,DNS(Domain Name System,域名系统)将这个标记URL名转换成通讯标识(IP地点)。定名系统中的工具可以是DNS记录中的名称、应用处事器中的EJB组件(Enterprise JavaBeans Component)、LDAP(Lightweight Directory Access Protocol)中的用户Profile。

目次处事是定名处事的自然扩展。两者之间的要害不同是目次处事中工具可以有属性(譬喻,用户有email地点),而定名处事中工具没有属性。因此,在目次处事中,你可以按照属性搜索工具。JNDI答允你会见文件系统中的文件,定位长途RMI注册的工具,会见象LDAP这样的目次处事,定位网络上的EJB组件。

对付象LDAP 客户端、应用launcher、类欣赏器、网络打点实用措施,甚至地点薄这样的应用来说,JNDI是一个很好的选择。

JNDI架构

JNDI架构提供了一组尺度的独立于定名系统的API,这些API构建在与定名系统有关的驱动之上。这一层有助于将应用与实际数据源疏散,因此不管应用会见的是LDAP、RMI、DNS、照旧其他的目次处事。换句话说,JNDI独立于目次处事的详细实现,只要你有目次的处事提供接口(或驱动),你就可以利用目次。如图1所示。 图1:JNDI架构

关于JNDI要留意的重要一点是,它提供了应用编程接口(application programming interface,API)和处事提供者接口(service provider interface,SPI)。这一点的真正寄义是,要让你的应用与定名处事或目次处事交互,必需有这个处事的JNDI处事提供者,这正是JNDI SPI发挥浸染的处所。处事提供者根基上是一组类,这些类为各类详细的定名和目次处事实现了JNDI接口—很象JDBC驱动为各类详细的数据库系统实现了JDBC接口一样。作为一个应用开拓者,你不必劳神JNDI SPI。你只需要确认你要利用的每一个定名或目次处事都有处事提供者。

J2SE和JNDI

Java 2 SDK 1.3及以上的版本包括了JNDI。对付JDK 1.1和1.2也有一个尺度的扩展。Java 2 SDK 1.4.x的最新版本包罗了几个加强和下面的定名/目次处事提供者:

1、LDAP(Lightweight Directory Access Protocol)处事提供者

2、CORBA COS(Common Object Request Broker Architecture Common Object Services)定名处事提供者

3、RMI(Java Remote Method Invocation)注册处事提供者 l DNS(Domain Name System)处事提供者

更多的处事提供者

可以在如下网址找到可以下载的处事提供者列表:http://java.sun.com/products/jndi/serviceproviders.html 出格有意思的或者是如下网址提供的Windows 注册表JNDI处事提供者:http://cogentlogic.com/cocoon/CogentLogicCorporation/JNDI.xml 这个处事提供者使你可以会见Windows XP/2000/NT/Me/9x的windows注册表。也可以在如下网址下载JNDI/LDAP Booster Pack:http://java.sun.com/products/jndi/ 这个Booster Pack包括了对风行的LDAP节制的支持和扩展。它取代了与LDAP 1.2.1处事提供者绑缚在一起的booster pack。关于节制和扩展的更多信息可以在如下网站看到: http://java.sun.com/products/jndi/tutorial/ldap/ext/index.html 另一个有趣的处事提供者是Sun的支持DSML v2.0(Directory Service Markup Language,目次处事标志语言)的处事提供者。DSML的目标是在目次处事和XML之间架起一座桥梁。


#p#副标题#e#

JNDI API

JNDI API由5个包构成:

1、Javax.naming:包括了会见定名处事的类和接口。譬喻,它界说了Context接口,这是定名处事执行查询的进口。

2、Javax.naming.directory:对定名包的扩充,提供了会见目次处事的类和接口。譬喻,它为属性增加了新的类,提供了暗示目次上下文的DirContext接口,界说了查抄和更新目次工具的属性的要领。

3、Javax.naming.event:提供了对会见定名和目次处事时的时间通知的支持。譬喻,界说了NamingEvent类,这个类用来暗示定名/目次处事发生的事件,界说了侦听NamingEvents的NamingListener接口。

4、Javax.naming.ldap:这个包提供了对LDAP 版本3扩充的操纵和节制的支持,通用包javax.naming.directory没有包括这些操纵和节制。

#p#分页标题#e#

5、Javax.naming.spi:这个包提供了一个要领,通过javax.naming和有关包动态增加对会见定名和目次处事的支持。这个包是为有乐趣建设处事提供者的开拓者提供的。

JNDI 上下文

正如在前面提到的,定名处事将名称和工具接洽起来。这种接洽称之为绑定(binding)。一组这样的绑定称之为上下文(context),上下文提供了理会(即返回工具的查找操纵)。其他操纵包罗:名称的绑定和打消绑定,列出绑定的名称。留意到一个上下文工具的名称可以绑定到有同样的定名约定的另一个上下文工具。这称之为子上下文。譬喻,假如UNIX中目次/home是一个上下文,那么相对付这个目次的子目次就是子上下文—譬喻,/home/guests中guests就是home的子上下文。在JNDI中,上下文用接口javax.naming.Context暗示,这个接口是与定名处事交互的要害接口。在Context(或稍后接头的

DirContext)接口中的每一个定名要领都有两种重载形式:

1、Lookup(String name):接管串名

2、Lookup(javax.naming.Name):接管布局名,譬喻,CompositeName(超过了多个定名系统的名称)或CompondName(单个定名系统中的名称);它们都实现了Name接口。Compound name的一个例子是:cn=mydir,cn=Q Mahmoud,ou=People,composite name的一个例子是:cn=mydir,cn=Q Mahmoud,ou=People/myfiles/max.txt(这里,myfiles/max.txt是暗示第二部门的文件名) Javax.naming.InitialContext是实现了Context接口的类。用这个类作为定名处事的进口。为了建设InitialContext工具,结构器以java.util.Hashtable可能是其子类(譬喻,Properties)的形式配置一组属性。下面给出了一个例子:

Hashtable env = new Hashtable(); // select a service provider factory env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.fscontext.RefFSContext"); // create the initial context Context contxt = new InitialContext(env);

INITIAL_CONTEXT_FACTORY指定了JNDI处事提供者中工场类(factory class)的名称。Factory认真为其处事建设适当的InitialContext工具。在上面的代码片段中,为文件系统处事提供者指定了工场类。表1给出了所支持的处事提供者的工场类。要留意的是文件系统处事提供者的工场类需要从Sun公司单独下载,J2SE 1.4.x没有包括这些类。

表1:上下文INITIAL_CONTEXT_FACTORY的值

Name Service Provider Factory File System com.sun.jndi.fscontext.RefFSContextFactory LDAP com.sun.jndi.ldap.LdapCtxFactory RMI com.sun.jndi.rmi.registry.RegistryContextFactory CORBA com.sun.jndi.cosnaming.CNCtxFactory DNS com.sun.jndi.dns.DnsContextFactory

为了用名称从定名处事或目次中取得或理会工具,利用Context的lookup要领:Object obj=contxt.lookup(name)。Lookup要领返回一个工具,这个工具暗示的是你想要找的上下文的儿子。

    关键字:

在线提交作业