Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1529905
  • 博文数量: 3500
  • 博客积分: 6000
  • 博客等级: 准将
  • 技术积分: 43870
  • 用 户 组: 普通用户
  • 注册时间: 2008-05-03 20:31
文章分类

全部博文(3500)

文章存档

2008年(3500)

我的朋友

分类:

2008-05-04 19:51:38

一起学习
命名服务(naming service) 命名服务是计算机系统中的一个基本功能。命名服务是将名字和计算机中的一个对象相关联,通过名字可以方便地找到对应的对象。例如,计算机中的文件系统就包含了一个命名服务,你可以通过文件名找到对应的文件对象。 目录服务(directory service) 目录服务是命名服务的延伸,目录服务不只保存对象和对象名的匹配,而且保存这个对象的各种属性,你可以对这些属性进行查询、修改、增加、删除操作。 JNDI(Java Naming Directory Interface) JNDI是一些标准API接口,Java程序通过这些API可以访问命名目录服务。JNDI的定义不依赖于任何独立的命名目录服务器,对于各种命名目录服务器,都可通过统一的JNDI接口调用。JNDI结构如下: JNDI结构包括两组API:JNDI API(Application Programming Interface)和JNDI SPI(Service Provider Interface)。Java应用程序通过JNDI API访问各种命名目录服务。JNDI SPI使得各种命名目录服务透明地加入到JNDI结构中,如上图中的LDAP、DNS、NIS等服务通过JNDI SPI加入到JNDI结构中,从而使Java应用程序能够通过JNDI API访问这些服务。 JNDI Context Context是一系列命名到对象绑定的集合,Context提供以下主要接口访问命名服务: bind(Name name, Object obj) 建立一个命名到一个对象的匹配关系,也叫绑定 lookup(String name) 通过命名查找其对应的对象 rebind(Name name, Object obj) 重新绑定一个命名到对象,覆盖原来的绑定 unbind(Name name) 解除这个命名到其匹配对象的绑定关系 ... ... Apusic JNDI 应用举例 Apusic Application Server包含一个完全遵循JNDI标准的命名服务器,下面我们举例说明如何通过JNDI接口找到你需要调用的EJB Home接口。 Context ctx = null; try { Hashtable env = new Hashtable(); env.put(Context.INITIAL_CONTEXT_FACTORY, "com.apusic.jndi.InitialContextFactory"); env.put(Context.PROVIDER_URL, "rmi://localhost:6888"); env.put(Context.SECURITY_PRINCIPAL, null); env.put(Context.SECURITY_CREDENTIALS, null); ctx = new InitialContext(env); } catch (Exception e) { System.err.println("Cannot get initial context: " e); System.exit(1); } AccountHome home = null; try { home = (AccountHome) ctx.lookup("CMAccountHome"); } catch (Exception e) { System.err.println("Cannot lookup CMAccountHome" e); System.exit(1); } 首先,通过Hashtable env传递JNDI调用参数,取得JNDI Context ctx,各参数说明如下: Context.INITIAL_CONTEXT_FACTORY: 指定jndi环境的工厂,在Apusic中必须为 com.apusic.jndi.InitialContextFactory Context.PROVIDER_URL: 指定命名服务提供者的URL,格式为:rmi://localhost:6888 Context.SECURITY_PRINCIPAL: 指定用户身份,null为“匿名用户” Context.SECURITY_CREDENTIALS: 指定用户密码,同上 然后,通过JNDI Context ctx 的lookup方法找到"CMAccountHome"绑定的CMAccountBean的Home接口。 下载本文示例代码


JNDI(Java Naming Directory Interface)JNDI(Java Naming Directory Interface)JNDI(Java Naming Directory Interface)JNDI(Java Naming Directory Interface)JNDI(Java Naming Directory Interface)JNDI(Java Naming Directory Interface)JNDI(Java Naming Directory Interface)JNDI(Java Naming Directory Interface)JNDI(Java Naming Directory Interface)JNDI(Java Naming Directory Interface)JNDI(Java Naming Directory Interface)JNDI(Java Naming Directory Interface)
阅读(136) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~