【J2EE学习】——JNDI初次学习

JNDI学习小结

学习J2EE的时候,学到了JNDI,这是我第一次学习所以要总结一下,要不然就会像手中的沙子,不知不觉地流走了

概念

JNDI是Java命名和目录接口(Java Naming and Directory Interface,缩写JNDI),是Java的一个目录服务应用程序界面(API),它提供一个目录系统,并将服务名称与对象关联起来,从而使得开发人员在开发过程中可以使用名称来访问对象。我们在使用过程中可以直接用一个对象名点(.)出方法来就是因为这个服务
JNDI是一种查找服务,用于查找以下内容:

  • Web应用环境变量
  • EJBs和他们的环境变量
  • 通过DAtaSources的数据库连接池
  • JMS目标和连接工厂

注意
– 不要把JDNI当做数据库使用
–JNDI 和JDBC非常不同:

  <1>jdbc是数据库中间代理商为了是java连接数据库而定的一个协议 或者说是方法
         通过JDBC-ODBC的方法进行数据库连接,是连接一次创建一次的做法 
 <2> JNDI 是一种命名树的方式,把需要的类都列成目录的样式,需要哪个只要根据命名直接去 调用,
        当你要操作数据库的时候用JDBC
        而操作命名服务用JNDI 的Java Database Connectivity ,它由一组类和接口组成,
        Java应用程序开发人员使用它来访问数据库和执行SQL语句 JNDI(Java Name Directory Interface)

PS:上述区别来自——沧海一刀博客


作用

解耦

解耦怎么理解呢?举个例子,之前我们用不用JNDI的话,用JDBC URL连接数据库,假设连接的是MySQL数据的话,我们要这么写

Connection conn=null;  
try {  
  Class.forName("com.mysql.jdbc.Driver",  
                true, Thread.currentThread().getContextClassLoader());  
  conn=DriverManager.  
    getConnection("jdbc:mysql://MyDBServer?user=qingfeng&password=mingyue");  
  ......  
  conn.close();  
} catch(Exception e) {  
  e.printStackTrace();  
} finally {  
  if(conn!=null) {  
    try {  
      conn.close();  
    } catch(SQLException e) {}  
  }  
}  

对MySQL JDBC驱动程序进行编码,通过URL连接对应的数据库。这样没有问题,但是如果我们换了数据库呢?也要引入别的数据库的驱动程序类,如果数据库服务器的名称,密码变了呢?毫无疑问,JDBC URL也要改,如此这般,甚是麻烦!

所以为了方便,也为了更深的解耦,在JBoss 的 D:\jboss420GA\docs\examples\jca 文件夹下面,有很多不同数据库引用的数据源定义模板。将其中的 mysql-ds.xml 文件Copy到你使用的服务器下,如 D:\jboss420GA\server\default\deploy。
修改 mysql-ds.xml 文件的内容,使之能通过JDBC正确访问你的MySQL数据库,定义了一个名为MySqlDS的数据源,其参数包括JDBC的URL,驱动类名,用户名及密码等。
之后在程序中引用数据源就可以实现解耦了。

小结

对于JNDI我是初次理解,需要借助别人的博客,百度百科,维基百科等等才能触及皮毛,不过随着我用java越来越多,学的内容也越来越深,一定会更加理解和清楚的!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值