趣文网 > 作文大全

床长人工智能教程免费分享——Tomcat

2020-12-06 08:10:01
相关推荐

.

声明:本人只是分享一些床长人工智能教程相关的免费杂文而已,并非床长人工智能网校的收费文章。尊重版权,支持原创!

前言

如何实现不同的应用程序,使用不同的第三方类库?带着疑问学下去

打破双亲委派

以类加载为例,如果使用默认的双亲委派类加载机制行不行我们思考一下

是个容器,那么它要解决什么问题

一个容器可能需要部署两个应用程序,不同的应用程序可能会依赖同一个第三方类库的不同版本,不能要求同一个类库在同一个服务器只有一份,因此要保证每个应用程序的类库都是独立的,保证相互隔离。

部署在同一个容器中相同的类库相同的版本可以共享。

否则,如果服务器有个应用程序,那么要有份相同的类库加载进虚拟机。

容器也有自己依赖的类库,不能与应用程序的类库混淆。

基于安全考虑,应该让容器的类库和程序的类库隔离开来。

容器要支持的修改,我们知道,文件最终也是要编译成文件才能在虚拟机中运行,但程序运行后修改已经是司空见惯的事情,容器需要支持修改后不用重启。

比如以下伪代码,我们又要确保各自隔离,又要确保底层库通用。

必定主要实现自定义

平台

应用

应用

如果使用默认的双亲委派类加载机制行不行

答案是不行的。

为什么

第一个问题,如果使用默认的类加载器机制,那么是无法加载两个相同类库的不同版本的,默认的类加器是不管你是什么版本的,只在乎你的全限定类名,并且只有一份。

第二个问题,默认的类加载器是能够实现的,因为他的职责就是保证唯一性。

第三个问题和第一个问题一样。

我们再看第四个问题,我们想我们要怎么实现文件的热加载,文件其实也就是文件,那么如果修改了,但类名还是一样,类加载器会直接取方法区中已经存在的,修改后的是不会重新加载的。

那么怎么办呢我们可以直接卸载掉这文件的类加载器,所以你应该想到了,每个文件对应一个唯一的类加载器,当一个文件修改了,就直接卸载这个类加载器。

重新创建类加载器,重新加载文件。

自定义加载器详解

的几个主要类加载器

最基本的类加载器,加载路径中的可以被容器本身以及各个访问

容器私有的类加载器,加载路径中的对于不可见

各个共享的类加载器,加载路径中的对于所有可见,但是对于容器不可见

各个私有的类加载器,加载路径中的只对当前可见主要负责管理用户自定义目录下的

从中的委派关系中可以看出

能加载的类都可以被和使用,从而实现了公有类库的共用,而和自己能加载的类则与对方相互隔离。

可以使用加载到的类,但各个实例之间相互隔离。

而的加载范围仅仅是这个文件所编译出来的那一个文件,它出现的目的就是为了被丢弃当容器检测到文件被修改时,会替换掉目前的的实例,并通过再建立一个新的类加载器来实现文件的热加载功能。

这种类加载机制违背了推荐的双亲委派模型了吗

答案是违背了。

我们前面说过,双亲委派机制要求除了顶层的启动类加载器之外,其余的类加载器都应当由自己的父类加载器加载。

很显然,不是这样实现,为了实现隔离性,没有遵守这个约定,每个加载自己的目录下的文件,不会传递给父类加载器,打破了双亲委派机制。

加载规则

自己缓存中查找

查找是否已经加载

尝试通过类加载器加载类,防止重写中的类

认定特殊的类,是否委派给父类去加载去加载

去自己的里面去加载

如果还没有加载到,无条件交给父类去加载去加载

热加载与热部署

热加载是针对应用来的

热加载的目的是让中老的对象替换为新的对象,因为不能直接替换,我们需要卸载掉

如何开启热加载默认

删除修改,都会进行热加载

添加不会热加载

触发了热加载

最终调用这里

某一个文件最后一次修改时间是什么

检测包删除与修改

源码流程

暂停,停止接受请求等

停止,老。。。

阅读剩余内容
网友评论
相关内容
延伸阅读
小编推荐

大家都在看

快乐是什么作文 初中作文800字优秀作文 一年级作文看图写话 六年级家乡的风俗作文 下雪作文300字 过春节英语作文 友情类作文 我不后悔作文 读书笔记作文 乡村美景的作文 仙人球的作文 周末计划英语作文 春节的故事作文 关于勇敢的作文 蝴蝶兰作文 西安旅游作文 四下作文 介绍中国的英语作文 陪伴作文500字 冰糖葫芦作文 童话故事作文三年级 关于乡村的作文 学校生活英语作文 真没想到作文 英语作文八年级上册 写饺子的作文 五下作文 换位思考作文 满分作文500 初一满分作文