一、什么是LDAP

LIGHTWEIGHT DIRECTORY ACCESS Protocol轻量级目录访问协议(目录服务)

类似于这样的树型组织结构,通过LDAP协议连接后像文件夹目录一样

LDAP实现:AD域环境

LDAP默认端口:389

二、JNDI是什么?

Java Naming and Directory Interface Java命名和目录接口(命名服务接口)

用于根据名字找到位置、服务、信息、资源、对象等----KeyValue对

基本操作:

1.发布服务(名字和资源的映射):bind()

2.用名字查找资源:lookup()

为什么要使用JNDI?

一般链接数据库时都是使用jdbc进行连接,但是如果要链接其他数据库时再使用jdbc进行连接的话就需要改动大量代码,但是使用JNDI就可以避免这样的链接问题。

JDBC直接连接数据库的弊端

1.参数变动引发URL修改

2.数据库产品切换,驱动包修改

3.连接池参数的调整

下图是JDBC连接数据库的一个结构图

而利用JNDI连接数据库的结构如下图所示:

JNDI因为是一个命名服务,它可连接的资源是多种多样的,不是只有JDBC,还可以是LDAP目录服务、RMI远程方法调用、DNS、XNam、Novell目录服务、CORBA对象服务、文件系统、Windows XP/2000/NT/Me/9x的注册表、DSML v1&v2、NIS等

由此观之,LDAP和JNDI的关系

通过JNDI的接口传一个名字就能获得LDAP目录服务里面的存储的数据

三、什么是JNDI注入

1.JNDI动态协议转换

env.put(Context.PROVIDER_URL,"ldap://localhost:7389/dc=example,dc=com");
DirContext ctx = new InitialDirContext(env);
ctx.lookup("rmi://localhost:7389/ou=employees,dc=example,dc=com");

明明env设置的时使用的是ldap协议,但是lookup时却是rmi协议,这就叫动态协议转换。

支持自动转换的协议

协议名称     协议URL                 Context类
DNS协议 dns:// com.sun.jndi.url.dns.dnsURLContext
RMI协议 rmi:// com.sun.jndi.url.rmi.rmiURLContext
LDAP协议 ldap:// com.sun.jndi.url.ldap.ldapURLContext
LDAP协议 ldaps:// com.sun.jndi.url.ldaps.ldapsURLContextFactory
IIOP对象请求代理协议 iiop:// com.sun.jndi.url.iiop.iiopURLContext
IIOP对象请求代理协议 iiopname:// com.sun.jndi.url.iiopname.iiopnameURLContextFactory
IIOP对象请求代理协议 corbaname:// com.sun.jndi.url.corbaname.corbanameURLContextFactory

2.JNDI命名引用

1.在LDAP里面可以存储一个外部的资源,叫做命名引用,对应Reference类

比如远程HTTP服务的一个.class文件

2.如果JNDI客户端基于LDAP服务,找不到对应的资源,就去指定的地址请求,如果是命名引用,会把这个文件下载到本地

3.如果下载的.class文件包含无参构造函数或静态方法块,加载的时候就会自动执行

四、什么是RMI

RMI即远程方法调用,是允许运行在一个JAVA虚拟机上的对象调用运行在另外一个远程JAVA虚拟机上的对象的方法。

