JAVA命名和目录服务(JNDI)

转载 2004年07月10日 23:52:00
 

J2EE中,JNDI的目的是用来查找J2EE服务器的注册资源(如EJB等)

一、JNDI简介

命名服务提供了一种为对象命名的机制,这样你就可以在无需知道对象位置的情况下获取和使用对象。只要该对象在命名服务器上注册过,且你必须知道命名服务器的地址和该对象在命名服务器上注册的JNDI名。就可以找到该对象,获得其引用,从而运用它提供的服务。

       利用JNDI可以寻找在命名服务器上注册过的所有对象。

JNDI就是为JAVA中命名和目录服务定义的JAVA API,是命名服务的抽象机制。我们可以直接通过JNDI来操作命名服务,而不要与底层的命名服务器交互,大大减轻了程序员的压力。

二、应用JNDI

1.  启动和关闭JNDI服务器

在用j2ee –verbose启动J2EE 服务器的同时,也就启动了JNDI服务器。一般情况下,J2EE服务器启动的同时,JNDI服务器也就启动了。

J2ee –stop关闭JNDI服务器

2.        获得名字服务的初始环境

Contect ctx=new InitailContext();

这样获得的初妈环境为默认的命名服务。假如你想改变提供JNDI服务的类(或厂商)和提供JNDI服务的命名服务器,可以采用以下方法:

Hashtable Env=new Hashtable();

Env.put(Context.INITIAL_CONTEXT_FACTORY,”com.sun.enterprise.naming.SerialInitContextFactory”);//指定提供命名服务的类名

Env.put(Context.PROVIDER_URL,”localhost:1099”);//指定提供命名服务的服务器名和端口

Context ctx=new InitialContext(env);

2.  对象绑定

bind(String name,Object o)方法 ,把对象o绑定到名字name

:import javax.naming.*;

public class TestJNDI{

public static void main(String[] args){

        try{

        Context ctx=new InitialContext();

        Ctx.bind(“ABC”,”JAVA1”);//JAVA1字符串绑定到ABC

        }catch(NamingException e){

        e.printStackTrace();

        }

        }

}

 <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

如果名字已绑定或命名服务器没有启动,则会出现NamingException异常

3.        重新绑定

ctx.rebind(String name,Object o)

:ctx.rebind(“ABC”,”JAVA2”);//现在ABC就绑定到JAVA2字符串

4.        解除绑定

ctx.unbind(String name);

不过你要确保该名字存在,否则出现NameNotFoundException 异常

5.        查找已绑定的对象

ctx.lookup(String name);根据name找对象

:

import javax.naming.*;

public class TestJNDI{

public static void main(String[] args){

        try{

        Context ctx=new InitialContext();

        Object o=ctx.lookup(“ABC”);//根据JNDI名查找绑定的对象

        String s=(String)o;//强制转换            

        }catch(NamingException e){

        e.printStackTrace();

        }catch(ClassCastException e){

        e.printStackTrace();

        }

        }

}

6.        EJB中的应用(查找EJB HOME对象)

InitialContext ic=new InitialContext();

Object o=ic.lookup(“java:comp/env/ejb/Hello”);//利用JNDI名查找EJB HOME

HelloHome home=(HelloHome)PortableRemoteObject.narrow(lookup,HelloHome.class);//定位EJB //HOME对象

Hello hello=home.create();//EJB HOME创建EJB对象

JAVA命名和目录服务(JNDI)

JAVA命名和目录服务(JNDI) 在J2EE中,JNDI的目的是用来查找J2EE服务器的注册资源(如EJB等)一、JNDI简介命名服务提供了一种为对象命名的机制,这样你就可以在无需知道对象位置的情况...
  • wuhuif
  • wuhuif
  • 2007年01月08日 13:35
  • 1270

Java命名和目录服务(JNDI)

JNDI(Java Naming and Directory Interface)既java命名和服务接口。
  • caicongyang
  • caicongyang
  • 2014年06月24日 16:31
  • 1173

JAVA命名和目录服务(JNDI)

  • zgqtxwd
  • zgqtxwd
  • 2008年04月26日 02:22
  • 227

JNDI 命名和目录操作

在本文中描述了以下操作: 查找对象 列出Context的内容 添加,覆盖,去除绑定 重命名对象 创建和销毁subcontext...
  • u010154120
  • u010154120
  • 2015年08月13日 18:39
  • 773

JavaEE命名服务与JNDI

JavaEE应用往往需要访问数据库、JMS服务等各种资源。相对于JavaEE应用来说,一个具体的资源就是一个能够提供连接数据库服务器或JMS消息系统的对象。每个资源都有一个唯一的的名字作为标识,这个名...
  • taiyangdao
  • taiyangdao
  • 2016年01月28日 00:57
  • 819

Java规范之JNDI(Java命名与目录接口)

JNDI(Java Naming and Directory Interface)- Java命名和目录接口,是一组在Java应用中访问命名和目录服务的API。为开发人员提供了查找和访问各种命名和目录...
  • yamaxifeng_132
  • yamaxifeng_132
  • 2016年09月16日 23:35
  • 201

【转】JAVA命名和目录服务(JNDI) - 王朝网络 - wangchao.net.cn

在J2EE中,JNDI的目的是用来查找J2EE服务器的注册资源(如EJB等) 一、JNDI简介 命名服务提供了一种为对象命名的机制,这样你就可以在无需知道对象位置的情况下获取和使用对象。...
  • hujiqiang
  • hujiqiang
  • 2009年12月17日 05:39
  • 377

使用JNDI来访问命名服务或者目录服务

 JNDI操作步骤使用JNDI来访问命名服务或者目录服务,操作步骤如下:(1)建立一个散列表(hashtable),它包含定义所希望使用的JNDI服务的属性,所希望连接的LDAP服务器IP地址以及工作...
  • liaomin416100569
  • liaomin416100569
  • 2010年03月22日 17:20
  • 1143

Java中的JNDI (Java命名与目录接口)

JNDI是 Java 命名与目录接口(Java Naming and Directory Interface),是Java平台的一个标准扩展,提供了一组接口、类和关于命名空间的概念。如同其它很多J...
  • jdfkldjlkjdl
  • jdfkldjlkjdl
  • 2014年11月27日 14:43
  • 1109

(java 基础知识) java命名服务(JNDI)---javax.naming

1.JNDI(Java Naming Directory Interface),即Java命名目录接口,允许Java程序通过一个名称来访问真正的Java对象,JNDI消除了不同命名,目录服务之间的差异...
  • zhouzhiwengang
  • zhouzhiwengang
  • 2013年09月04日 09:49
  • 1169
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:JAVA命名和目录服务(JNDI)
举报原因:
原因补充:

(最多只允许输入30个字)