- 浏览: 98760 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (48)
- ruby (7)
- scala (1)
- java (11)
- jython (1)
- python (1)
- life (0)
- jruby (1)
- javascript (1)
- 翻译 (0)
- lua (2)
- SUSE (1)
- scheme (6)
- amb (1)
- 编译器 (0)
- javaee (1)
- 分布式 (0)
- 并发 (1)
- 杂感 (1)
- IO (0)
- POJO (0)
- EJB (0)
- concurrent (0)
- 算法 (1)
- ibm (0)
- JNI (0)
- AOP (0)
- asm (0)
- Groovy (1)
- agent (0)
- instrument (0)
- manifest (1)
- classloader (0)
- jboss (0)
- code (0)
- OSGI (0)
- 庄子 (0)
- JTA (0)
- SA (1)
- clojure (0)
- collections (0)
- hotswap (0)
- 序列化 (0)
- CORS (0)
- 停机 (0)
- JVM (0)
- parallel (0)
- NIO (0)
- weblogic (0)
- transaction (1)
- 反思 (1)
- 事务 (1)
- 海量数据 (0)
- JDO (0)
- JPA (0)
- storm (0)
- log4j (0)
- java2d (0)
- btrace (0)
- hadoop (1)
- cygwin (1)
- sshd (1)
- wanlu (0)
- mysql (0)
- debug (0)
- autotest (0)
- Error (0)
- 数据结构 (0)
- descriptor (0)
- jdb (0)
- hsdb (0)
- wiki (0)
- maven (0)
- spring (0)
- eclipse (0)
- mvc (0)
- 代理 (0)
- oracle (0)
- hibernate (1)
- Hash (0)
- blockingqueue (0)
- remember (0)
- graphviz (0)
- http (0)
- post (0)
- jdbc (0)
- websocket (0)
- inter (0)
- got error: The Network Adapter could not establish the connection when creating a data source in Weblogic pointing to a Oracle database (1)
- bug (0)
- xml (0)
- mail (0)
- db (0)
- JAXB (0)
- StAX (0)
- google (0)
- haskell (1)
- rpc (0)
- read-code (0)
- spring-cloud (0)
- service-registry-discovery (0)
最新评论
-
IamSungod:
很有探索精神,学过多种编程语言呀
clojure parse xml -
messi_18:
是的。不知道别的平台是否也有类似问题。
scalatest 尝试(一) -
llh110220:
lz在windows下编写的吧
scalatest 尝试(一)
今天不知那根弦动了下,开始咬文嚼字JNDI。之所以说咬文嚼字,实在是浮于表面没有深入。权当作读书笔记。
JNDI这个东西是用来干嘛的啊?EJB,RMI-IIOP都用它来定位对象:先绑定对象到一个名字,然后再那这个名字把那个绑定的对象取出来。(写到这里,我忽然间知道我为何关注JNDI了:我是这几天一直看RMI,RMI-IIOP, EJB, CORBA, IDL这些东西来着。至于我为何看这些我也记不清了为何了。)
就是这样简单啊。好像超市门前的存储箱啊,先把包保存进去,拿到一个记着箱子号的条形码,买完东西那这个条形码一扫,东西就取出来了。我这里写的很不准确,因为忽略了细节:我拿到的包是我放进去的那个包(返回reference),还是那个包的克隆品(序列化),还是一个看起来像包的什么东西(返回的是本地构造的stub)。这里取到的东西应该是provider相关的。实际上在RMI-IIOP的场景,返回的是本地的stub的实例。
我今天所要说的是。什么是JNDI?它其实就一个API。有两部分组成,一部分是JNDI API(Java Naming and Directory Interface
Application Programming Interface),一部分是JNDI SPI(Java Naming and Directory Interface
Service Provider Interface)。前者是外观,后者是具体实现。看到provider,我想很多人就明白了十之七八。这就是plugin啊,看来JNDI是支持不同的服务的。
从这里可以看到,从jdk1.4之后,JNDI SPI包含了下面四个provider:
The LDAP Service Provider
The COS Naming Service Provider
The RMI Registry Service Provider
The DNS Service Provider
所以我们平时用JNDI的时候,都这么用的。
我们会用一系列的参数来初始化InitialContext。其实这里无疑是一个工厂模式:根据传入的java.naming.factory.initial创建不同的provider。
从一定程度上说,EJB容器也是一个JNDI service provider。只有这样我才可以通过JNDI来定位EJB啊。
总结一下:JNDI是由两部分组成的:应用程序API和provider API。前者是调用接口,后者包装了不同的服务提供者。这里再补充一句,那也得服务程序启动之后,您才能去施展JNDI啊。那服务程序是什么?就是LDAP,COS,RMI,DNS啊。
JNDI这个东西是用来干嘛的啊?EJB,RMI-IIOP都用它来定位对象:先绑定对象到一个名字,然后再那这个名字把那个绑定的对象取出来。(写到这里,我忽然间知道我为何关注JNDI了:我是这几天一直看RMI,RMI-IIOP, EJB, CORBA, IDL这些东西来着。至于我为何看这些我也记不清了为何了。)
就是这样简单啊。好像超市门前的存储箱啊,先把包保存进去,拿到一个记着箱子号的条形码,买完东西那这个条形码一扫,东西就取出来了。我这里写的很不准确,因为忽略了细节:我拿到的包是我放进去的那个包(返回reference),还是那个包的克隆品(序列化),还是一个看起来像包的什么东西(返回的是本地构造的stub)。这里取到的东西应该是provider相关的。实际上在RMI-IIOP的场景,返回的是本地的stub的实例。
我今天所要说的是。什么是JNDI?它其实就一个API。有两部分组成,一部分是JNDI API(Java Naming and Directory Interface
Application Programming Interface),一部分是JNDI SPI(Java Naming and Directory Interface
Service Provider Interface)。前者是外观,后者是具体实现。看到provider,我想很多人就明白了十之七八。这就是plugin啊,看来JNDI是支持不同的服务的。
从这里可以看到,从jdk1.4之后,JNDI SPI包含了下面四个provider:
The LDAP Service Provider
The COS Naming Service Provider
The RMI Registry Service Provider
The DNS Service Provider
所以我们平时用JNDI的时候,都这么用的。
Hashtable<String,String> props = new Hashtable<String,String>(); props.put("java.naming.factory.initial", "com.sun.jndi.cosnaming.CNCtxFactory"); props.put("java.naming.provider.url", "iiop://localhost:1050"); Context context = new InitialContext(props); context.lookup("some service");
我们会用一系列的参数来初始化InitialContext。其实这里无疑是一个工厂模式:根据传入的java.naming.factory.initial创建不同的provider。
从一定程度上说,EJB容器也是一个JNDI service provider。只有这样我才可以通过JNDI来定位EJB啊。
总结一下:JNDI是由两部分组成的:应用程序API和provider API。前者是调用接口,后者包装了不同的服务提供者。这里再补充一句,那也得服务程序启动之后,您才能去施展JNDI啊。那服务程序是什么?就是LDAP,COS,RMI,DNS啊。
发表评论
-
Atomic reference vs volatile reference
2015-12-21 00:05 459volatile reference和atomic refer ... -
java.lang.ClassNotFoundException: javax.mail.internet.MimeMessage
2013-06-27 16:27 0Today when I try to send mail b ... -
java exchanger
2013-06-19 15:54 0Today focus on: multi-thread in ... -
java blocking queue performance issue when large concurrency
2013-05-16 15:35 0I recalled someone ask me a que ... -
发现了几篇关于java虚拟机的好文章,要好好消化一下
2013-04-19 15:49 0好久没有关注jvm了,今天翻到了几篇好文章。先记下,有时间消化 ... -
Java Endorsed Standards Override Mechanism
2013-04-18 17:56 0Today I read an article named & ... -
java.lang.LinkageError
2012-12-11 14:13 0今天遇到了一个问题java.lang.IllegalAcces ... -
管理log插入。比如编译时插入。
2012-11-20 20:51 0管理log插入。比如编译时插入。 萌发这个想法是因为每次,调试 ... -
java解惑44题没重现
2012-11-09 02:18 0java解惑第44题我没有重现。 jdk1.6.0_35 ... -
java2d学习
2012-11-07 00:37 0想要系统的学习一下java2d 第一步学习画阿基米德螺旋曲线。 ... -
ASM初探
2012-11-02 00:38 0今天遇到了一个问题。Log4J的config and watc ... -
String.split
2012-10-31 21:02 839String.split(String reg)这个方法一点不 ... -
mina,hbase,zookeeper
2012-10-26 22:49 0我要学习探索新知识的有效手段。从这两个开始吧。 -
log4j那些事儿
2012-10-25 19:31 0都知道Log4j是用来输出日志的框架。不怕笑话,我一直都知道它 ... -
storm是什么
2012-09-28 16:49 0storm是什么?需要研究一下。 https://github ... -
你知道吗,-Long.MIN_VALUE == Long.MIN_VALUE
2012-09-20 22:58 3271相信吗,-Long.MIN_VALUE == Long.MIN ... -
transaction in JAVAEE and Spring
2012-09-14 19:16 0XA transaction and local transa ... -
weblogic 数据源的事务管理
2012-09-14 01:50 0有这样一个case,在weblogic下配置了两个数据源,其中 ... -
java NIO
2012-09-13 16:52 0由这篇文章想到了NIO。 然后又提到了这篇文章。 -
java 并发与并行(Java concurrent and parallel)
2012-09-13 16:19 0起因是想知道BlockedQueque是干嘛的,接着想到了这篇 ...
相关推荐
### Java JNDI总结 #### 一、JNDI简介 **JNDI**(Java Naming and Directory Interface)是Java平台中的一个API,用于访问命名和目录服务,这些服务可以存储对象引用及其名称。JNDI的主要作用在于提供了一种在...
JNDI技术总结
总结来说,"jndi-tool"是一个强大的JNDI服务利用工具,适用于评估和利用与Fastjson和Log4j漏洞相关的RCE风险。它利用RMI和LDAP协议,可以在高版本JDK环境下运行,为安全专业人士提供了一种有效测试环境安全性的手段...
JNDI学习总结,JNDI配置数据源,资料详细,适合初学者
总结** JNDI数据库查询是Java企业级应用中的常见实践,通过JNDI,我们可以方便地管理和查找数据源,简化了数据库连接的创建过程,同时提供了更好的可配置性和可扩展性。在MyEclipse这样的IDE中,配置JNDI数据源...
总结一下,Java JNDI是Java应用程序与命名和目录服务交互的关键工具。通过JNDI,开发者可以轻松地在各种服务之间查找和绑定资源,尤其是数据源,以实现灵活且可扩展的数据库访问。在实际项目中,这通常涉及配置...
总结来说,JNDI连接池是Java应用中管理数据库连接的重要工具,它利用JNDI的抽象特性,结合连接池技术,实现了高效、复用的数据库连接管理,提高了系统性能,并简化了应用程序的配置和维护工作。通过JNDI,开发者可以...
总结来说,配置JNDI数据源是Spring与Tomcat协同工作的一个重要环节,它提高了系统的灵活性和可维护性,同时也优化了数据库连接的管理。通过理解JNDI的工作原理以及如何在Spring中配置和使用JNDI数据源,开发者能够更...
总结起来,这个压缩包提供了使用JNDI进行数据源管理所需的全部库文件,对于在WebSphere或其他支持JNDI的环境中开发和部署Java应用是必不可少的。正确理解和使用这些JNDI相关库,能够帮助开发者构建更加灵活和可扩展...
总结来说,JNDI作为一种重要的Java API,为开发者提供了强大的命名和服务定位功能,尤其是在构建复杂的分布式应用程序时显得尤为重要。通过理解其基本概念和使用方法,可以帮助开发者更好地管理和组织应用中的各种...
#### 五、总结 通过本文的学习,我们了解了JNDI的基本原理及其在不同环境下的配置方法。特别地,对于非服务器环境,我们探讨了如何通过启动本地RMI服务来模拟JNDI行为。此外,还简要介绍了JNDI的安全性配置选项。...
总结来说,JNDI 1.2.1是Java平台中一个重要的组件,它提供了一种标准化的方法来访问和管理命名及目录服务,大大简化了开发者的工作,提高了代码的可移植性和可维护性。无论是企业级应用还是小型项目,JNDI都扮演着不...
总结一下,JNDI数据链接池是Java应用中管理和优化数据库访问的关键技术,通过JNDI接口查找和使用数据源,实现连接的高效复用,从而提升系统的性能。TestJNDI文件提供了实践这一概念的实际代码,对学习和掌握JNDI数据...
总结来说,Tomcat的JNDI功能提供了强大的资源管理和配置灵活性,通过解耦配置和代码,提高了系统的可扩展性和可维护性。理解并熟练运用Tomcat的JNDI机制,对于开发高质量、高可用性的Java Web应用至关重要。而`...
#### 总结 通过以上分析,我们可以看到,Resin在JNDI配置方面提供了强大的支持,不仅简化了数据库连接的管理,还提高了应用的性能和稳定性。无论是对于开发者还是运维人员,掌握Resin的JNDI配置都是提升项目质量和...
总结,JNDI是Java平台中的一个重要组件,用于访问和管理命名和目录服务。在实际开发中,尤其是企业级应用中,利用JNDI获取数据库连接和数据源,可以实现灵活的资源管理和高效的应用部署。了解并熟练掌握JNDI的使用,...
#### 六、总结 JNDI 作为一种高级的命名和目录服务接口,不仅提供了强大的功能,而且具有很高的灵活性和可扩展性。通过对 JNDI 的学习和掌握,开发者可以更高效地构建支持多种目录服务的应用程序,提高系统的可维护...
**总结** JNDI在Tomcat中的应用使得管理Web应用的资源更加灵活和方便。理解JNDI的工作原理和在Tomcat中的配置方法,对于开发和维护高性能的Java Web应用至关重要。同时,合理地利用JNDI工具可以提高开发效率,降低...
#### 六、总结 本文通过对JNDI基础知识的介绍,以及构建Initial Context的不同方法的探讨,帮助初学者更好地理解和使用JNDI。在实际开发中,正确地使用JNDI可以大大简化分布式应用中资源的查找和使用过程,提高代码...