设为首页 加入收藏

TOP

j2ee规范――JNDI
2015-07-20 17:42:07 来源: 作者: 【 】 浏览:2
Tags:j2ee 规范 JNDI

看了j2ee的视频,视频里的老师讲的很深奥呀。如果真把老师讲的学会了,那肯定又能提高一大截。

JNDI(Java Naming and Directory Interface,Java命名和目录接口)是一组在Java应用中访问命名和目录服务的API。命名服务将名称和对象联系起来,使得我们可以用名称访问对象。目录服务是一种命名服务,在这种服务里,对象不但有名称,还有属性。(360百科)

从上面的定义中可以看出JNDI提供了两种API。

命名服务是将名称和对象联系起来。例如我们的手机的通讯录一样,手机通讯录里是姓名对应手机号,可以通过姓名找到手机号。

目录服务是命名服务的自然扩展。它将有关现实世界中的事物(如人、计算机、打印机等等)描述为具有属性的对象,例如人这个对象,有性别、年龄。


优点

JNDI包含了大量的命名和目录服务,直接使用不同种类的服务,这样程序就不用与各种服务产生耦合。

这就类似:我的手机的通讯录里存有提高班所有人的手机号,如果我想给某个人,直接找到他名字就能拨打,而不用再记住手机号码再输入手机号码拨打。这样我不用记手机号码,我和手机号码的耦合度就降低了。


使用

配置Tomcat的Server.xml

   

    
  
   
     type="javax.sql.DataSource" 
     password="karid" 
     driverClassName="oracle.jdbc.driver.OracleDriver" 
     maxIdle="2" 
     maxWait="5000" 
     username="karid" 
     url="jdbc:oracle:thin:@127.0.0.1:1521:karid" maxActive="4" 
     /> 
     
      
      
       removeAbandoned
       
       
      
       true
       
      
      
      
       removeAbandonedTimeout
       
       
      
       60
       
      
      
      
       logAbandoned
       
       
      
       false
       
      
      
      
       factory
       
       
      
       org.apache.commons.dbcp.BasicDataSourceFactory
       
      
     
   
  

配置web.xml

   
    MySQL Test App
    

    
     
    
     DB Connection
     
     
    
     jdbc/test
     
     
    
     javax.sql.DataSource
     
     
    
     Container
     

    


   使用JNDI定义和引用
public class DataSourceFactory 
{ 
    private static DataSource ds; 
    public static DataSource createDataSourde() 
    { 
      if (ds == null) 
      { 
         try 
         { 
             Context initContext = new InitialContext(); 
             if (initContext == null) 
                 System.out.println("无配置环境"); 
             Context envContext = (Context) initContext.lookup("java:/compenv"); 
             ds = (DataSource) envContext.lookup("jdbc/test"); //根据名称取得数据源 
          } 
          catch (NamingException e) 
          { 
              e.printStackTrace(); 
          } 
       } 
       return ds; 
    } 
}

总结

JNDI包含了大量的命名和目录服务,直接使用不同种类的服务,不用关心服务的提供者是什么。就像配置数据源一样,不用去关心它用的是什么数据库,只管去去引用JNDI即可。



】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇SGU 271 Book Pile(双端队列) 下一篇HDU 4998 Rotate

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·工业机器人TCP校准中 (2025-12-25 05:19:17)
·opc 通讯协议与 TCP (2025-12-25 05:19:15)
·labview中tcp/ip通信 (2025-12-25 05:19:13)
·新书介绍《Python数 (2025-12-25 04:49:47)
·怎么利用 Python 进 (2025-12-25 04:49:45)