JNDI 是个什么东东?
JNDI是 Java 命名与目录接口(Java Naming and Directory Interface),在J2EE规范中是重要的规范之一,不少专家认为,没有透彻理解JNDI的意义和作用,就没有真正掌握J2EE特别是EJB的知识。
那么,JNDI到底起什么作用? 要了解JNDI的作用,我们可以从“如果不用JNDI我们怎样做?用了JNDI后我们又将怎样做?”这个问题来探讨。 没有JNDI的做法: 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并进行SQL操作 */ ...... conn.close();} catch(Exception e) { e.printStackTrace();} finally { if(conn!=null) { try { conn.close(); } catch(SQLException e) {} }} 这是传统的做法,也是以前非Java程序员(如Delphi、VB等)常见的做法。这种做法一般在小规模的开发过程中不会产生问题,只要程序员熟悉Java语言、了解JDBC技术和MySQL,可以很快开发出相应的应用程序。 没有JNDI的做法存在的问题: 解决办法: 由此,就有了JNDI。 用了JNDI之后的做法: 这里,定义了一个名为MySqlDS的数据源,其参数包括JDBC的URL,驱动类名,用户名及密码等。 2、在程序中引用数据源: Connection conn=null;try { Context ctx=new InitialContext(); Object datasourceRef=ctx.lookup("java:MySqlDS"); //引用数据源 DataSource ds=(Datasource)datasourceRef; conn=ds.getConnection(); /* 使用conn进行数据库SQL操作 */ ...... c.close();} catch(Exception e) { e.printStackTrace();} finally { if(conn!=null) { try { conn.close(); } catch(SQLException e) { } }} 直接使用JDBC或者通过JNDI引用数据源的编程代码量相差无几,但是现在的程序可以不用关心具体JDBC参数了。 由此可见,JNDI避免了程序与数据库之间的紧耦合,使应用更加易于配置、易于部署。 JNDI的扩展: 所以,在J2EE规范中,J2EE 中的资源并不局限于 JDBC 数据源。引用的类型有很多,其中包括资源引用(已经讨论过)、环境实体和 EJB 引用。特别是 EJB 引用,它暴露了 JNDI 在 J2EE 中的另外一项关键角色:查找其他应用程序组件。 EJB 的 JNDI 引用非常类似于 JDBC 资源的引用。在服务趋于转换的环境中,这是一种很有效的方法。可以对应用程序架构中所得到的所有组件进行这类配置管理,从 EJB 组件到 JMS 队列和主题,再到简单配置字符串或其他对象,这可以降低随时间的推移服务变更所产生的维护成本,同时还可以简化部署,减少集成工作。 外部资源”。 总结: 在 J2EE 中,JNDI 是把 J2EE 应用程序合在一起的粘合剂,JNDI 提供的间接寻址允许跨企业交付可伸缩的、功能强大且很灵活的应用程序。这是 J2EE 的承诺,而且经过一些计划和预先考虑,这个承诺是完全可以实现的。 |
JNDI 是个什么东东?相关推荐
- VSCode 安装 Go 插件、gopls 是个什么东东
原文地址: VSCode 开发 Go 程序也可以和 GoLand 一样强大 VSCode 建议你启用 gopls,它到底是个什么东东?
- 为什么会有jsessionid,这个东东有什么用呢?
2019独角兽企业重金招聘Python工程师标准>>> 为什么会有jsessionid,这个东东有什么用呢? 博客分类: java 为什么会有jsessionid,这个东东有什么用呢 ...
- 网管必看的好东东(一)
自动释放系统资源 在Windows中每运行一个程序,系统资源就会减少.有的程序会消耗大量的系统资源,即使把程序关闭,在内存中还是有一些没用的DLL文件在运行,这样就使得系统的运行速度下降.不过我们可以 ...
- 一个超牛的东东:专门删除牛皮文件和文件夹
一个超牛的东东:专门删除牛皮文件和文件夹 电脑中有一些不知为何删除不掉的文件和文件夹,无论用什么超级粉碎机都无法清除. 在网上看到的一个方法可以帮忙 注意:使用时请小心, 建立非常简单: 新建文本文档 ...
- 【任务脚本】更新京东任务东东农场脚本,京东种水果脚本,京东活动任务半自动程序...
最近看到大牛更新了东东农场的脚本,东东农场就是京东种水果的日常任务,可以搜索"东东农场"进入(亲测猕猴桃挺好吃的),测试体验了一下脚本,有些不稳定,不过可以用,只是可能需要多运行两 ...
- 转发高人文章:以前写的一些有关代码签名/时间戳数字证书的东东
此文摘自:http://bbs.wosign.com/forum.php?mod=viewthread&tid=86 以前苦于没有专门的平台和数字证书方面的专家.爱好者一起交流,写的一些有关代 ...
- JavaScript怎么安装_几句话说清楚JavaScript、V8引擎、NodeJS、NMP,到底是什么东东...
小程序开发如火如荼,如果你是程序员,你还不懂小程序的开发,恐怕会被同行认为太LOW了吧!不过,新入行小程序开发者确实会被新的名词搞得一头雾水. 比如JavaScript不是在浏览器端运行吗,怎么还可以 ...
- php生成excel教程,php生成EXCEL的东东
php生成EXCEL的东东 发布时间:2016-06-17 来源: 点击: 次 可以通过PHP来产生EXCEL档. teaman翻译 ---------------------------- Exc ...
- 一个祸害我很久的东东——事件过滤器之按键触发
一个祸害我很久的东东--事件过滤器之按键触发 下面这个东东其实很常见,也很实用,平时上网的时候对之经常见,以为很简单,当然弄懂后,其实发现,他确实蛮简单的,但就是这小东西害了我好久好久啊.... 就是 ...
最新文章
- Tomcat绿色版启动startup.bat一闪问题的解决方法!
- 计算机组成原理(三)--存储器的层次结构
- matlab错误dparsfa,用dparsfa做功能连接时报错
- springboot启动自动停止
- mate10 android系统,华为Mate10官方固件rom刷机包_华为Mate10完整系统升级包
- python语言实现医院管理系统
- php 导出 设置多表头,PHP Excel 导出文件,自定义表头
- tcpdump进行IP抓包
- SpringAnimation弹簧动画简单使用(个人学习记录)
- 独立主机配置FTP,解析域名经历
- [译] 为什么你要学习 Go?
- 新增免费根据商品条码查询商品名称API
- 数据分析课设(SPSS,EVIEWS,R)【理论】
- 苹果手机计算机报不了名,iPhone8无法连接电脑并且不弹出信任对话框怎么办?...
- 碎影录·番外·梦之章济南 by郝宗铎
- 启动Tomcat报错java.lang.UnsupportedClassVersionError: org/apache/catalina/startup/Bootstra
- iOS拍照和视频录制
- Arduino Nano 卡在上传,无法烧录
- 软件工程毕设(一)·课题选题表
- 机器学习--线性回归