没有合适的资源?快使用搜索试试~ 我知道了~
[] - 2023-08-15 Tomcat 为什么要破坏 Java 双亲委派机制?.pdf
需积分: 0 0 下载量 127 浏览量
2023-12-11
21:41:48
上传
评论
收藏 664KB PDF 举报
温馨提示
试读
12页
互联网资讯,技术简介,IT、AI技术,人工智能互联网资讯,技术简介,IT、AI技术,人工智能互联网资讯,技术简介,IT、AI技术,人工智能互联网资讯,技术简介,IT、AI技术,人工智能互联网资讯,技术简介,IT、AI技术,人工智能互联网资讯,技术简介,IT、AI技术,人工智能互联网资讯,技术简介,IT、AI技术,人工智能互联网资讯,技术简介,IT、AI技术,人工智能互联网资讯,技术简介,IT、AI技术,人工智能互联网资讯,技术简介,IT、AI技术,人工智能互联网资讯,技术简介,IT、AI技术,人工智能互联网资讯,技术简介,IT、AI技术,人工智能互联网资讯,技术简介,IT、AI技术,人工智能互联网资讯,技术简介,IT、AI技术,人工智能
资源推荐
资源详情
资源评论
Tomcat 为什么要破坏 Java 双亲委派机制?
代 码 编 译 的 结 果 从 本 地 机 器 码 转 变 成 字 节 码 , 是 存 储 格 式 的 一 小
步 , 却 是 编 程 语 言 发 展 的 一 大 步 。
J a v a 虚 拟 机 把 描 述 类 的 数 据 从 C l a s s 文 件 加 载 进 内 存 , 并 对 数 据
进 行 校 验 , 转 换 解 析 和 初 始 化 , 最 终 形 成 可 以 呗 虚 拟 机 直 接 使 用
的 J a v a 类 型 , 这 就 是 虚 拟 机 的 类 加 载 机 制 。
虚 拟 机 设 计 团 队 把 类 加 载 阶 段 中 的 “ 通 过 一 个 类 的 全 限 定 名 来 获 取
描 述 此 类 的 二 进 制 字 节 流 ” 这 个 动 作 放 到 J a v a 虚 拟 机 外 部 去 实 现
, 以 便 让 应 用 程 序 自 己 决 定 如 何 去 获 取 所 需 要 的 类 。 实 现 这 动 作
的 代 码 模 块 成 为 “ 类 加 载 器 ” 。
类与类加载器的关系
类 加 载 器 虽 然 只 用 于 实 现 类 的 加 载 动 作 , 但 它 在 J a v a 程 序 中 起 到
的 作 用 却 远 远 不 限 于 类 加 载 阶 段 。 对 于 任 意 一 个 类 , 都 需 要 由 加
载 他 的 类 加 载 器 和 这 个 类 本 身 一 同 确 立 其 在 J a v a 虚 拟 机 中 的 唯 一
性 , 每 一 个 类 加 载 器 , 都 拥 有 一 个 独 立 的 类 命 名 空 间 。
这 句 话 可 以 表 达 的 更 通 俗 一 些 : 比 较 两 个 类 是 否 “ 相 等 ” , 只 有 在
这 两 个 类 是 由 同 一 个 类 加 载 器 加 载 的 前 提 下 才 有 意 义 , 否 则 , 即
使 这 两 个 类 来 自 同 一 个 C l a s s 文 件 , 被 同 一 个 虚 拟 机 加 载 , 只 要
加 载 他 们 的 类 加 载 器 不 同 , 那 这 个 两 个 类 就 必 定 不 相 等 。
基 于 S p r i n g B o o t + M y B a t i s P l u s + V u e 3 . 2 + V i t e +
E l e m e n t P l u s
实 现 的 前 后 端 分 离 博 客 , 包 含 后 台 管 理 系 统 , 支 持 文 章 、 分 类 、
标 签 管 理 、 仪 表 盘 等 功 能 。
GitHub 地址:https://github.com/weiwosuoai/WeBlog
Gitee 地址:https://gitee.com/AllenJiang/WeBlog
2. 什么是双亲委任模型
1 . 从 J a v a 虚 拟 机 的 角 度 来 说 , 只 存 在 两 种 不 同 类 加 载 器 : 一 种 是
启 动 类 加 载 器 ( B o o t s t r a p
C l a s s L o a d e r ) , 这 个 类 加 载 器 使 用 C + + 语 言 实 现 ( 只 限 H o t S
p o t ) , 是 虚 拟 机 自 身 的 一 部 分 ; 另 一 种 就 是 所 有 其 他 的 类 加 载
器 , 这 些 类 加 载 器 都 由 J a v a 语 言 实 现 , 独 立 于 虚 拟 机 外 部 , 并 且
全 都 继 承 自 抽 象 类 j a v a . l a n g . C l a s s L o a d e r .
2 . 从 J a v a 开 发 人 员 的 角 度 来 看 , 类 加 载 还 可 以 划 分 的 更 细 致 一 些
, 绝 大 部 分 J a v a 程 序 员 都 会 使 用 以 下 3 种 系 统 提 供 的 类 加 载 器 :
启动类加载器(Bootstrap ClassLoader):
这个类加载器复杂将存放在 JAVA_HOME/lib 目录中的,或者被-
Xbootclasspath
参数所指定的路径种的,并且是虚拟机识别的(仅按照文件名识别,如rt.j
ar,名字不符合的类库即使放在lib目录下也不会重载)。
扩展类加载器(Extension ClassLoader):
这个类加载器由sun.misc.Launcher$ExtClassLoader实现,它负责夹杂J
AVA_HOME/lib/ext 目录下的,或者被java.ext.dirs
系统变量所指定的路径种的所有类库。开发者可以直接使用扩展类加载器
。
应用程序类加载器(Application ClassLoader):
这个类加载器由sun.misc.Launcher$AppClassLoader实现。由于这个类加
载器是ClassLoader
种的getSystemClassLoader方法的返回值,所以也成为系统类加载器。
它负责加载用户类路径(ClassPath)上所指定的类库。开发者可以直接
使用这个类加载器,如果应用中没有定义过自己的类加载器,一般情况下
这个就是程序中默认的类加载器。
这 些 类 加 载 器 之 间 的 关 系 一 般 如 下 图 所 示 :
图片
图 中 各 个 类 加 载 器 之 间 的 关 系 成 为
类 加 载 器 的 双 亲 委 派 模 型 ( P a r e n t s D l e g a t i o n
M o d e ) 。 双 亲 委 派 模 型 要 求 除 了 顶 层 的 启 动 类 加 载 器 之 外 , 其
余 的 类 加 载 器 都 应 当 由 自 己 的 父 类 加 载 器 加 载 , 这 里 类 加 载 器 之
间 的 父 子 关 系 一 般 不 会 以 继 承 的 关 系 来 实 现 , 而 是 都 使 用 组 合 关
系 来 复 用 父 加 载 器 的 代 码 。
类 加 载 器 的 双 亲 委 派 模 型 在 J D K 1 . 2
期 间 被 引 入 并 被 广 泛 应 用 于 之 后 的 所 有 J a v a 程 序 中 , 但 他 并 不 是
个 强 制 性 的 约 束 模 型 , 而 是 J a v a 设 计 者 推 荐 给 开 发 者 的 一 种 类 加
载 器 实 现 方 式 。
双 亲 委 派 模 型 的 工 作 过 程 是 : 如 果 一 个 类 加 载 器 收 到 了 类 加 载 的
请 求 , 他 首 先 不 会 自 己 去 尝 试 加 载 这 个 类 , 而 是 把 这 个 请 求 委 派
父 类 加 载 器 去 完 成 。 每 一 个 层 次 的 类 加 载 器 都 是 如 此 , 因 此 所 有
的 加 载 请 求 最 终 都 应 该 传 送 到 顶 层 的 启 动 类 加 载 器 中 , 只 有 当 父
加 载 器 反 馈 自 己 无 法 完 成 这 个 请 求 ( 他 的 搜 索 范 围 中 没 有 找 到 所
需 的 类 ) 时 , 子 加 载 器 才 会 尝 试 自 己 去 加 载 。
为什么要这么做呢?
剩余11页未读,继续阅读
资源评论
毕业小助手
- 粉丝: 1990
- 资源: 1712
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功