您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 咨询培训 > JNDI培训资料(经典)
齐鲁软件园华信培训中心第1页zyf@dhc.com.cnJAVAJAVA命名和目录接口命名和目录接口张英锋张英锋J2EEJ2EE、、OracleOracle讲师讲师Mail:zyf@dhc.com.cnMail:zyf@dhc.com.cnMSN:sinoastro@hotmail.comMSN:sinoastro@hotmail.com齐鲁软件园华信培训中心第2页zyf@dhc.com.cn主要内容主要内容1.1.基本概念基本概念2.JNDI2.JNDI架构架构3.JNDIAPI3.JNDIAPI齐鲁软件园华信培训中心第3页zyf@dhc.com.cn1.1.基本概念基本概念JavaJava命名和目录接口命名和目录接口TheJavaNamingandDirectoryTheJavaNamingandDirectoryInterfaceInterfaceJNDIJNDI是一个是一个J2EEJ2EE的的APIAPI,为,为JAVAJAVA应用应用程序提供命名和目录的功能。程序提供命名和目录的功能。JNDIJNDI定义了一组不依赖于任何特定的目定义了一组不依赖于任何特定的目录服务实现的通用接口。录服务实现的通用接口。齐鲁软件园华信培训中心第4页zyf@dhc.com.cnNamingServiceNamingService命名服务命名服务命名服务本质上是一种注册和定位服务。命名服务本质上是一种注册和定位服务。即将名字和一个对象相关联,通过名字可以即将名字和一个对象相关联,通过名字可以方便地找到对应的对象。方便地找到对应的对象。例如,文件系统就包含了一个命名服务,你例如,文件系统就包含了一个命名服务,你可以通过文件名找到对应的文件对象。可以通过文件名找到对应的文件对象。齐鲁软件园华信培训中心第5页zyf@dhc.com.cnDirectoryServiceDirectoryService目录服务目录服务目录服务是命名服务的扩展和提高。目录服务是命名服务的扩展和提高。目录服务提供了对命名信息的管理和操作。目录服务提供了对命名信息的管理和操作。即对属性的查询、增加、修改、删除操作。即对属性的查询、增加、修改、删除操作。齐鲁软件园华信培训中心第6页zyf@dhc.com.cn目录服务器目录服务器目录服务器是提供命名和目录服务的系统。目录服务器是提供命名和目录服务的系统。目录服务器实际上是一种特殊的数据库目录服务器实际上是一种特殊的数据库,,其其结构为树状目录。结构为树状目录。目录服务器特别适合查询多但更新少的应用。目录服务器特别适合查询多但更新少的应用。(为什么?)(为什么?)yy常见用途是保存大型企业的用户和组织结构信息。常见用途是保存大型企业的用户和组织结构信息。yy实现单点登陆实现单点登陆SingleSingleSignonSignon(SSO)(SSO)常见的目录服务器:常见的目录服务器:yyLDAP(LDAP(轻量级目录访问协议轻量级目录访问协议))、、NDSNDS等。等。齐鲁软件园华信培训中心第7页zyf@dhc.com.cn齐鲁软件园华信培训中心第8页zyf@dhc.com.cnDirectoryDirectory目录目录目录服务器的主体是目录,目录通过属性来目录服务器的主体是目录,目录通过属性来保存命名信息。保存命名信息。ContextContext上下文上下文目录中的每个节点可以被认为是一个上下文目录中的每个节点可以被认为是一个上下文((contextcontext)。)。目录服务允许我们读取和修改上下文相关的目录服务允许我们读取和修改上下文相关的属性,并且可以用这些属性作为过滤器来搜属性,并且可以用这些属性作为过滤器来搜索一个上下文。索一个上下文。齐鲁软件园华信培训中心第9页zyf@dhc.com.cn2.JNDI2.JNDI架构架构JNDIJNDI架构提供了一组标准的独立于命名架构提供了一组标准的独立于命名系统的系统的API,API,这些这些APIAPI构建在与命名系统有构建在与命名系统有关的驱动之上。关的驱动之上。将应用与实际数据源分离,不管应用访问的将应用与实际数据源分离,不管应用访问的是是LDAPLDAP、、RMIRMI、、DNSDNS、还是其他的目录服、还是其他的目录服务。务。即即JNDIJNDI独立于目录服务的具体实现,只要独立于目录服务的具体实现,只要你有目录的服务提供接口(或驱动),你就你有目录的服务提供接口(或驱动),你就可以使用目录。可以使用目录。齐鲁软件园华信培训中心第10页zyf@dhc.com.cn2.1API2.1API与与SPISPIJDNIJDNI制定了一组公开的制定了一组公开的APIAPI和一组和一组SPISPIAPI:ApplicationProgrammingAPI:ApplicationProgrammingInterfaceInterfaceSPI:ServiceProviderInterface(SPI:ServiceProviderInterface(服务提服务提供者接口供者接口))APIAPI面向应用程序的开发者面向应用程序的开发者SPISPI面向目录服务器生产厂商面向目录服务器生产厂商齐鲁软件园华信培训中心第11页zyf@dhc.com.cnJavaJava应用程序通过应用程序通过JNDIAPIJNDIAPI访问各种命访问各种命名目录服务名目录服务JNDISPIJNDISPI使得各种命名目录服务透明地使得各种命名目录服务透明地加入到加入到JNDIJNDI结构中结构中如下图中的如下图中的LDAPLDAP、、DNSDNS、、NISNIS等服务通过等服务通过JNDISPIJNDISPI加入到加入到JNDIJNDI结构中,从而使结构中,从而使JavaJava应用程序能够通过应用程序能够通过JNDIAPIJNDIAPI访问这些服务访问这些服务齐鲁软件园华信培训中心第12页zyf@dhc.com.cn齐鲁软件园华信培训中心第13页zyf@dhc.com.cnServiceProviderServiceProvider服务提供者服务提供者每一个目录服务都要求有一个服务提供者,每一个目录服务都要求有一个服务提供者,以把以把JNDIJNDI映射到该目录服务所支持的特定映射到该目录服务所支持的特定操作。操作。齐鲁软件园华信培训中心第14页zyf@dhc.com.cn就像就像JDBCJDBC驱动为各种具体的数据库系统实驱动为各种具体的数据库系统实现了现了JDBCJDBC接口一样接口一样应用开发者不必操心应用开发者不必操心JNDISPIJNDISPI,只需要确,只需要确认你要使用的每一个命名或目录服务都有服认你要使用的每一个命名或目录服务都有服务提供者务提供者ServiceProviderJDBCAPIsJDBCDriverJNDIAPIsSPIServiceProviderInterface齐鲁软件园华信培训中心第15页zyf@dhc.com.cn2.22.2使用使用JNDIJNDI应用服务器一般都会自带一个目录服务应用服务器一般都会自带一个目录服务器。器。部署在应用服务器中的应用程序可以通部署在应用服务器中的应用程序可以通过过JNDIJNDI接口获得接口获得JNDIJNDI服务提供者提供的服务提供者提供的目录服务。目录服务。齐鲁软件园华信培训中心第16页zyf@dhc.com.cnJ2EEJ2EE程序中需要在程序中需要在JNDIJNDI中注册并查找的中注册并查找的对象:对象:EJBHomeInterfacesEJBHomeInterfacesDataSourcesDataSourcesJMSConnectionFactoriesJMSConnectionFactoriesMSDestinations/TopicsMSDestinations/Topics齐鲁软件园华信培训中心第17页zyf@dhc.com.cn使用过程使用过程首先通过首先通过JNDIJNDI在目录服务器上为对象注册在目录服务器上为对象注册一个一个JNDIJNDI名。名。只要该对象在命名服务器上注册过,而且你只要该对象在命名服务器上注册过,而且你知道命名服务器的地址和该对象在命名服务知道命名服务器的地址和该对象在命名服务器上注册的器上注册的JNDIJNDI名,你就可以通过名,你就可以通过JNDIJNDI找找到该对象,获得其引用,从而运用它提供的到该对象,获得其引用,从而运用它提供的服务。服务。齐鲁软件园华信培训中心第18页zyf@dhc.com.cn注册的方法:注册的方法:通过通过JNDIAPIJNDIAPI在程序中绑定实现注册。在程序中绑定实现注册。通过在部署描述文件中或服务器配置文件定通过在部署描述文件中或服务器配置文件定义,部署时注册在服务器中。义,部署时注册在服务器中。查询的方法:查询的方法:通过通过JNDIAPIJNDIAPI查询。查询。齐鲁软件园华信培训中心第19页zyf@dhc.com.cn3.JNDIAPI3.JNDIAPIJNDIAPIJNDIAPI由由55个包组成:个包组成:javax.namingjavax.namingjavax.naming.directoryjavax.naming.directoryjavax.naming.eventjavax.naming.eventjavax.naming.ldapjavax.naming.ldapjavax.naming.spijavax.naming.spi齐鲁软件园华信培训中心第20页zyf@dhc.com.cn3.13.1javax.namingjavax.naming提供了访问命名服务的类和接口。提供了访问命名服务的类和接口。其中最重要的是其中最重要的是ContextContext和和InitalContextInitalContext接口,他们是命名服务的入口。接口,他们是命名服务的入口。ContextContext代表上下文,是访问代表上下文,是访问ServiceServiceProviderProvider的入口;的入口;ContextContext接口中包含了基接口中包含了基本的命名操作。本的命名操作。InitalContextInitalContext用途是加载用途是加载ServiceServiceProviderProvider的工厂类并返回的工厂类并返回ServiceServiceProviderProvider的实例的实例齐鲁软件园华信培训中心第21页zyf@dhc.com.cn换句话说:换句话说:应用程序要获得目录服务必须同过应用程序要获得目录服务必须同过ContextContext接口访问接口访问ServiceProviderServiceProvider对象;对象;而要获得而要获得ServiceProviderServiceProvider对象就必须通过对象就必须通过InitalContextInitalContext接口。接口。齐鲁软件园华信培训中心第22页zyf@dhc.com.cn3.1.13.1.1InitalContextInitalContext接口接口应用程序要获得应用程序要获得ContextContext对象必须通过对象必须通过InitalContextInitalContext接口进行初始化。接口进行初始化。例如例如yyContextContextctxctx=new=newInitialContextInitialContext();();如果初始化时需要设定参数,则要在构造方如果初始化时需要设定参数,则要在构造方法中以法中以HashtableHashtable或或PropertiesProperties对象设
本文标题:JNDI培训资料(经典)
链接地址:https://www.777doc.com/doc-958939 .html