JNDI通过绑定的概念将对象和名称联系起来,在一个文件系统中,文件名被绑定给文件.那么对应的在目录服务中,一个对象名绑定给一个对象实体.
命名服务提供了一种为对象命名的机制,这样就可以在无需知道对象位置的情况下获取和使用对象,简而言之,JNDI就是为java中命名和目录服务定义的java API,是命名服务的抽象机制.可以直接通过JNDI名来操作,而不需要底层服务器进行交互,减轻了程序员的压力.
JNDI可访问的现有的目录及服务有:
DNS、 XNam 、Novell目录服务、LDAP(Lightweight Directory Access Protocol 轻型目录访问协议)、 CORBA对象服务、文件系统、Windows XP/2000/NT/Me/9x的注册表、RMI、DSML v1&v2、NIS。
JNDI优点:
包含了大量的命名和目录服务,使用通用接口来访问不同种类的服务;
可以同时连接到多个命名或目录服务上;
建立起逻辑关联,允许把名称同Java对象或资源关联起来,而不必指导对象或资源的物理ID
JNDI的主要程序包
javax.naming:命名操作;
javax.naming.directory:目录操作;
javax.naming.event:在命名目录服务器中请求事件通知;
javax.naming.ldap:提供LDAP支持;
javax.naming.spi:允许动态插入不同实现。
常用的JNDI操作:
void bind(String sName,Object object);――绑定:把名称同对象关联的过程(如果名字已经绑定或命名服务器没有启动,就会出现NamingExcetion异常)
void rebind(String sName,Object object);――重新绑定:用来把对象同一个已经存在的名称重新绑定
void unbind(String sName);――释放:用来把对象从目录中释放出来
void lookup(String sName,Object object);――查找:返回目录总的一个对象
void rename(String sOldName,String sNewName);――重命名:用来修改对象名称绑定的名称
NamingEnumeration listBinding(String sName);――清单:返回绑定在特定上下文中对象的清单列表
Context cxt=new InitailContext();//创建一个上下文
cxt.bind(String name,Object o);将对象o绑定到name 上,如果名字已绑定或者服务没启动就会报NamingException异常
cxt.rebind(String name,Object o);重新绑定
cxt.unbind(String name,Object o);解除绑定
cxt.lookup(String name);通过名字查找对象;名字要存在,否则会出现nameNotFound异常
以上都是些简单的应用,如何使用JNDI或JNDI设置及管理还要继续研究.