`
melphi9
  • 浏览: 99122 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

JNDI的简单理解

阅读更多
以前一直接触jndi,不过始终不知道是什么,现在明白了:


引用

   看了JNDI的实现,我感有点惊讶和一点迷惑,惊讶的是系统编程比应用编程就难度来说还真不好说,比如就象
实现JNDI,SUN已经定好了Interface,你要做的就是弄清楚整个功能的原理,然后去实现他,然而应用编程则没有
人为你定好Interface,你只能根据需求分析自己定好Interface,自己定好框架,但是这个框架能不能满足需求那就
不好说了,但是SUN定的规范可是肯定可以实现功能的,并且一般情况下你必须全部实现接口中的每一个函数,要不然,
人家说你又不符合他的规范,不能通过他的认证。好了下面我讲讲我读JNDI的经过。
JNDI的规范我大概的看了一下,大概知道了JNDI是干什么用的,实际上我的理解就是JNDI是一种服务,什么样的服务呢
,就是你给我一个字符串,我就给出对应字符串所对应的对象。那这东西有什么用呢?那我们不是经常在客户端写代码的
时候不是经常写 Context ctx = new InitialContext();Object obj = ctx.lookup("/ejb/LotteryEJB");这样类似的代码,
如果说"/ejb/LotteryEJB"是你刚才所说的字符串的话,那obj就应该是对应的对象,夷,这怎么好象有点象EJB的调用啊,
哈,哥哥你真是冰雪聪明,这就是EJB调用开始的时候调用JNDI服务的代码。原来就是这样啊,那实现这玩意不是太容易了,
弄一个HashMap的实例hm,把你要部署的字符和对象通过hm.put("/cs",对象)放进去,如果谁要查的时候就是把要查的字符
传过来,Object cs = hm.get("/cs"),CS就是要你要找的对象。CS?好啊,AK,M4,暴头....,我想暴头想了很久了,但是
这CS到底是我要暴头的人,还是和我一起暴头的人,还是已被我暴头的人呢?哈,告诉你吧,都是。根据JNDI的规范,这CS可以代表
对象,设备都可以,当然只要你愿意连MM都可以代表,真的,哪里有啊!我机子上好多啊---100多M的美女图片,哦我差点忘了,
文件也可以是JNDI服务所返回的东东。对了要是你问我MM图片怎么传到你的机子上面去,我只能告诉你,你可以通过socket传啊,
你传一个"/cs",我回传一个cs给你,就这么简单。好了,如果到目前为止你只对我的100M图片感兴趣的话呢,那你就不要往下看了,
你给我发E-MAIL,我告诉你哪里还有好多。
org.huihoo.jfox.jndi下面的ContextImpl是实现Context接口,但是很这个类不是实现真正JNDI功能的类,真正实现该功能就是
NamingServiceImpl类,NamingService不是SUN规范所规定的接口,但是他的函数和Context接口差不多,也就是说完成的是和
Context接口的功能差不多。也就是说NamingServiceImpl才是JNDI服务的提供者,而Context是客户端去调用JNDI服务的接口,那提起
服务的实现那大家都自然都想起了多线程,就想起了一个孤独的socket的实例fox在不停的listen,listen啊,但是他怎么等不到
"我要嫁给你"的字符串!fox不止一次的怀疑自己的实现的Runnable接口是否为倒版,并且还怀疑对方是不是找对了IP而发错了端口。
所以说为了能更好提供JNDI服务,NamingServiceImpl决定把自己交给ServiceWrapper包装一下,然后再对外发布,要知道ServiceWrapper
专门为守侯线程所设计,面对各种各样的的请求,都能抓住处理掉,并且面对各种请求都能一一满足。现在我只希望ServiceWrapper能够
满足我一种请求那就是--有没有吃的,我好饿!有没有人请吃饭啊!我饿死了!

  其实还是很简单的。
分享到:
评论
25 楼 zzj0225 2012-11-08  
tsuus 写道
语无伦次,寡廉鲜耻

你不适应这种描述风格 也用不着用这么严重的字眼
24 楼 hecongqi 2012-08-11  
写得不错,很好理解。
23 楼 Leon.Wood 2012-07-27  
这是落落的一套么?
22 楼 tsuus 2011-03-01  
语无伦次,寡廉鲜耻
21 楼 epinszteinic 2011-01-25  
所以说,使用用不同的实现,得到的结果都应该是一样的,因为必须遵循借口的规范。
比如你的jboss的web应用,使用jboss的Context实现来绑定DataSource。如果不想启动jboss测试逻辑的时候,那该怎么办?可以用apache的Context实现来手动绑定DataSource,程序里就能得到DS,当然,用jboss的Context实现也是一样的。
20 楼 回归蔚蓝 2010-07-15  
!-_- 引用为啥不声明原址哩?
19 楼 BloodSmith 2010-05-24  
此段引用大有mop之遗风,话说这样的逻辑用来编程,程序不会kuso掉吧
18 楼 lzrzhao 2009-09-16  
难点都不在技术本身
17 楼 lzrzhao 2009-09-16  
呵呵不错。
有的时候技术真的都是挺简单的东西。
16 楼 samuelyuan 2009-08-04  
danni505 写道
鉴定:思维混乱,语无伦次,不知所云!

  
15 楼 lin_xh 2009-07-01  
仍然不是很明白,要有一些例子就好了。我再查查其他资料
14 楼 学会做人 2009-06-28  
思想没有达到层次哈!加油!
13 楼 danni505 2009-06-04  
鉴定:思维混乱,语无伦次,不知所云!
12 楼 leversss 2009-03-25  
正在理解了才能形象的表达,不错 继续加油
11 楼 sanfayin 2009-03-06  
比如 文件系统有文件系统对应的JNDI实现,那通过文件系统的某种名字结构,可以查询到某个文件;再有,tomcat里面有tomcat所有资源的对象池JNDI实现,那查出来的就是比如连接池或其他tomcat资源.
具体这个资源是什么,他可以是任何存在物.如果可以,完全可以用一个字符串代表某个美女,一查就差到了 哈,当然这个美女愿意不愿意随你,那就是她的事情啦.
10 楼 sanfayin 2009-03-06  
JNDI只是一个相当于规范,协议一样的东西,具体可以是任何一种可以用对象代表的存在物.
但真的想要比较形象的理解,需要看几个JNDI的具体实现.至于有哪些,Google一下就好了.
JNDI的实现可能是本地资源,也可能是远程资源,这和具体实现有关.
JNDI只是提供了一种抽象,统一的接口而已,就是说,大家就这么理解这类事情,就这么简单.
9 楼 sanfayin 2009-03-06  
JNDI只是一个相当于规范,协议一样的东西,具体可以是任何一种可以用对象代表的存在物.
但真的想要比较形象的理解,需要看几个JNDI的具体实现.至于有哪些,Google一下就好了.
JNDI的实现可能是本地资源,也可能是远程资源,这和具体实现有关.
JNDI只是提供了一种抽象,统一的接口而已,就是说,大家就这么理解这类事情,就这么简单.
8 楼 suloveliu 2008-12-23  
7 楼 Aga 2008-12-11  
大哥,jndi好像不是那么简单的。
我觉得里面主要是分布式的东西,
至少会有rmi掺和到里面了。
6 楼 liushilin2008 2008-10-20  
不相关的东西太多了

相关推荐

    无状态会话Bean实验指导.doc

    试验目的:通过对简单无状态会话Bean组件的编写,加深对EJB理论知识的理解,为更深层的EJB应用做准备。 试验任务:根据EJB组件的结构体系和运行机理,编写实现显示“Hello,+班级+姓名!”的无状态会话Bean组件,并...

    spring in action英文版

     1.4 理解反向控制  1.4.1 依赖注入  1.4.2 IoC应用  1.4.3 企业级应用中的IoC  1.5 应用AOP  1.5.1 AOP介绍  1.5.2 AOP使用  1.5.3 企业级应用中的AOP  1.6 Spring比较  1.6.1 比较...

    JAVA上百实例源码以及开源项目源代码

    EJB中JNDI的使用源码例子 1个目标文件,JNDI的使用例子,有源代码,可以下载参考,JNDI的使用,初始化Context,它是连接JNDI树的起始点,查找你要的对象,打印找到的对象,关闭Context…… ftp文件传输 2个目标文件...

    spring面试题大全

    * 简单描述下IOC(inversion of control)的理解 * Spring对很多ORM框架提供了很好支持,描述下在spring使用hibernate的方法 请介绍下spring的事务管理 如何在spring的applicationContext.xml使用JNDI而不是...

    Grails 中文参考手册

    3.3.2 JNDI数据源 3.3.3 自动数据库移植 3.4 外部配置 3.5 定义版本 4. 命令行 4.1 创建Gant脚本 4.2 可复用的Grails脚本 4.3 脚本中的事件 4.4 Ant和Maven 5. 对象关系映射(GORM) 5.1 快速指南 5.1.1 基本的CRUD ...

    Spring in Action(第2版)中文版

    1.3理解依赖注入 1.3.1依赖注入 1.3.2di应用 1.3.3企业级应用中的依赖注入 1.4应用aop 1.4.1aop介绍 1.4.2aop使用 1.5小结 第2章基本bean装配 2.1容纳你的bean 2.1.1beanfactory介绍 2.1.2使用应用上下文...

    Spring in Action(第二版 中文高清版).part2

    1.3 理解依赖注入 1.3.1 依赖注入 1.3.2 DI应用 1.3.3 企业级应用中的依赖注入 1.4 应用AOP 1.4.1 AOP介绍 1.4.2 AOP使用 1.5 小结 第2章 基本Bean装配 2.1 容纳你的Bean 2.1.1 BeanFactory介绍 2.1.2 ...

    Spring in Action(第二版 中文高清版).part1

    1.3 理解依赖注入 1.3.1 依赖注入 1.3.2 DI应用 1.3.3 企业级应用中的依赖注入 1.4 应用AOP 1.4.1 AOP介绍 1.4.2 AOP使用 1.5 小结 第2章 基本Bean装配 2.1 容纳你的Bean 2.1.1 BeanFactory介绍 2.1.2 ...

    Hibernate实战(第2版 中文高清版)

     2.4.2 JNDI绑定的SessionFactory   2.4.3 JMX服务部署   2.5 小结   第3章 领域模型和元数据   3.1 CaveatEmptor应用程序   3.1.1 分析业务领域   3.1.2 CaveatEmptor领域模型   3.2 实现领域模型 ...

    java源码包---java 源码 大量 实例

    1个目标文件,JNDI的使用例子,有源代码,可以下载参考,JNDI的使用,初始化Context,它是连接JNDI树的起始点,查找你要的对象,打印找到的对象,关闭Context…… ftp文件传输 2个目标文件,FTP的目标是:(1)提高...

    java源码包2

    1个目标文件,JNDI的使用例子,有源代码,可以下载参考,JNDI的使用,初始化Context,它是连接JNDI树的起始点,查找你要的对象,打印找到的对象,关闭Context…… ftp文件传输 2个目标文件,FTP的目标是:(1)提高...

    java源码包3

    1个目标文件,JNDI的使用例子,有源代码,可以下载参考,JNDI的使用,初始化Context,它是连接JNDI树的起始点,查找你要的对象,打印找到的对象,关闭Context…… ftp文件传输 2个目标文件,FTP的目标是:(1)提高...

    java源码包4

    1个目标文件,JNDI的使用例子,有源代码,可以下载参考,JNDI的使用,初始化Context,它是连接JNDI树的起始点,查找你要的对象,打印找到的对象,关闭Context…… ftp文件传输 2个目标文件,FTP的目标是:(1)提高...

    web服务器和应用服务器.docx

    WEB你可以简单理解为你所看到的HTML页面就是WEB的数据元素,处理这些数据元素的使用软件就叫WEB服务器,如IIS、apache。 WEB服务器和客户端打交道,它要处理的主要信息有:session、request、response、HTML、JS、CS等...

    成百上千个Java 源码DEMO 4(1-4是独立压缩包)

    EJB中JNDI的使用源码例子 1个目标文件,JNDI的使用例子,有源代码,可以下载参考,JNDI的使用,初始化Context,它是连接JNDI树的起始点,查找你要的对象,打印找到的对象,关闭Context…… ftp文件传输 2个目标文件...

    成百上千个Java 源码DEMO 3(1-4是独立压缩包)

    EJB中JNDI的使用源码例子 1个目标文件,JNDI的使用例子,有源代码,可以下载参考,JNDI的使用,初始化Context,它是连接JNDI树的起始点,查找你要的对象,打印找到的对象,关闭Context…… ftp文件传输 2个目标文件...

    从Java走向Java+EE+.rar

    4.1.1 理解XML 26 4.1.2 XML的语法 27 4.1.3 XML命名空间 31 4.2 XML能用来干什么 32 4.3 用DTD验证XML文档 33 4.4 用Schema验证XML文档 35 4.4.1 使用XML Schema 35 4.4.2 Schema的语法 37 4.5 用...

    Spring基础与快速入门

    5 AOP:面向方面编程,我们可以把日志、安全、事务管理等服务(或功能)理解成一个“方面”,那么以前这些服务一直是直接写在业务逻辑的代码当中的,这有两点不好;首先业务逻辑不纯净,其次这些服务被很多业务逻辑...

    J2EE中文版指南 CHM格式 带全文检索

    理解例子的准备工作 13 例子下载 13 如何编译并运行例子 13 相关信息 14 第1章 总 括 14 一.分布式得多层应用程序 14 J2EE组件 15 J2EE客户端 15 网络浏览器 15 小程序 15 应用客户端 15 JavaBean组件结构 15 网络...

    JAVA上百实例源码以及开源项目

    1个目标文件,JNDI的使用例子,有源代码,可以下载参考,JNDI的使用,初始化Context,它是连接JNDI树的起始点,查找你要的对象,打印找到的对象,关闭Context…… ftp文件传输 2个目标文件,FTP的目标是:(1)提高...

Global site tag (gtag.js) - Google Analytics