知识大全 基于JNDI的应用开发

Posted 目录

篇首语:存储阳光,必有远芳;心中有暖,又何惧人生荒凉。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 基于JNDI的应用开发相关的知识,希望对你有一定的参考价值。

java高级编程:基于JNDI的应用开发  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  基于JNDI的应用开发

  JNDI(The Java Naming and Directory Interface Java命名和目录接口)是一组在Java应用中访问命名和目录服务的API 命名服务将名称和对象联系起来 使得我们可以用名称访问对象 目录服务是一种命名服务 在这种服务里 对象不但有名称 还有属性

  命名或目录服务使你可以集中存储共有信息 这一点在网络应用中是重要的 因为这使得这样的应用更协调 更容易管理 例如 可以将打印机设置存储在目录服务中 以便被与打印机有关的应用使用

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

  l 提供了JNDI概述 l 描述了JNDI的特点 l 体验了一下用JNDI开发应用 l 表明了如何利用JNDI访问LDAP服务器 例如 Sun ONE 目录服务器 l 表明了如何利用JNDI访问J EE服务 l 提供了示例代码 你可以将其改编为自己的应用

  JNDI概述

  我们大家每天都不知不觉地使用了命名服务 例如 当你在web浏览器输入URL 时 DNS(Domain Name System 域名系统)将这个符号URL名转换成通讯标识(IP地址) 命名系统中的对象可以是DNS记录中的名称 应用服务器中的EJB组件(Enterprise JavaBeans Component) LDAP(Ligheight Directory Access Protocol)中的用户Profile

  目录服务是命名服务的自然扩展 两者之间的关键差别是目录服务中对象可以有属性(例如 用户有email地址) 而命名服务中对象没有属性 因此 在目录服务中 你可以根据属性搜索对象 JNDI允许你访问文件系统中的文件 定位远程RMI注册的对象 访问象LDAP这样的目录服务 定位网络上的EJB组件

  对于象LDAP 客户端 应用launcher 类浏览器 网络管理实用程序 甚至地址薄这样的应用来说 JNDI是一个很好的选择

  JNDI架构

  JNDI架构提供了一组标准的独立于命名系统的API 这些API构建在与命名系统有关的驱动之上 这一层有助于将应用与实际数据源分离 因此不管应用访问的是LDAP RMI DNS 还是其他的目录服务 换句话说 JNDI独立于目录服务的具体实现 只要你有目录的服务提供接口(或驱动) 你就可以使用目录 如图 所示 图 JNDI架构

  关于JNDI要注意的重要一点是 它提供了应用编程接口(application programming interface API)和服务提供者接口(service provider interface SPI) 这一点的真正含义是 要让你的应用与命名服务或目录服务交互 必须有这个服务的JNDI服务提供者 这正是JNDI SPI发挥作用的地方 服务提供者基本上是一组类 这些类为各种具体的命名和目录服务实现了JNDI接口?很象JDBC驱动为各种具体的数据库系统实现了JDBC接口一样 作为一个应用开发者 你不必操心JNDI SPI 你只需要确认你要使用的每一个命名或目录服务都有服务提供者

  J SE和JNDI

  Java SDK 及以上的版本包含了JNDI 对于JDK 和 也有一个标准的扩展 Java SDK x的最新版本包括了几个增强和下面的命名/目录服务提供者

  l LDAP(Ligheight Directory Access Protocol)服务提供者 l CORBA COS(Common Object Request Broker Architecture Common Object Services)命名服务提供者 l RMI(Java Remote Method Invocation)注册服务提供者 l DNS(Domain Name System)服务提供者

  更多的服务提供者

  可以在如下网址找到可以下载的服务提供者列表

  特别有意思的或许是如下网址提供的Windows 注册表JNDI服务提供者 这个服务提供者使你可以访问Windows XP/ /NT/Me/ x的windows注册表

  也可以在如下网址下载JNDI/LDAP Booster Pack 这个Booster Pack包含了对流行的LDAP控制的支持和扩展 它代替了与LDAP 服务提供者捆绑在一起的booster pack 关于控制和扩展的更多信息可以在如下网站看到 另一个有趣的服务提供者是Sun的支持DSML v (Directory Service Markup Language 目录服务标记语言)的服务提供者 DSML的目的是在目录服务和XML之间架起一座桥梁

  JNDI API

  JNDI API由 个包组成

  l Javax naming 包含了访问命名服务的类和接口 例如 它定义了Context接口 这是命名服务执行查询的入口 l Javax naming directory 对命名包的扩充 提供了访问目录服务的类和接口 例如 它为属性增加了新的类 提供了表示目录上下文的DirContext接口 定义了检查和更新目录对象的属性的方法 l Javax naming event 提供了对访问命名和目录服务时的时间通知的支持 例如 定义了NamingEvent类 这个类用来表示命名/目录服务产生的事件 定义了侦听NamingEvents的NamingListener接口 l Javax naming ldap 这个包提供了对LDAP 版本 扩充的操作和控制的支持 通用包javax naming directory没有包含这些操作和控制 l Javax naming spi 这个包提供了一个方法 通过javax naming和有关包动态增加对访问命名和目录服务的支持 这个包是为有兴趣创建服务提供者的开发者提供的

  JNDI 上下文

  正如在前面提到的 命名服务将名称和对象联系起来 这种联系称之为绑定(binding) 一组这样的绑定称之为上下文(context) 上下文提供了解析(即返回对象的查找操作) 其他操作包括 名称的绑定和取消绑定 列出绑定的名称 注意到一个上下文对象的名称可以绑定到有同样的命名约定的另一个上下文对象 这称之为子上下文 例如 如果UNIX中目录/home是一个上下文 那么相对于这个目录的子目录就是子上下文?例如 /home/guests中guests就是home的子上下文 在JNDI中 上下文用接口javax naming Context表示 这个接口是与命名服务交互的关键接口 在Context(或稍后讨论的

  DirContext)接口中的每一个命名方法都有两种重载形式

  l Lookup(String name) 接受串名 l Lookup(javax naming Name) 接受结构名 例如 CompositeName(跨越了多个命名系统的名称)或CompondName(单个命名系统中的名称) 它们都实现了Name接口 Compound name的一个例子是 cn=mydir cn=Q Mahmoud ou=People posite 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 sun jndi fscontext RefFSContext ) // create the initial context Context contxt = new InitialContext(env)

  INITIAL_CONTEXT_FACTORY指定了JNDI服务提供者中工厂类(factory class)的名称 Factory负责为其服务创建适当的InitialContext对象 在上面的代码片断中 为文件系统服务提供者指定了工厂类 表 给出了所支持的服务提供者的工厂类 要注意的是文件系统服务提供者的工厂类需要从Sun公司单独下载 J SE x没有包含这些类

  表 上下文INITIAL_CONTEXT_FACTORY的值 Name Service Provider Factory File System sun jndi fscontext RefFSContextFactory LDAP sun jndi ldap LdapCtxFactory RMI sun jndi rmi registry RegistryContextFactory CORBA snaming CNCtxFactory DNS sun jndi dns DnsContextFactory

cha138/Article/program/Java/hx/201311/26774

相关参考

知识大全 Tomcat5.5下的Jndi的配置实例

Tomcat5.5下的Jndi的配置实例  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  JNDI

知识大全 Hibernate的JNDI绑定分析

Hibernate的JNDI绑定分析  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Hibern

知识大全 Hibernate的JNDI名称绑定分析

Hibernate的JNDI名称绑定分析  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Hibe

知识大全 JNDI 连接Windows Active Directory&nb

JNDI连接WindowsActiveDirectory&nb  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来

知识大全 基于JSF技术的WEB应用开发

基于JSF技术的WEB应用开发  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  开发基于Java技

知识大全 基于Spring框架的WebSphere应用开发

基于Spring框架的WebSphere应用开发  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  

知识大全 基于OracleADF的应用程序开发

基于OracleADF的应用程序开发  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!摘要:介绍了AD

知识大全 基于JXTA的P2P应用开发

基于JXTA的P2P应用开发  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  PP计算被Intel

知识大全 基于OSGi和Spring开发Web应用

基于OSGi和Spring开发Web应用  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  作为一个

知识大全 基于windows平台的ZedGraph 应用

基于windows平台的ZedGraph应用  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  基于