热部署
为了使部暑和解除部署生效,但是要不经过启动Tomcat JVM而实现Web应用程序的部署和解除部署,这就是“热部署”。在本节,笔者重点讨论本地文件系统热部署,此时所有工作都在一台机器上执行,这一点与远程热部署相反,远程热部署是从一台机器上将Web应用程序热部署到运行Tomcat的另一台机器对远程热部署,您应使用Manager 货而应用程序,详细内容将在本章随后讨论。
如果您没有将context XML片段文件放在CATALINA_HOME/conf/[EngitteName]/[Hostname]/目录下,且Web应用程序包含了META.INF/context.xml那么该context.xml文件将被Tomcat读和使用(请再次确信在您的Host上没有设置deploy XHL="false")。如果您将context XML片段文件放在CATALINA_HOME/conf/[EngitteName]/[Hostname]/目录中,而Tomcat正在运行,那么Tomcat将使用该该配置文件对Web应用程序进行热部署。
如果您没有提供任何context XML片段文件,那么为了部署Web应用程序,Tomcat将为此在内存中动态创建自己的Context配置。这种自动Context配置包括了在Tomcat的全局 Context配置文件的内容,可以在CATALINA_HOME/conf/context.xml中找到。
逋过context XML片段文件而不是在server.xml中配置,实现Web应用程序的热部署,这样处理的优点有:
如果要改变Context元素或嵌套于其中的内容,您可以在context XML片段文件中进行更改,而Tomcat会注意到这一变动并自动部署您的Web应用程序,从而不经重启 Tomcat而使这一变动生效。这种现象只有在配置变动是Context元素或嵌套于其中的某种内容的情况下才能生效。在开发Web应用程序及需要持续、快速的方式重启 Web应用程序的地方(就是接触context XML片段文件),或者在实际产品中不想重启同一个Tomcat示例正运行的其他Web应用程序及这些程序正被Web客户端使用 的时候,可以采用手工处理这一情况。
如果您要对一个Web应用程序实现热取消部署(hot undeploy a web app),您可以 从Tomcat的CATALINA_HOME/conf/[EngitteName]/[Hostname]/目录下删除 context XML片段文件。在几秒钟内,Tomcat将注意到该context XML片段文件消失了,就将该Web应用程序取消部署。
因此,即使该Web应用程序的配置文件不能完全包含在context XML片段文件之内(因为一些特定的Web应用程序配置文件仍然必须驻留在server.xml文件中),也可以手工利用 Tomcat的热部署/取消部署特性,按这种方式部署Web应用程序。