• W.T
    2019-07-02
    文章读完有两点疑惑:
    1、文章提到热部署和热加载的本质是热部署的Context对象整个会被销毁掉,会重新创建一个Context对象;而前文讲热加载时提到WebLoader会调用Context的reload方法,也会销毁Context对象,是否前后矛盾了?
    2、整个设计自顶向下,父容器调用子容器中的backgroundProcess方法,但是到了Context容器的此方法中最后一行supper.backgroundProcess又反过来调用了父类该方法,有些不解?
    还请老师指教……
    展开

    作者回复: 1,reload只是调用了context组件的方法,没有将这个对象实例销毁掉。
    2,父子容器 不是 父子类 的关系。这里的backgroundProccess是ContainerBase实现的各容器的公共逻辑,不是只有父容器才有的行为。

    
     9
  • 曹宇
    2019-07-03
    为什么 Host 容器不通过重写 backgroundProcess 方法来实现热部署呢?
    因为这种方式的传递方向是从父容器到子容器,而HOST容器部署依赖Context容器部署完毕,才能部署应用,也就是先要子容器Context完成热部署后才能Host容器进行部署。所以针对这种情况,提供了周期性事件机制。
     1
     4
  • -W.LI-
    2019-07-02
    老师好!是因为基于事件,可以解耦么?

    作者回复: 这是其中一个原因,只要还是Host的周期性任务比较简单,只要检查部署是否有更新;而Context组件那样,周期性任务比较复杂,不得不重写父类的方法。

    
     4
  • 飞翔
    2019-07-23
    老师 求问 我们生成一个类 可以用反射 也可以用 new, 那么你说在热部署的时候很多类都被销毁了,那销毁调用的是哪个函数呀

    作者回复: 这里有个容易混淆的概念,类 和 类实例。

    new出来的是类实例,类实例创建后有个引用指向它,将这个引用=null,之后jvm gc会回收这个类实例。

    
     2
  • 锟铻
    2019-07-23
    请教一个疑问,文中讲的在热部署过程中:停止和销毁 Context 容器及其所有子容器,这个跟热加载一样都销毁了context容器,只是在销毁session有区别,对不,

    作者回复: 是的,还有个本质区别是Context对象本身有没有被gc调

    
     2
  • QQ怪
    2019-07-02
    老师,问个问题,我们平常在开发中,在已经运行的应用上改了代码之后然后编译,是不是就是主动热加载?

    作者回复: 对的

    
     2
  • nate
    2019-07-09
    scheduleWithFixedDelayd的第二个和第三个传参应该是:backgroundProcessorInitialDelay和backgroundProcessorDelay
    
     1
  • nightmare
    2019-07-02
    热加载的定位是某些文件更新,热部署是通过用户手动加了一个项目,热部署没有必要定时执行,只需要监听用户的热部署事件就行
    
     1
  • sun留白
    2020-01-09
    关于课后题,host容器是整个应用层级的,当确定web下目录有更新,就直接整个清理,然后按启动顺序,整个启动web应用就好(),这个启动逻辑已有,没必要通过重写 backgroundProcess 方法来实现,也不需要逐层的递归查找变化。当前启动前,得先销毁Context 对象。
    
    
  • sun留白
    2020-01-09
    老师看完了整个,我有两点疑问:
    1.是否热加载和热部署都会有短暂的停机,只是相对来说热加载粒度小,停机时间短。而这两个技术可以做到,自动检测,不用手动启,减少人工重启的中间停顿时间。
    2.热加载时候,session没有被干掉,是为了保存context容器的数据吗?
    
    
  • 李鑫磊
    2020-01-09
    我的Sevlet编译后的.class文件在Tomcat启动之前放进class目录下,Tomcat启动后都是可以访问的;但Tomcat启动后,再把我的.class文件放进class目录下,就访问不到,报404;context.xml已经配置了reloadable="true"了;
    
    
  • 李鑫磊
    2020-01-08
    请问老师,有什么方式可以把一个正在运行的Tomcat的流量旁路出来?
    
    
  • 李鑫磊
    2020-01-08
    老师这个Tomcat的版本是什么?
    
    
  • 听雨
    2019-08-13
    老师讲的web应用目录级别的变化是指人为的删除或者添加web应用吗这种情况吗

    作者回复: 对的

    
    
  • 疯狂咸鱼
    2019-08-09
    老师,您文中提到的Session是http中的Session么

    作者回复: 对的

    
    
  • nightmare
    2019-07-03
    Host热部署是父容器,如果也采用定时任务,那么context都重新加载了,也就没有热加载什么事情了
    
    
  • 代码搬运工
    2019-07-02
    backgroundProcess 方法主要用在加载粒度比较小,加载具体的资源、文件。而热部署是直接销毁Context,然后重新部署,所以不适合。
    
    
  • 黎
    2019-07-02
    热加载这种设计感觉就是一个树结构,从根开始遍历执行到所有叶,学习了。
    
    
  • Liam
    2019-07-02
    热部署也会导致系统短暂地不可用吧?我理解它只不过是通过后台线程周期性任务实现了一下自动重启功能?

    作者回复: 对的,部署过程中不能访问

    
    
我们在线,来聊聊吧