学习Java,我们首先要掌握的就是十三种技术规范,我们接下来就一步一步的来学习。今天主要是讲讲JNDI。
 

一、理解JNDI的用途:

    JNDI是用于访问不同的命名和目录服务的统一API接口。

二、那何时使用JNDI呢:

(1)JNDI是一种查找服务,用于查找:

    Web应用环境变量

    EJBs和它们的环境变量

    通过DataSources的数据库连接池

    JMS目标和连接工厂

    其他服务

(2)不要将JNDI当作数据库使用

    JNDI对象存储在内存中

    访问JNDI对象与网络性能有关

接下来我们看一下JNDI树:


 

接下来我们理解理解图上的意思;我们看到Initial Context是JNDI树所有搜索的起点  ,那么如何重建Initial Context呢?

三、有两种途径,我们接下来一一讲解:

(1)、从服务器端对象连接到JNDI:

 
  1. //创建一个InitialContext   
  2.      context ctx=new InitialContext();  

 

  (2)、从任何一个地方连接到JNDI:

    创建Environment对象:

 

 
  1. weblogic.jndi.Enviroment env=new  
  2.     weblogic.jndi.Enviroment();  

 

填写Environment:

 

 
  1. env.setProviderur("t3://127.0.0.1:7001");//Weblogic  
  2. //Server的位置   
  3. env.setSecurityPrincipal("system");//安全信息   
  4. env.setSecurityCredentials("passWord");  
  5. //使用Environment对象创建InitialContext   
  6. context ctx=env.getInitialContext();  

 

创建Subcontext:

四、创建一个用于绑定对象的新的Subcontext:

 

 
  1. //创建Environment对象   
  2. Contextctx = env.getInitialContext();//首先必须获得存在的Subcontext或InitialContext   
  3. //填写Environment   
  4. Contextsubcontext = ctx.createSubcontext("newSubcontext");//在当前的Context下创建新的Subcontext   
  5. subcontext.rebind("boundObject",object);//创建一个对象   
  6. subcontext.close();//当结束时经常关闭访问的资源   
  7. ctx.close();  

 

其他连接到JNDI的方法:

(1)使用‘Constant’Properties名和Hashtable类:

 

 
  1. Hashtableenv = new Hashtable();  
  2. env.put(Context.INITIAL_CONTEXT_FACTORY,"weblogic.jndi.WLInitialContextFactory");  
  3. env.put(Context.PROVIDER_URL,"t3://localhost:7001");  
  4. env.put(Context.SECURITY_PRINCIPAL,"system");  
  5. env.put(Context.SECURITY_CRRDENTIALS,"PassWord");  
  6. Contextctx = new InitalContext(env);  

 

(2)使用‘Hardcoded’名和Properties类:

 

 
  1. Propertiesenv = new Properties();  
  2. env.setProperty("java.naming.factory.initial","weblogic.jndi.WLInitialContextFactory");  
  3. env.setProperty("java.naming.provider.url","t3://192.2.56.102:7001");  
  4. env.setProperty("java.naming.security.principal","system");  
  5. env.setProperty("java.naming.security.credentials","PassWrod");  
  6. Contextctx = new InitialContext(env);  

 

五、一些JNDI环境属性:

jndi.properties:

(1)、jndi.properties文件为所有的Initial Contexts设置默认的属性

(2)、jndi.properties文件的搜索次序

A、CLASSPATH

B、$JAVA_HOME/lib/

我们看一下jndi.properties示例:

 

 
  1. Java.naming.factory.initial=weblogic.jndi.WLInitialContextFactory  
  2. Java.naming.provider.url=t3://localhost:7001   
  3. Java.naming.security.principal=system  
  4. Java.naming.security.credentials=password  
  5. //使用这些默认值:   
  6. Context ctx=new InitialContext();  

 

六、从JNDI查找:

JavaEE,青软培训