JAVA安全基础知识相关推荐

  1. java培训基础知识都学哪些

    很多人都开始学习java技术,觉得java语言在未来的发展前景空间非常大,事实却是如此,那么针对于零基础的同学, 学习java技术需要学哪些呢?下面我们就来看看java培训基础知识都学哪些? java ...

  2. 你觉得什么才是 Java 的基础知识?

    近日里,很多人邀请我回答各种j2ee开发的初级问题,我无一都强调java初学者要先扎实自己的基础知识,那什么才是java的基础知识?又怎么样才算掌握了java的基础知识呢?这个问题还真值得仔细思考. ...

  3. 计算机java语言教程,计算机JAVA教程二讲Java语言基础知识.doc

    计算机JAVA教程二讲Java语言基础知识 2.1简单数据类型 2.1.1 标识符和保留字 1.标识符 程序员对程序中的各个元素加以命名时使用的命名记号称为标识符(identifier).Java语言 ...

  4. java ee基础知识_Java EE:基础知识

    java ee基础知识 想要了解一些基本原则,即与Java EE相关的技术术语. 对于许多人来说,Java EE / J2EE仍然最多意味着Servlet,JSP或Struts. 没有冒犯或双关语! ...

  5. hashcode是什么意思_什么才是 Java 的基础知识?

    作者:晓风轻 链接:zhuanlan.zhihu.com/p/28615617 近日里,很多人邀请我回答各种j2ee开发的初级问题,我无一都强调java初学者要先扎实自己的基础知识,那什么才是java ...

  6. JAVA NIO基础知识

    本文来说下JAVA NIO基础知识. 文章目录 NIO概述 NIO简介 NIO的特性/NIO与IO区别 读数据和写数据方式: NIO核心组件简单介绍 Java NIO 之 Buffer(缓冲区) Bu ...

  7. java 反射基础知识

    java 反射 基础知识 反射:reflection 反射关键类 java 反射部分应用 反射:reflection 在运行中分析类. 在运行中查看和操作对象. 基于反射自己创建对象. 调用不可以访问 ...

  8. Java 进阶基础知识

    我断断续续花费一周的时间整理了这份 Java 进阶基础知识的思维导图.以前觉得这是一个简单的事情,感觉不就是跟着书上的知识点抄一遍嘛,但真的自己动手写过后,才发现并不是那么一回事. 说说自己整理心得吧 ...

  9. java类与接口思维导图_详解java接口基础知识附思维导图

    接口: 官方的含义是---->java接口是一系列方法的声明,是一些方法特征的集合 疑问: 那为什么不用抽象类呢?把他们共有的方法集合起来放在一个抽象类里面,同样可以调用哇,但是反过来想一想如果 ...

  10. Java语言基础知识(一)

    前言 Java是一门高级计算机语言,由美国Sun公司(Stanford University Network)在1995年推出(现Sun公司已经被Oracle公司收购 ).要想学好Java,基础是至关 ...

最新文章

  1. 两所大学中的智能车竞赛校内赛
  2. centos6创建用户,设置ssh登录
  3. matebook14支持触摸屏吗_华为MateBook 14 2021发布,触摸屏成标配
  4. struts2(三) 输入校验和拦截器
  5. Scala类中的+方法
  6. Storm【技术文档】-Worker Executor Task的关系
  7. mybatis的增删改操作及需要注意的问题
  8. 聊聊excel生成图片的几种方式
  9. 画手cv什么意思_lt;3招gt;助你搞定工科出国留学申请简历(CV)!
  10. UI完美配色专辑|色彩是影响设计使用者情绪和行为行为的最重要因素之一
  11. fetchtype 动态控制_hibernate 关于 注解配置@Basic(fetch=FetchType.LAZY) 不起效果
  12. 【OpenCV学习】cvConvert的使用
  13. Unity零基础到入门 ☀️| 学会这些Unity常用组件,Unity中必备组件技能学习!
  14. c语言 opengl函数魔方,《基于OpenGL的3D旋转魔方实现汇总》.doc
  15. RISC-V MCU 智能语音物联网家居控制系统
  16. XXX packages are looking for funding run `npm fund` for details解决方法
  17. 小伙伴要我给他介绍一些非常酷炫而有趣又容易上手的前端框架
  18. 荣耀4a鸿蒙,赵明:6 月起芯片供应将全面恢复,荣耀未来会考虑用华为鸿蒙系统...
  19. 云原生--k8s之pod
  20. PixelUtils:像素转换工具

热门文章

  1. ionic 3 安卓手机获取经纬度坐标
  2. 整理空间权重矩阵和杜宾模型案例数据及分析(stata代码)
  3. android 系统相册删除照片,怎样恢复手机相册删除的照片?这几个方法你会用吗?...
  4. niu-easy环境搭建
  5. 【知识图谱】03图谱设计(使用Protege)
  6. 字典攻击是什么意思?底层原理是什么?
  7. 系统仿真服务器,数控加工仿真系统服务器地址
  8. 患上散光后,应当如何治疗?
  9. 读取摩托罗拉数据在XPROG米V5.0没有响应和超时错误
  10. 常见国产卫星参数介绍