在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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM