Chinaunix首页 | 论坛 | 博客
  • 博客访问: 114720
  • 博文数量: 31
  • 博客积分: 1216
  • 博客等级: 中尉
  • 技术积分: 300
  • 用 户 组: 普通用户
  • 注册时间: 2008-09-26 17:34
文章分类

全部博文(31)

文章存档

2016年(1)

2011年(2)

2010年(7)

2009年(9)

2008年(12)

我的朋友

分类: Java

2008-10-02 23:21:13

概念:理解JNDI的概念
作用:在命名服务中创建一个Subcontext,绑定,重新绑定,解除绑定和查找对象
例子:使用管理控制台查看JNDI树
 
JNDI是用于访问不同的命名和目录服务的统一API接口
JNDI是一种查找服务,用于查找:
1、Web应用环境变量
2、EJBs和它们的环境变量
3、通过DataSources的数据库连接池
4、JMS目标和连接工厂
5、其他服务
 
创建Initial Context
从服务器端对象连接到JNDI:
context ctx=new InitialContext();
从任何一个地方连接到JNDI:
weblogic.jndi.Enviroment env=new weblogic.jndi.Enviroment();
env.setProviderurl("t3://127.0.0.1:7001");
env.setSecurityPrincipal("system");
env.setSecurityCredentials("PassWord");
创建一个用于绑定对象的新Subcontext:
Context ctx=env.getInitialContext();
Context subcontext=ctx.createSubcontext("newSubcontext");
subcontext.rebind("boundObject",object);
subcontext.close();
ctx.close();
 
例子,使用‘Constant’Properties名和Hashtable类:
Hashtable env=new Hashtable();
Env.put(Context.INITIAL_CONTEXT_FACTORY,"weblogic.jndi.WLInitialContextFactory");
Env.put(Context.PROVIDER_URL,"t3://localhost:7001");
Env.put(Context.SECURITY_PRINCIPAL,"system");
Env.put(Context.SECURITY_CREDENTIALS,"PassWord");
 
Lookup()从JNDI树获得对象
绑定到远程命名服务的对象必须是序列化的
访问命名服务时,对象是采用复制机智
 
一个Binding示例
public static Context getInitialContext()throws NamingException(){
  Environment env=new Environment();
  env.setProviderUrl("t3://localhost:7001");
  env.setSecurityPrincipal("system");
  env.setSecurityCredentials("weblogic");
  Context context=env.getInitialContext();
  return context;
}
Context ctx=getInitialContext();
Bank myBank=new Bank();
ctx.rebind("theBank",myBank);
ctx.close();
 
一个Un-Binding示例
public static Context getInitialContext()throws NamingException{
  Environment env=new Environment();
  env.setProviderUrl("
");
  env.setSecurityPrincipal("system");
  env.setSecurityCredentials("weblogic");
  Context context=env.getInitialContext();
  return context;
}
Context ctx=getInitialContext();
ctx.unbind("theBank");
ctx.close();
 
可能发生异常的例子:
AuthenticationException:连接到一个JNDI,提供的Context的基本认证信息有错
CommunicationException:Lookup()等通信方面的信息
InvalidNameException:命名
NameNotFoundException:Lookup()寻找的资源不存在时
NoInitialContextEexception:没有经过IntialContext时直接rebound或Lookup时出现此类错误

阅读(843) | 评论(0) | 转发(0) |
0

上一篇:J2EE基础概念学习笔记

下一篇:J2EE之JDBC

给主人留下些什么吧!~~