JAVA命名和目录服务(JNDI)

原创 2005年05月28日 01:13: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();

        }

        }

}

 

如果名字已绑定或命名服务器没有启动,则会出现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)

JNDI(Java Naming and Directory Interface)既java命名和服务接口。

Java技术回顾之JNDI--命名和目录服务基本概念

命名服务的相关概念: Naming Service 命名服务 命名服务将名称和对象进行关联,提供通过名称找到对象的操作。 例如:DNS系统将计算机名和IP地址进行关联。文件系统将文件名和文件句...
  • gqltt
  • gqltt
  • 2012年05月15日 15:15
  • 636

JNDI(Java 命名和目录接口).

  • 2012年05月10日 16:39
  • 22KB
  • 下载

JNDI的包 java命名与服务

  • 2009年04月15日 20:15
  • 1.11MB
  • 下载

J2EE总结:Java命名与目录接口JNDI

JNDI是 Java 命名与目录接口,在J2EE规范中是重要的规范之一,不少专家认为,没有透彻理解JNDI的意义和作用,就没有真正掌握J2EE特别是EJB的知识。本文将通过介绍、实例、图解详细的介绍J...

Java命名目录接口(JNDI)教程--LDAP用户的高级主题

LDAP用户的高级主题 本节提供LDAP和JNDI之间映射的详细信息。同时提供使用JNDI访问LDAP服务器的暗示和提示。 LDAP X.500,一个CCITT的目录服务器标准,是O...

jndi(java命名和目录接口)到底有什么用?

JNDI的一篇文章 前端时间总是在搞不清JNDI到底是干什么,虽然是一值在用,却不知道他最初出现的原因,用来,说不清是用来干什么,下面我相信介能解开这个迷雾里。 【转贴一篇】  --...
  • ymony
  • ymony
  • 2017年10月24日 20:46
  • 32

J2EE总结:Java命名与目录接口JNDI

JNDI 是什么 JNDI是 Java 命名与目录接口(Java Naming and Directory Interface),在J2EE规范中是重要的规范之一,不少专家认为,没有透彻理解JNDI...

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

JNDI(Java Naming and Directory Interface)- Java命名和目录接口,是一组在Java应用中访问命名和目录服务的API。为开发人员提供了查找和访问各种命名和目录...

JNDI 和目录服务初步教学课件.zip

  • 2009年04月23日 19:45
  • 168KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:JAVA命名和目录服务(JNDI)
举报原因:
原因补充:

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