一、什么是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. Java --循环截取字符串
  2. JAVA中希尔排序去的讲解_java 中基本算法之希尔排序的实例详解
  3. SSH框架总结(框架分析+环境搭建+实例源代码下载)
  4. 常考数据结构与算法:买卖股票的最好时机
  5. S3C2443时钟管理
  6. 机器学习-逻辑回归-代价函数
  7. 【网络安全】XSS盲打实战案例:某网页漫画
  8. ajax firefox,Jquery ajax不在firefox中工作
  9. MySql 创建存储过程
  10. js 数据写到本地记事本_微信小程序连接Mysql数据库步骤
  11. 什么是哲学为基础的设计模式?
  12. python 分词nlp,学习NLP的第四天——hanlp字典分词的Python实现,4,HanLP,词典
  13. 通达信波段王指标公式主图_通达信精选指标——组合波段王果断买入井喷金叉突破均线流公式...
  14. [JZOJ100026]图--倍增
  15. echarts使用记录(二)legend翻页,事件,数据集,设置y轴最大/小值,让series图形从右侧出往左移动...
  16. SQL Server 高可用性(六)日志传送
  17. 安装win10虚拟机遇到的坑
  18. excel换行快捷键_excel换行快捷键 Excel表格中怎么换行 | 优词网
  19. 亲测有效!解决文件名过长无法删除的情况
  20. 100G QSFP28 CLR4单模光模块的介绍及对比

热门文章

  1. C语言求字符串数组的长度函数计算
  2. 揭秘之从RecyclerView滑动监听到Gilde平滑加载图片
  3. 一、Git介绍、以及原理
  4. [新华三java岗]笔试
  5. 首届“中科杯”全国软件设计大赛拉开帷幕
  6. MUI----mui.init()和mui.plusReady()
  7. Java中的互斥锁介绍
  8. 计算机专业留学个人陈述模板,个人陈述 留学|计算机专业留学个人陈述
  9. php ppt转视频教程,如何制作ppt转换视频新手教程操作指南
  10. 《黑客与画家》书评——lisp教主驾临