1. 什么是 JNDI ( Java Naming and Directory Interface )

JNDI 是用于访问不同命名和目录服务的统一 API 接口;

  1. JNDI 的架构和原理

  2. 架构:

第一层: java 代码,是访问 JNDI 的代码;

第二层: JNDI API :统一的命名和目录服务接口

第三层: JNDI Naming Manager : JNDI 管理器

第四层: JNDI SPI :用于构建 JNDI 实现的框架,能够动态的插入命名和目录服务提供商的产品;

第五层:命名和目录服务提供商的产品;

命名和目录服务提供商的产品 , 例如: DNS,LDAP,NIS,NDS………; 因为这些产品都是不同的提供商提供的产品,所以他们的命名和目录服务的标准不一致,各个目录服务采用的访问协议也是不一样的,所以,要是直接访问他们的话,就要编写不同的 java 代码来访问他们;因此, JNDI SPI 就解决了这个问题,它能动态的插入这些命名和目录服务,能够将其协议专属的目录产品集成到系统中,使得我们能只需要调用一个统一的 javaAPI 就能够访问插入的产品了;

2 .原理:

JNDI 其实很好理解,他就是一个树状的结构,它的最顶是一个 initialContext 节点,然后它的下面就是绑定的一些对象或是一些 subContext ,用 JNDI 树就能够查找到树中每一个绑定上的节点上的对象的引用;

  1. 怎样连接到 JNDI 上?

Environment environment = new Environment() ;// 创建一个环境对象

