功能目标:
-
支持热部署(Hot Deployment)功能,能够在不重启服务器的情况下加载新的 Web 应用。
-
监控应用目录的变化,当检测到新的 Web 应用时,自动加载该应用的 Servlet 和资源。
-
支持
web.xml
的重新加载和应用更新。
实现内容:
-
实现一个 目录监控机制,当检测到应用目录中的变化(如新增应用、修改或删除文件)时,自动加载或卸载应用。
-
支持 web.xml 文件的重新加载,使得配置更新后能自动生效。
-
提供一个简单的 文件监控线程,持续检测应用目录中的变化,并在变化发生时触发相关的加载或卸载操作。
15.1 热部署的设计
热部署的关键是动态地检测文件系统的变化,并自动加载或卸载 Web 应用。为此,我们可以借助 Java NIO 提供的 WatchService,实现对应用目录中文件的监控。
15.1.1 设计思路
-
文件监控:使用
WatchService
监控应用目录中的文件变化。包括新增、修改或删除操作。 -
自动加载应用:当监控到新的应用目录或文件发生变化时,自动加载或更新应用的 Servlet 和配置。
-
重新加载配置:当
web.xml
文件发生变化时,重新加载该配置文件,并应用新的路由和初始化参数。