JNDI 笔记(一) 概述

JNDI,Java Naming Directory Interface,J2EE的标准之一,所有的J2EE容器都必须提供一个JNDI的服务,但是,我一直都没用过,至少是没有刻意地去用过。因为,我也曾经把数据源配置在Tomcat的JNDI服务中,但那时,我也只是刚刚涉足JAVA,有人告诉我应该这么干而已。后来,我开始使用自定义的数据库连接配置文件,就再也没有跟JNDI打过交道了,直到今天。

现在之所以又想看一下,只是因为觉得这是J2EE的重要标准之一,如果不懂得的话,似乎有点说不过去。

JNDI的主要功能可以这样描述,它使用一张哈希表存储对象(大多数的J2EE容器也的确是这样做的),然后,开发人员可以使用键值——也就是一个字符串——来获取这个对象。这里就包括取JNDI的两个最主要操作,bind和lookup。bind操作负责往哈希表里存对象,存对象的时候要定义好对象的键值字符串,lookup则根据这个键值字符串往外取对象。

JNDI的命称可能会让人产生混淆,似乎觉得这是一个用来操作目录的,事实上,我更愿意把这个目录理解成为JNDI存放对象时使用的格式,也就是说,JNDI以目录的方式存储对象的属性。例如,用户通过JNDI存储一个汽车对象,那么,汽车就是根目录,汽车的轮子、引擎之类的子对象就算是子目录,而属性,比如说汽车的牌子、重量之类,就算是汽车目录下的文件。

JNDI的功能既然就是根据一个字符串键值就可以取得一个想要得到的对象,我一开始就觉得这不是跟COM或CORBA一样吗?SUN也是有野心的企业啊,JNDI应该就是它要努力推行的JAVA下的分布式开发的标准吧。

JNDI的出现应该就是为了分步式开发服务的,有人负责开发这种分布式对象,有人只需要使用这些分布式对象就可以了,这两组人不必属于同一个公司,而且这种开发通常应该是不并行的,也不必是会了同一个项目服务。就如果数据源对象,它放在JNDI中,只要想要用的人,直接通过JNDI服务取来用就可以了,至于当初是谁把它放进JNDI中的,还是不用操这份心了吧。而我一直没有使用JNDI,也就是这个原因,项目中的所有对象都在我控制之下,我不去使用别人的对象,也没打算把我的对象贡献出来给别人使用,那自然也就没必要去跟JNDI打交道。我觉得是否使用JNDI,这应该是关键原因,至于什么方便性、安全性之类的考虑,应该不是JNDI的主要目的,就如同你可以用JAVA来做网站,但JAVA并不是专门用来做网站的。

可能有人觉得这种功能跟IoC也很象,这个我倒不觉得,虽然对于对象的使用人员来说的确是这种感觉,且不说IoC需要为对象定义接口,而JNDI并无此限制,先说这里有一个使用环境问题,我觉得IoC是用来解决并行开发问题的,也就是说IoC主要是用于明确设计人员与实现/使用人员的分工,无论是设计的,还是使用的,通常是一个项目组里的人,使用IoC,可以使得设计人员专注于设计,加快设计速度。因此,IoC的用途要比JNDI广泛的多,现在大型系统中,不使用IoC的,几稀矣。

以上废话是为题记。

时间: 2024-09-21 11:31:58

JNDI 笔记(一) 概述的相关文章

JSP学习笔记(一)-----概述

js|笔记 1.JSP是Java Server Pages的简写. 2.用JSP开发的Web应用是跨平台的. 3.JSP技术是Servlet技术的扩展.Servlet是平台无关的,100%纯Java的Java服务端组件. 4.下面就是一个简单的JSP页面: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML><HEAD><TITLE>欢迎访问网上商店<

JNDI 笔记(二) J2EE下使用JNDI

在J2EE环境下使用JNDI是非常简单的事,因为所有的J2EE容器都要实现JNDI服务,所以,在J2EE环境下使用JNDI,与使用Hashtable也没有什么太大区别.只有一点限制,那就是绑定对象时,对象所属的类必须实现java.io.Serializable接口,这一点也实在一点也不困难,几乎所有用到的Java类都实现了这个接口,对于自定义的类,在接口实现列表里把这个接口加进去也就是了. 下面,我将演示一下如何在J2EE环境下使用JNDI,为了保证代码的通用性,我不使用struts之类的框架,

