- 1、本文档共22页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
7.载入器.ppt
贝毅君 浙江大学软件学院 Java类载入器 Tomcat载入器 Loader接口 WebappLoader 类 创建类载入器 设置仓库 类的重新载入 WebappClassLoader 类 示例应用程序 JVM使用3种类载入器来载入所需要的类。 引导类载入器 – Bootstrap Class Loader (native方法实现) 扩展类载入器 – ExtClassLoader (Launcher类内部类) 系统类载入器 – AppClassLoader (Launcher类内部类) JAVA这3种类载入器之间是父子继承关系,其中引导类载入器位于层次结构的最上层,系统载入器位于层次结构最下层。 Java类加载器 Java类加载器 引导性类加载器用于启动Java虚拟机。当javax被执行的时候,就会启动引导类载入运行JVM所需要的类 - 启动引导类加载 System.getProperty(“sun.boot.class.path”)所指定的路径和jar 。本地代码实现该引导性加载器。 扩展性加载器负责载入标准扩展目录下的类。加载System.getProperty(“java.ext.dirs”)所指定的路径或jar。 系统类加载器是默认的类载入器,它会搜索环境变量CLASSPATH中指明的路径和JVM文件。加载System.getProperty(“java.class.path”)所指定的路径或jar。 Java类加载器 安全性 假如恶意用户编写一个名为java.lang.Object类,它可以访问硬盘中的任意目录。由于JVM 是信任java.lang.Object类的,这样这个类就可以绕过安全管理器了。 解决办法: JVM使用了类载入器的代理模型。当使用了代理模型,当一个类被载入的时候,会将载入类的任务交给其父载入类,然后父载入类(扩展类载入器)将载入任务交给其父载入器(引导类载入器)。引导类载入首先查找载入类,存在则载入,不存在交给扩展载入器载入,扩展载入器找不到再交给系统载入器查找。如果最终都找不到则抛出异常。 Java类加载器 安全管理器让java代码访问外部资源的时候收到一层过滤。可以在java应用启动的时候指定安全策略。 private void test() { ClassLoader currentLoader = this.getClass().getClassLoader(); System.out.println(当前加载器: + currentLoader.getClass().getName()); ClassLoader currentLoaderClassLoader = currentLoader.getClass().getClassLoader(); if (currentLoaderClassLoader == null){ System.err.println(当前加载器的类加载器不存在); System.out.println(); } System.out.println(当前加载器的父加载器: + currentLoader.getParent().getClass().getName()); JAVA类加载模拟测试 if (currentLoader.getParent().getParent() != null) { System.out.println(祖父加载器: + currentLoader.getParent().getParent().getClass().getName()); } } } 通过main方法进行测试 输出结果如下: 当前加载器:sun.misc.Launcher$AppClassLoader 当前加载器的父加载器:sun.misc.Launcher$ExtClassLoader 当前加载器的类加载器不存在 Tomcat类载入器 WebappLoader调用WebappClassLoader内部的loadClass() 方法来加载类 Tomcat使用自定义类载入器的3个原因: 为了在载入器中指定一些规则 Servlet只能引用部署在 WEB-INF/classes目录及其子目录下的类 Servlet只能访问 WEB-INF/lib目录下库 为了缓存已经载入的类 为了实现类的预加载 Tomcat类载入器 Loader接口 Tomcat中载入器必须实现org.apache.catalina.Loader接口 Loader接口方法 addRepository()、findRepository() getClassLoader() setContainer()、getContainer() modifie
您可能关注的文档
- 2013年厦门世平学校中考英语书面表达预测题5篇.doc
- 2013年福布斯中国潜力上市公司100强排行榜.doc
- 2013年金山区中考数学二模卷及答案.doc
- 2014内蒙古巴彦淖尔中考数学(钟晓秀).doc
- 2014届上海奉贤区初三一模英语试卷及答案.doc
- 2014年残保金网上申报流程.doc
- 2015南京尧化门科目三秘籍.doc
- 2015南通驾考科目二绝技(洋口港).doc
- 2015工程教育认证回顾.ppt
- 2015福布斯中国上市潜力企业100强排名.doc
- 2024年度党员干部专题组织生活会个人新四各方面对照检查材料3篇合集.docx
- 2023年民主生活会领导干部个人发言3篇范文.docx
- 第二批主题教育专题组织生活会普通党员个人对照检查材料合集2篇.docx
- 学习以案促改党纪教育专题组织生活会个人对照检查材料两篇.docx
- 党员领导干部2023年民主生活会“六个方面”个人对照检查材料3篇范文.docx
- 党员干部“严守纪律规矩 加强作风建设”组织生活会个人对照检查材料集合篇.docx
- 2024班子防治统计造假专题民主生活会对照检查材料两篇范文.docx
- 2024公司机关党支部教育专题组织生活会个人对照检查材料两篇.docx
- 2023年度专题民主生活会个人对照新6个对照方面检查材料3篇文稿.docx
- 2024第二批主题教育专题组织生活会对照检查材料2篇文本.docx
最近下载
- 部编版小学语文六年级下册第三单元教材解读分析.pptx
- 2025年江苏护理职业学院单招职业技能测试题库及答案参考.docx VIP
- 网络对大学生的影响与对策.doc VIP
- 特殊教育教学设计x.pptx VIP
- 2023年安徽医学高等专科学校单招综合素质考试试题及答案解析.docx
- IPC J-STD-001H 2020 EN 最新英文 版的.pdf
- 韩大元 宪法(第七版)全套课件.pptx
- 上海中心大厦施工组织设计.pdf
- 新疆维吾尔自治区2024年普通高考第一次适应性检测(一模)理科综合试卷(含答案).pdf
- (2025年新版本)人教版七年级数学下册《10.3 实际问题与二元一次方程组》教案..docx VIP
文档评论(0)