`
dhj
  • 浏览: 114784 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

JAVA命名和目录服务(JNDI)

    博客分类:
  • java
阅读更多

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 对象

分享到:
评论

相关推荐

    JNDI 命名和目录服务

    【JNDI命名和目录服务】是JAVA编程中的一项核心技术,它提供了对各种命名和目录服务的统一访问接口。JNDI,全称为Java Naming and Directory Interface,它不是具体的命名或目录服务,而是一组API,使得Java程序能够...

    JNDI(Java Naming and Directory Interface)是SUN公司提供的一种标准的Java命名系统接口

    JNDI(Java Naming and Directory Interface)是SUN公司提供的一种标准的Java命名系统接口,JNDI提供统一的客户端API,通过不同的访问提供者接口JNDI SPI的实现,由管理者将JNDI API映射为特定的命名服务和目录系统,...

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

    JNDI和JDBC2.0扩展API是Java平台中用于构建高性能、高可用性企业级应用的关键技术。它们不仅简化了分布式环境下的资源管理和数据库访问,还通过提供丰富的功能和优化策略,显著提升了应用的灵活性和效率。深入理解和...

    Java 命名和目录服务的接口

    ### Java 命名和目录服务的接口 (JNDI) #### 一、JNDI 概述 Java Naming and Directory Interface(JNDI)是Java平台提供的一个标准API,用于实现应用程序与命名及目录服务之间的交互。它类似于Java Database ...

    java jndi的使用

    Java JNDI(Java Naming and Directory Interface)是Java平台中用于访问命名和目录服务的一组API。它允许Java开发者在应用程序中查找和绑定资源,如数据源、EJB(Enterprise JavaBeans)、邮件服务器等。JNDI的核心...

    JNDI的包 java命名与服务

    Java Naming and Directory Interface (JNDI) 是Java平台中用于访问和管理命名和目录服务的一组接口和类。它提供了一种标准的方式来查找和访问多种类型的服务,如对象注册表、目录服务、数据库连接池等。JNDI的核心...

    目录服务和+JNDI

    JNDI(Java Naming and Directory Interface)是Java平台提供的一种标准接口,用于访问各种命名和目录服务。它提供了一种统一的方式,使得Java应用程序可以透明地访问不同的命名和目录服务,如LDAP、DNS等。 **特点...

    jndi-tool JNDI服务利用工具

    JNDI(Java Naming and Directory Interface)是Java平台提供的一种标准接口,用于访问命名和目录服务。它允许程序查找和操作存储在不同类型的命名或目录服务中的对象,如 LDAP(Lightweight Directory Access ...

    jndi.zip_java ldap_jndi_jndi ldap_ldap_ldap java

    总结来说,JNDI和LDAP的结合使得Java开发者能轻松地管理和操作分布式目录服务,为企业的身份验证、授权和数据管理提供了强大支持。学习并熟练掌握这两者之间的交互对于提升Java应用的复杂性和可扩展性至关重要。通过...

    Java EE 中的资源注入 资源注入的概念可用于将 JNDI(Java 命名和目录接口)命名空间中的任何可用资源注入到任何容器管理的对象中

    Java EE 中的资源注入是指通过 JNDI(Java 命名和目录接口)命名空间将企业级应用程序中所需的各种资源(如数据源、连接器和自定义资源等)动态地注入到容器管理的对象(例如 Servlet、JavaBean 等)中的过程。...

    JNDI Java操作示例

    JNDI(Java Naming and Directory Interface)是Java平台中用于访问命名和目录服务的API。它提供了一种查找和定位应用程序所需的资源(如数据库连接、消息队列、EJBs等)的方式。在本文中,我们将通过一个具体的示例...

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

    "jndi.ppt"这个文件很可能包含了JNDI和目录服务的详细讲解,可能涵盖以下内容: - JNDI的基本概念和工作原理 - JNDI API的使用方法,如Context接口和Naming接口 - LDAP服务的介绍和与JNDI的结合 - 实际案例,如如何...

    jndi-1_2_1.zip_jndi_jndi-1.2.1.jar

    Java Naming and Directory Interface (JNDI) 是Java平台中用于访问和管理命名和目录服务的一组接口和类。它提供了一种标准的方式来查找和访问多种类型的资源,如数据源、对象服务、邮件服务器等。JNDI的核心理念是...

    javaJNDI连接数据库

    Java Naming and Directory Interface (JNDI) 是一种在Java环境中访问命名和目录服务的API。它为开发人员提供了查找和引用远程对象的标准方法,这包括数据库资源、消息队列和其他服务。JNDI的一个主要优势是它提供了...

    java JNDI总结

    **JNDI**(Java Naming and Directory Interface)是Java平台中的一个API,用于访问命名和目录服务,这些服务可以存储对象引用及其名称。JNDI的主要作用在于提供了一种在分布式环境中查找和访问远程对象的标准方法。...

    jndi所依赖的jar包

    Java Naming and Directory Interface (JNDI) 是Java平台中用于访问命名和目录服务的API,它为各种不同的命名和目录服务提供了统一的接口。在Java应用程序中,JNDI允许开发者查找和绑定对象,这些对象可以是数据源、...

    Jndi使用方法

    Java 命名和目录接口(JNDI)是Java应用程序访问命名和目录服务的关键工具。命名服务的核心功能是通过名称将对象与它们的标识关联,便于用户通过名称而非直接引用访问对象。目录服务则在此基础上增加了属性概念,...

    JavaJNDI 数据链接池及 属性文件读取数据链接信息

    JavaJNDI(Java Naming and Directory Interface)是Java平台中用于访问命名和目录服务的一组API,它允许Java应用程序查找和管理分布在不同网络环境中的资源。数据连接池(Connection Pool)是Java应用中用于管理...

    java命名包jndi.jar

    经过oracle 驱动测试通过的jndi.jar

Global site tag (gtag.js) - Google Analytics