Asp.net mvc 2 in action 笔记-1 概述、Model

受Rails成功的影响,很多的开发框架都加入了rails成功的MVC思想,如.net世界的Castle Subsonic等,微软发布的框架Asp.net MVC作为后来者,吸取了很多好的思想,而且作为微软的官方支持,代码开源,因此估计asp.net的Web开发世界这个会成为主流. 本系列是看的图书<Asp.net mvc 2 in action>的一个笔记整理 约定 ■ Content-类似CSS 和图片的静态文件 ■ Controllers-控制器类 ■ Models-模型类 ■ Scrip

Node.js学习笔记(一)概述

什么是Node.JS? 引用豆瓣Node.JS小组的回答: 把事件驱动IO库绑定给V8 JavaScript虚拟机实现的通用编程环境. 2月10日发布的0.4.0版成为新的稳定分支, 已更新至0.4.12 非稳定分支开始加入原生 Windows 支持, 已更新至0.5.6 官方网站, 包括API文档, 邮件列表等:http://nodejs.org 项目地址: https://github.com/joyent/node 它有什么不同? * 网络通信与文件系统IO无阻塞, 避免CPU时间浪费.

《HTTP权威指南》学习笔记——HTTP概述

1.HTTP--因特网的多媒体信使 HTTP使用的是可靠的数据传输协议,能确保数据在传输过程中不会损坏或混乱. 2.Web客户端和服务器 Web服务器(HTTP服务器)根据客户端的请求返回服务端的数据.(动态/静态资源,有着不同的格式) 2.1媒体类型 HTTP给Web传输的对象使用MIME类型区分数据格式. MIME类型是一种文本标记. 格式:主要的对象类型/特定的子类型 HTML:text/html 普通的ASCII文本:text/plain JPEG图片:image/jpeg gif:im

操作系统课堂笔记(1)概述

1 . 计算机系统的概观 (1)手动.机械和电动计算机 中国:算筹.算珠. 1617年 苏格兰:计算尺. 1624年 海德堡大学:第一台具有四则运算功能的计算器. 1673年 莱布尼茨 建造了一台具有四则运算功能的机械计算机器. 1884年 美国工程师 赫尔曼·霍勒雷斯 制造了第一台电动计算机. ... (2)数字电子计算机       第一代:电子管计算机 第二代:晶体管计算机 第三代:集成电路计算机 第四代:大规模集成电路计算机(1971年以后) (3)电子计算机分类: 模拟计算机: 优点:

动态网页学习:JSP学习笔记全记录

js|笔记|动态|网页 JSP学习笔记(一)-----概述 JSP学习笔记(二)-----使用Tomcat运行JSP文件 JSP学习笔记(三)-----使用JSP处理用户注册和登陆 JSP学习笔记(四)-----JSP动作的使用 JSP学习笔记(五)-----JSP中使用JavaBean JSP学习笔记(六)-----在多个JSP页面之间传递参数 JSP学习笔记(七)-----猜数字游戏 JSP学习笔记(八)-----include的运用 JSP学习笔记(九)-----JSP标签库

辞旧迎新——年度web开发合辑,新年大放送

本文整理了,工作半年来实践.研究.翻译过的相关web有关的知识,在2012来临之际,与大家分享.祝愿所有的网友和程序员朋友们身体健康,阖家欢乐! [基本篇] 细说Cache 所有Cache类型的完整介绍,偏重于服务端缓存的讲解与演示 细说Cookies Cookies的完整介绍,包括实现原理,利弊,偏重服务端使用演示 [前端篇] JS闭包可被利用的常见场景 展示了JS闭包的几个常见场景,给你带来更简洁更优化的编码方式! 仿新浪微博登录的邮箱地址自动补全功能 如题,这是一个JQuery的小Demo

ORACLE性能诊断―学习statspack笔记(二)[概述]

oracle|笔记|性能 ORACLE性能诊断―学习statspack笔记(二)[概述]   作者:刘颖博 时间:2004-3-3 mail:liuyingbo@126.com,请指正   转载请注明出处及作者   ORACLE性能诊断涉及对象   A.      服务器.网络以及磁盘(外部的环境) B.      实例(SGA,后台进程) C.      对象(表,索引,段--) D.     SQL E.      设计(指的是应用的设计,这部分一般说来是很难改变了)   ORACLE性能诊