概念:理解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) |