热部署就是在服务器运行时重新部署项目,热加载即在在运行时重新加载class,从而升级应用。
通常情况下在开发环境中我们使用的是热加载,因为热加载的实现的方式在Web容器中启动一个后台线程,定期检测相关文件的变化,如果有变化就重新加载类,这个过程不会清空Session。
而在生产环境我们一般应用的是热部署,热部署也是在Web应用后台线程定期检测,发现有变化就会重新加载整个Web应用,这种方式更加彻底会清空Session。
# 热加载
热加载其实我们在开发过程中经常使用,例如我们使用Idea开发时,我们在设置页面可以进行设置,当修改文件时,我们可以选择不重启项目,选择重新加载此文件。
而在Tomcat中也能设置,Tomcat默认情况下是不开启热加载的。需要在Tomcat路径下的Context.xml中配置reloadable参数来开启这个功能。
<Context reloadable="true"/>
我们演示一下Tomcat是如何热加载的。在webapp下我们新建了一个项目,里面的Servlet文件如下
public class MyServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {System.out.println("MyServlet 在处理 get()请求...");PrintWriter out = response.getWriter();response.setContentType("text/html;charset=utf-8");out.println(">My Servlet Version1! ");}@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {System.out.println("MyServlet 在处理 post()请求...");PrintWriter out = response.getWriter();response.setContentType("text/html;charset=utf-8");

本文详细介绍了Tomcat的热加载和热部署。热加载允许在运行时重新加载class,不丢失Session,常见于开发环境。而热部署则会完全重新部署Web应用,适合生产环境。在Tomcat中,热加载通过配置reloadable参数开启,并由Context容器的后台线程监控文件变化。热部署则是检测到War包更新时,删除旧文件并重新解压部署。两者的区别在于热加载仅重新加载类,热部署涉及整个应用的重启。
最低0.47元/天 解锁文章
793

被折叠的 条评论
为什么被折叠?



