8.载入器

章前准备
      人人都知道类加载器很重要,原本以为自定义加载时指定是如何确定链接,载入之类的传说中的关联方式,看完之后发现自己还是too young,类如何加载如何链接都是jvm的事情,做为程序猿只能控制两件事,字节码生成和类加载器
      字节码生成:标准的java,jsp,听说Python等脚本也可以- -!
      类加载器:实现ClassLoader的类,所有方法都实现好了的抽象类- -

我在看类加载器的时候不断地寻找加载的方法在哪里...现在想来自定义类加载器也就是让你决定一下是否加载(有点阈的概念),怎么加载(我是说链接什么的),跟我们真没什么缘分(仔细想想自己认为的加载器,好像还真得是jvm的一部分才行),仔细想想如果只有一个加载器会怎么样
  1.核心类与自定义类重名(启动/引导加载器,bootstrap还真是出名)
  2.同一台服务器上不同的项目的类库分离(比如jdk1.4和jdk1.7)
  3.同一台服务器上不同的项目的类库共用
  4.热启动(jsp是servlet,但jsp的修改不需要重启,servlet不会)
  第一个问题好说,整个检查就好了,第二个也好说两个不同的类加载器就好了,第三个有点蛋疼,第四个就....即使被称为类加载器,说到底还是类被加载时遇见一些问题(或需求)的解决方案,tomcat类加载器方案重点是热启动(jsp修改)和安全限制,听说还有一个更为经典的加载架构OSGI,改天看看吧(最重要的还是要弄清楚加载器进行加载的策略以及自定义加载器能干什么)
关于类加载器吐个小槽,当年面试的时候有个面试官问我单例模式在同一个项目中是否只有一个,我说是,他说不是(万一人家有多个类加载器累)

第八章 载入器
     自定义的类加载器并不是解决类如何链接,加载的问题,而是解决一下几个需求
  1.自动载入WEB-INF/classes或WEB-INF/lib 下的类(不介意使用线程哦)
  2.预加载与缓存
  3.jsp的热加载(动态加载,动态生成,我喜欢)
至于安全保护什么的也算,不过我认为java大叔提供的加载方案已经保护的超不多了,基于以上tomcat给的解决方案就是本章的内容
  WebappLoader:项目加载的详细说明,实现Loader(tomcat的)接口,为具体实现做准备工作,包括:
  1.创建具体的类加载器
  2.设置仓库
  3.设置类路径
  4.设置访问权限
  5.开启线程进行检查
这个类可以控制手下的类加载器具体加载的仓库,与context相关义不容辞
  WebappClassLoader:优化与安全,如
  1.缓存机制的建立
  2.特殊类的保护

时间: 2024-08-08 04:00:49

8.载入器的相关文章

Java类载入器(一)——类载入器层次与模型

类载入器 ??虚拟机设计团队把类载入阶段中的"通过一个类的全限定名来获取描写叙述此类的二进制字节流"这个动作放到Java虚拟机外部去实现.以便让应用程序自己决定怎样去获取所须要的类.实现这个动作的代码模块称为"类载入器". 类载入器层次(等级) ??从JVM的角度来讲,仅仅存在两种不同的类载入器. ??第一类是启动类载入器(Bootstrap ClassLoader):这个类载入器主要载入JVM自身工作须要的类.这个类载入器由C++语言实现(特指HotSpot).是

tomcat(8)载入器

[0]README 0.0)本文部分描述转自"深入剖析tomcat",旨在学习 tomcat(8)载入器 的基础知识: 0.1)一个标准web 应用程序中的载入器:简单来说就是 tomcat中的载入器: 0.2)servlet容器需要实现一个自定义的载入器,而不能简单地使用系统的类载入器的原因:(干货--为什么servlet容器要实现一个自定义的载入器) 0.2.1)原因1:因为servlet容器不应该完全信任它正在运行的servlet类: 0.2.2)原因2:如果使用系统类的载入器载

WorldWind源码剖析系列:配置载入器类ConfigurationLoader

配置载入器类ConfigurationLoader主要从指定的路径中加载保存星球相关参数的xml文件,从中读取数据来构造星球对象及其所关联的可渲染子对象列表并返回.该类的类图如下所示. 该类所包含的主要的方法基本都是静态的,功能说明如下: public static double ParseDouble(string s)将字符串s解析为Double型数字 private static bool ParseBool(string booleanString) 将字符串s解析为bool型 publ

Spin.js-CSS动画进度载入器

spin.js是一款很easy的CSS载入器,他是一款使用了VML(Vector Makeup Language)的CSS动画效果. spin.js的特性 他有着很强大的适应性.有着下面几个特性: 1.    没有额外的图片.也没有添加的外部CSS文件 2.    不须要依赖于其它工具,对于jQuery而言,它支持jQuery,可是jQuery并不是必须的 3.    有非常高的可配置性 4.    与分辨率无关 5.    浏览器兼容性非常好,在低版本号的IE上.採用VML支持 6.    使

EasyUI基础入门之Easyloader(载入器)

在了解完easyui的parser(解析器)之后,接下来就是easyloader(简单载入器)的学习了. 什么是EasyLoader 正如其名字一样easyloader的作用是为了动态的载入组件所需的js文件,这体现了EasyUI作为轻量级框架对性能的合理掌握(能够动态的载入所需组件),只是一般而言非常少使用到easyloader(会给使用者带来一定的难度).那么使用EasyLoader的场景有哪些呢? EasyLoader使用场景 出于性能的考虑,不一次性的载入easyui核心js.css文件

Java类载入器 ClassLoader的解析

//參考 : http://www.ibm.com/developerworks/cn/java/j-lo-classloader/ 类载入器基本概念 类载入器是 Java 语言的一个创新,也是 Java 语言流行的重要原因之中的一个.它使得 Java 类能够被动态载入到 Java 虚拟机中并运行. 类载入器从 JDK 1.0 就出现了.最初是为了满足 Java Applet 的须要而开发出来的.Java Applet 须要从远程下载 Java 类文件到浏览器中并运行.如今类载入器在 Web 容

java类载入器——ClassLoader

Java的设计初衷是主要面向嵌入式领域,对于自己定义的一些类,考虑使用依需求载入原则.即在程序使用到时才载入类,节省内存消耗,这时就可以通过类载入器来动态载入. 假设你平时仅仅是做web开发,那应该非常少会跟类载入器打交道,但假设你想深入学习tomcatserver的架构,它是不可缺少的.所谓类载入器.就是用于载入Java类到Java虚拟机中,它负责读取Java字节码.并转换成java.lang.Class类的一个实例.使字节代码.class文件得以执行. 一般类载入器负责依据一个指定的类找到相

Java的类载入器

每次创建Java类的实例时,都必须现将类载入到内存中.Java虚拟机使用类载入器来载入需要的类.一般情况下,类在如期会在一些Java核心类库,以及环境变量CLASSPATH中指明的目录中搜索相关类.如果在这些位置它都找不到要载入的类,就会抛出java.lang.ClassNotFoundException异常. 从J2SE 1.2开始,JVM使用了3中类载入器来载入所需要的类,分别是引导类载入器(bootstrap class loader).扩展类载入器(extension class loa

How Tomcat Works 读书笔记 八 载入器

Java的类载入器 详细资料见 http://blog.csdn.net/dlf123321/article/details/39957175 http://blog.csdn.net/dlf123321/article/details/40431297 首先说明两个术语 仓库(repository),表示类加载器会在哪里搜索要载入的类; 资源(resource),知道一个类载入器中的DirContext对象,它的文件跟路径指的就是上下文的文件跟路径. 在tomcat中,我们使用了自定义载入器,