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

在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) - 王朝网络 - wangchao.net.cn

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值