作者回复: 👍
作者回复: 建议跟SpringBoot那样,用嵌入式方式启动Tomcat,这里有例子:
https://github.com/heroku/devcenter-embedded-tomcat
作者回复: 掌握了分析源码的方法,再分析Spring都不是难事。
作者回复: 你思考题回答的不错啊,还可以想想实际工作中是不是也有类似的场景,可以模仿这种设计。
作者回复: 1.这个要根据具体场景来的,简单来说如果你需要用if-else来实现某个逻辑,这是可能是变化点。
2.这种情况下,对event的处理考虑用线程池。
作者回复: 👍
作者回复: 谢谢分享!
作者回复: init方法里有一些”通用的逻辑“对各个子类都适用,如果让每个子类都重复实现一编,代码不久重复了吗,于是这些”逻辑“让LifeCycleBase来做,其实就是实现了模板,子类再在这个模板上填充自己的内容。
作者回复: 😑
作者回复: 可以在Server的构造函数里下断点,你会发现是XML解析器通过反射创建的
作者回复: Connector上的线程池负责处理这个它所接收到的所有请求。一个Connector有一个线程池。
其他的后台任务也有专门的线程池,不会占用Connector的线程池。
作者回复: 建议用嵌入式的方式来启动Tomcat。这里有个例子:
https://github.com/heroku/devcenter-embedded-tomcat
作者回复: 因为大组件包含小组件,小组件本身就是大组件的一部分,小组件不创建好,大组件是不能工作的。
作者回复: 当Web应用文件发生变化的时候。