在weblogic中的JNDI

字体大小: 中小 标准 ->行高大小: 标准
创建Initial Context 从服务器端连接到JNDI
 
//创建一个Inital Context Context ctx=new InitialContext();
 
从任何一个地方连接到JNDI:
 
创建Environment对象:
 
weblogic.jndi.Enviroment env=new weblogic.jndi.Enviroment();
 
填写Environment;
 
env.setProviderurl("t3://127.0.0:7001");//WebLogic
 
//Server的位置
 
env.setSecurityPrincipal("system");
 
//安全信息
 
env.setSecurityCredentials("PassWord');
 
//使用Environment对象创建
 
InitialContext() Context ctx=env.getInitialContext();
 
创建SubContext 创建Environment对象:
 
Context ctx=env.getInitialContext();
 
首先必须获得存在的Subcontext或InitialContext
 
填写Environment:
 
Context subcontext=ctx.createSubcontext("newSubcontext");
 
在当前的Context下创建新技术的
 
Subcontext Subcontext.rebind("boundObject",object);
 
绑定一个对象
 
Subcontext.close();
 
当结束时经常关闭访问的资源
 
Ctx.close();
 
其它连接到JNDI的方法 例如,使用‘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.SECURIRY_PRINCIPAL,"system");
 
 Env.put(Context.SECURIRY_CRRDENTIALS,"PassWord");
 
Context ctx=new InitialContext(env);
 
另一个例子,使用‘Hardcoded’名和Properties类:
 
Properties env=new Properties();
 
env.setProperty("java.naming,factory.initial","weblogic.jndi.WLInitialContextFactory");
 
env.setProperty("java.naming.provider.url","t3://192.2.56.102:7001");
 
env.setProperty("java.naming.securiry.principal","system");
 
env.setProperty("java.naming.security.principal","PassWord");
 
Context ctx=new InitialContext(env);
 
一些JNDI环境属性 环境属性 等同的Environment方法 作用
 
"java.naming.factory.initial" Environment.setInitialContextFactory(java.lang.String factoryName) 上下文工厂的类名。
 
这是服务提供者给定的类名。
 
"java.naming.provider.url" Environment.setProviderUrl(java.lang.String url)
 
服务提供者所使用的配置信息。在这里指出网络位置信息。
 
"java.naming.securiry.principal" Environment.setSecurityPrincipal)
 
使用服务提供者的人员身份标识
 
"java.naming.security.credentials" Environment.setSecurityPrincipals(java.lang.Object credentials)
 
该身份的密码
 
Jndi.properties jndi.properties文件为所有的InitialContexts设置默认的属性
 
Jndi.properties文件的搜索次序
 
CLASSPATH
 
$JAVA_HOME/lib/
 
示例jndi.properties;
 
Java.naming.factory.initial=weblogic.jndi.WLINitialContextfactory
 
Java.naming.provider.url=t3://localhost:7001
 
Java.naming.provider.principal=system
 
Java.naming.security.credentials=password
 
使用这些默认值: Context=new InitialContext();//no params
 
从JNDI查找 Lookup()从JNDI树获得对象
 
通过lookup()返回的对象必须映射到它们合适的类型
 
Import javax.naming.*;
 
Try{
 
Context ic=new Context();
 
Object obj;
 
Obj=ic.lookup("javax.transaction.UserTransaction");
 
 UserTransactio ut=(UserTransaction)obj;
 
ut.begin(); ... Ic.close();
 
}catch(NamingException e){...}
 
远程绑定对象 绑定到远程命名服务的对象必须是序列化的
 
访问命名服务时,对象采用复制机制 一个Binding示例
 
Public static Context getInitialContext() throws NamingException{
 
 Environment env=new Environment();
 
env.setProviderUrl("t3://localhost:7001");
 
env.setSecurityCredentials("weblogic");
 
Context context=env.getInitialContext(); return context;
 
}
 
//获得initial context
 
Context ctx=getInitialContext();
 
 //创建名为Bank的对象
 
 Bank myBank=new Bank();
 
//把对象绑定到JNDI树
 
 ctx.rebind("theBank",nyBank);
 
ctx.close();
 
 一个Un-Binding示例
 
Public static Context getInitialContext() throws NamingExcepiton(){
 
Environment env=new Environment();
 
env.setProviderUrl("http://localhost:7001);
 
env.setSecurityPrincipal("system");
 
env.setSecurityCredentials("weblogic");
 
Context context=env.getInitialContext();
 
return context;
 
} //获得initial context
 
 Context ctx=getInitialContext();
 
//解除绑定到"theBank"的对象
 
ctx.unbind("theBank");
 
ctx.close();
 
可能的命名异常 当与JNDI交互时可能发生的例外:
 
 AuthenticationException //服务器认证信息有错时
 
 CommunicationException//通信异常
 
InvalidNameException//Naming异常
 
 NameNotFoundException//
 
NoInitialContextException//没有连接到JNDI

此文章由 http://www.ositren.com 收集整理 ,地址为: http://www.ositren.com/htmls/68788.html