environment.setProviderurl(“t3://www.blogjava.net”) ;

environment.setSecurityPrincipal(“todd”) ;// 认证的用户名

environment.setSecurityCredentials(“841026”) ;// 密码

Context context = environment.getInitialContext() ;

// 创建一个 subContext 并绑定一个对象:

Context subContext = context.createSubcontext(“subContext”) ;

subContext.rebind(“newObject”,object) ;// 绑定的对象必须是可序列化的

subContext.close() ;

context.close() ;

  1. 如何通过 JNDI 查找 bind 的对象?

Object object = context.lookup(“User”) ;

// 把 user 窄化到原型

User user = (User)javax.rmi.PortableRemoteObject.narrow(object, User.class) ;

context.close() ;

Spring与 weblogic jndi集成

虽然 spring本身是可以直接使用 jndi来进行获取一些对象 ,但是在和 weblogic集成的时候往往还是容易出

现问题 (在 web应用的时候出现问题的可能性不大 ,因为 container已经做了很多事情了 .)但是在 ide或者其

他的应用环境下 (不同的 jvm的时候 ),通常找不到 provider_url等属性造成无法找到 jndi.

修改配置文件如下 :

jdbc/myDatasource

false

Spring连接 weblogic-DataSource错误

t3://localhost:7001

weblogic.jndi.WLInitialContextFactory

注意在设置的时候由于不在同一个 jvm里面 ,所以一定要设置 provider.url和 factory.initial的属性值 ,否

则会出现 NoInitialContextException的异常出现 .

此外如果和其他的应用服务器集成的话可能不只是要设置上面的两个属性,还要设置相关的其他属性。详

细情况参考: javax.naming.Context类的说明文档。

http://java.sun.com/j2se/1.4.2/docs/api/javax/naming/Context.html

其中设置的:

t3://localhost:7001

weblogic.jndi.WLInitialContextFactory

实际上就是设置 Context初始化的时候设置的 Properties属性。

http://java.mblogger.cn/layout/posts/11849.aspx

=====================================================================

New Document

ZOO_JNDI

weblogic.jndi.WLInitialContextFactory

t3://localhost:7001

weblogic

weblogic

=====================================================================

各种应用服务器的不同的 properties集合 :
websphere:

java.naming.provider.url->iiop://websphere.machine.domain.com:900

java.naming.factory.initial ->com.ibm.websphere.naming.WsnInitialContextFactory

java.naming.factory.url.pkgs ->com.ibm.ws.naming

org.omg.CORBA.ORBClass->com.ibm.rmi.iiop.ORB

org.omg.CORBA.ORBSingletonClass->com.ibm.rmi.corba.ORBSingleton

javax.rmi.CORBA.UtilClass->com.ibm.rmi.javax.rmi.CORBA.Util

javax.rmi.CORBA.StubClass->com.ibm.rmi.javax.rmi.CORBA.StubDelegateImpl

javax.rmi.CORBA.PortableRemoteObjectClass->com.ibm.rmi.javax.rmi.PortableRemoteObject

weblogic:

java.naming.factory.initial -> weblogic.jndi.WLInitialContextFactory

java.naming.provider.url -> t3://localhost:7001

jboss:

ava.naming.factory.initial ->org.jnp.interfaces.NamingContextFactory

java.naming.factory.url.pkgs->org.jboss.naming.client

java.naming.provider.url ->jnp://10.0.0.18:1099

sunone IMQ ldap:

java.naming.provider.url -> ldap://localhost:389/dc=yusong,dc=com

java.naming.factory.initial -> com.sun.jndi.ldap.LdapCtxFactory

sunone Application Server:

java.naming.provider.url -> iiop://192.168.0.34:3700

java.naming.factory.initial -> com.sun.jndi.cosnaming.CNCtxFactory

oracle oc4j:

java.naming.factory.initial->com.evermind.server.ApplicationClientInitialContextFactory

java.naming.provider.url->ormi://localhost/bmpapp

JNDI 的架构和原理相关推荐

  1. atitit.jndi的架构与原理以及资源配置and单元測试实践

    atitit.jndi的架构与原理以及资源配置and单元測试实践 1. jndi架构 1 2. jndi实现原理 3 3. jndi资源配置 3 3.1. resin  <database> ...

  2. QQ视频直播架构及原理

    作者:王宇(腾讯音视频高级架构师) 自我介绍下,毕业以来加入腾讯,一直从事客户端研发,身处互联网公司,踏着互联网的浪潮,一直在浪尖行走,从最早的PC QQ,到移动时代的手Q,再到腾讯物联的嵌入式,以及 ...

  3. Tomcat架构与原理

    Tomcat架构与原理 架构图 原理 ①.用户点击网页内容,请求被发送到本机端口8080,被在那里监听的Coyote HTTP/1.1 Connector获得. ②.Connector把该请求交给它所 ...

  4. 45 张图深度解析 Netty 架构与原理

    作为一个学 Java 的,如果没有研究过 Netty,那么你对 Java 语言的使用和理解仅仅停留在表面水平,会点 SSH 写几个 MVC,访问数据库和缓存,这些只是初等 Java 程序员干的事.如果 ...

  5. 分布式事务架构设计原理

    随着业务需求的复杂化,企业应用规模不断扩大,在后端开发中经常会遇到以下问题: 业务的并发要求非常高,对应的业务需要通过微服务拆分,甚至分库分表等架构设计才能满足并发需求,此时业务操作无法在同一个数据库 ...

  6. Netty架构与原理详解

    本文来详细说下netty架构设计与原理 文章目录 概述 Netty 基础 Netty 是什么 Netty 的应用场景 Java 中的网络 IO 模型 Java NIO API 简单回顾 缓冲区(Buf ...

  7. 万字详解Oracle架构、原理、进程,学会世间再无复杂架构

    学习是一个循序渐进的过程,从面到点.从宏观到微观,逐步渗透,各个击破,对于Oracle, 怎么样从宏观上来理解呢?先来看一个图,这个图取自于教材,这个图对于从整体上理解ORACLE 的体系结构组件,非 ...

  8. 读书笔记:大型网站技术架构-核心原理与案例分析

    李智慧<大型网站技术架构-核心原理与案例分析> 性能 可用性 伸缩性 扩展性 安全性 总结 这本书组织的很不错,语言精练,篇幅也不长,对网站架构的要点讲的狠清楚透彻,思路清晰.主要围绕架构 ...

  9. Spark SQL架构工作原理及流程解析

    Spark SQL架构工作原理及流程解析,spark sql从shark发展而来,Shark为了实现Hive兼容,在HQL方面重用了Hive中HQL的解析.逻辑执行计划翻译.执行计划优化等逻辑. Sp ...

最新文章

  1. PlaceHolder 控件使用
  2. 非常有创意的音乐网站
  3. 图解基本C语言程序一
  4. Fabric 学习笔记-架构初探
  5. 中国电信发布转型升级战略:构建一横四纵生态圈
  6. 设计模式--享元模式实现C++
  7. Transformer好文章阅读链接
  8. 关于CXF大文件的传输问题
  9. jQuery框架学习第七天:jQuery动画–jQuery让页面动起来!
  10. OpenCV:solvePnP参数介绍
  11. Aminer学术社交网络数据知识图谱构建(三元组与嵌入)
  12. CodeForces 877E DFS序+线段树
  13. CSDN-怎么设置被粉丝关注之后的自动回复
  14. 百度BAE部署java web(Jforum)项目
  15. 重装战姬服务器维护,《重装战姬》10月29日更新维护公告
  16. 计算机怎么不读u盘,老司机告诉你电脑不读U盘的解决方法
  17. comsol软件入门基本操作
  18. 2017年10月WEB前端开发实习生面试题总结
  19. HarmonyOS初探03——DevEco Studio创建应用问题ERROR Unable to tunnel through proxy. Proxy returns HTTP1.1 403
  20. 用html、javascript写一个网页,网页内容包括一个下拉列表,内容为语文、数学、英语,一个单选按钮,内容为苹果、桃子、西瓜,默认选中数学、西瓜

热门文章

  1. 武大杨必胜老师论文-移动测量
  2. Handler内存泄漏问题解决方案(Android,第一行代码,This Handler class should be static or leaks might occur)
  3. table和form的使用,以及制作登录表单
  4. 【MySQL】MySQL触发器原理与实战(MySQL专栏启动)
  5. 有限合伙企业与普通合伙的区别
  6. php qq登录修改回调地址,『通知』QQ无法登陆,QQ互联加强网站应用回调地址校验...
  7. 关于OSI7层模型简单的理解
  8. PDB文件:每个开发人员都必须知道的
  9. [转-记] 批量解密SQLSERVER数据库中的各种对象的工具dbForge SQL Decryptor2.1.11
  10. 机器学习实战教程(七):朴素贝叶斯