`
melphi9
  • 浏览: 99817 次
  • 性别: 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  
不相关的东西太多了

相关推荐

    JNDI简单应用示例

    这个"JNDI简单应用示例"可能是演示如何使用JNDI进行基本操作的代码实例,例如: 1. **初始化Naming Context**:首先,你需要创建一个初始上下文(InitialContext),这是所有JNDI操作的起点。这通常通过传递一个...

    Tomcat中JNDI原理

    它使用`org.apache.naming.NamingContext`作为其上下文实现,这使得开发者可以通过简单的JNDI调用来访问配置的资源。 ##### 2.2 Tomcat中的JNDI实现 Tomcat通过`org.apache.naming.ContextBindings`类实现了JNDI中...

    jndi测试小项目,初学者

    1. **理解Naming和Directory的区别**:Naming服务主要是用来管理简单的名字到对象的映射,而Directory服务则可以存储和检索更复杂的对象,包括属性和层次结构。 2. **JNDI API的使用**:熟悉`Context`接口以及`...

    JNDI学习文档.doc

    **Java Naming and Directory Interface...以上就是JNDI的基本知识和应用场景,通过理解和使用JNDI,开发者可以构建更加灵活、可扩展和易于管理的Java应用。在实际项目中,JNDI常常是Java EE开发者不可或缺的一个工具。

    jndi-jar.zip

    - **Name**:在JNDI中,名字是对象的唯一标识符,它可以是简单的字符串或者由多个组件组成的复合名字。 - **Naming Provider**:命名提供者是实现了JNDI接口的具体服务,负责实际的查找、绑定等操作。Java提供了...

    jndi连接数据库配置方法

    JNDI,全称Java Naming and Directory Interface,是Java平台中的一个标准接口,它提供了一种在Java...提供的压缩包文件可能包含了详细步骤、示例代码或者配置模板,可以帮助你更好地理解和实践JNDI连接数据库的过程。

    JNDI Java操作示例

    在本文中,我们将通过一个具体的示例来深入理解如何使用JNDI进行LDAP(Lightweight Directory Access Protocol)操作。 #### 二、JNDI与LDAP结合应用 LDAP是一种基于X.500标准的协议,用于构建和维护目录信息。在...

    j2ee JNDI 存储 和 读取程序 weblogic

    在Java EE(以前称为J2EE)环境中,Java Naming and Directory Interface (JNDI) 是一个重要的服务,它提供了一种标准的方式来...理解并熟练掌握JNDI的存储和读取机制,对于任何Java EE开发者来说都是至关重要的技能。

    jndi配置

    JNDI(Java Naming and Directory Interface)是Java平台中用于...理解并正确使用JNDI,可以极大地提高Java应用的灵活性、可维护性和安全性。在实际项目中,我们需要根据服务器环境和应用需求来配置和利用JNDI服务。

    jndi 反射 耦合

    低耦合意味着模块之间的关系简单,易于理解和维护,而高耦合则可能导致代码难以修改和扩展。在设计系统时,通常追求低耦合高内聚的原则,以提高系统的可维护性和可复用性。耦合性可分为多种类型,如内容耦合、控制...

    JNDI使用

    JNDI的出现使得应用可以与各种不同的命名和目录服务进行交互,如LDAP(轻量级目录访问协议)、DNS(域名系统)或者简单的文件系统。 ### 1. JNDI的基本概念 - **Naming Service**:命名服务,它允许将名字映射到...

    JNDI支持包

    2. **目录服务**:JNDI不仅支持简单的命名,还支持更复杂的目录服务,如LDAP(Lightweight Directory Access Protocol)。开发者可以通过JNDI查询目录中的信息,比如用户账号、组织结构等。 3. **上下文操作**:...

    JDBC,JNDI和servlet小例子

    在"Test"这个压缩包文件中,可能包含了一些简单的示例代码,用于演示如何在实际项目中使用JDBC、JNDI和Servlet。这些示例可能涵盖了数据库连接、查询、JNDI查找数据源以及Servlet接收和响应HTTP请求的实现。通过学习...

    tomcat配置jndi

    你可以解压这个文件,导入到IDE中,运行并查看其配置和代码,以加深对JNDI配置的理解。 总结,配置Tomcat中的JNDI主要是为了方便和高效地管理数据库连接,通过在服务器端定义数据源,并在应用程序中通过JNDI查找和...

    tomcat6.0 配置jndi

    这些源码可以在Tomcat和Spring的GitHub仓库中找到,对于深入理解配置原理非常有帮助。 总的来说,配置Tomcat6.0的JNDI主要涉及到服务器端的全局资源定义和应用程序内部的资源引用,以及Spring框架如何利用JNDI查找...

    JNDI调用分布式EJB3 通用接口

    EJB3是EJB规范的一个版本,它引入了许多改进,使得开发更加简单且更符合Java编程习惯。 标题“JNDI调用分布式EJB3 通用接口”意味着我们将探讨如何使用JNDI来查找和调用分布在不同节点上的EJB3组件。EJB3中的一个...

    jndi.rar_jndi_site:www.pudn.com

    - **JNDI**:这可能是另一个文件或文件夹,可能包含了更深入的JNDI示例代码或教程文档,帮助用户通过实践来理解JNDI的工作方式。 总之,对于想要了解和学习JNDI的初学者来说,这个压缩包提供了很好的起点。通过阅读...

    eclipse+mysql+tomcat配置JNDI

    编写一个简单的Servlet或者JSP页面,尝试通过JNDI获取数据库连接并执行查询,以确保配置正确无误。 通过以上步骤,你已经在Eclipse、MySQL和Tomcat环境中成功配置了JNDI数据源。这种方式使得你的应用程序能够轻松...

    Tomcat6.0 JNDI数据源经典实例

    总结来说,这个Tomcat 6.0 JNDI数据源经典实例提供了从配置到使用的全过程,包括了必要的文件和脚本,便于开发者理解和实践JNDI数据源在实际项目中的应用。正确配置和使用JNDI数据源能有效管理和优化数据库连接,...

Global site tag (gtag.js) - Google Analytics