TOMCAT的三种部署方式
Context descriptors
- 01
Tomcat4中的Manager和Admin管理工具其实就是利用它来部署的。 在Tomcat5中提出了Context descriptor这个概念,且为其配置了一个专有目录,而不像Tomcat4那样大杂烩一般地放置在$appBase目录下。 Context descriptor是一个只包含Context元素的xml格式的部署文件,其中Context元素与server.xml中的Context元素配置相同。 对于一个给定的主机,Context descriptor放置在$CATALINA_HOME/conf/[enginename]/[hostname]/目录下面。 Tomcat5默认安装时,在$CATALINA_HOME/conf/Catalina/localhost目录中有admin.xml和manager.xml,是两个管理工具的部署描述符文件。而这两个文件在Tomcat4中是放置在$CATALINA_HOME/webapps目录下面的。 使用方法: 在$CATALINA_HOME/conf/[enginename]/[hostname]/目录下新建xxx.xml文档 在xxx.xml文档中配置如下 <Context docBase="${catalina.home}/server/webapps/host-manager" privileged="true" antiResourceLocking="false" antiJARLocking="false"></Context> 注:docBase也可以设置为[eclipse的workplace]/[project]/webroot
静态部署
- 01
静态部署是指在Tomcat运行之前就把相关的Web应用程序放置到合适的目录,在Tomcat启动的时候自动来部署这些应用程序。 如果"deployOnStartup"属性值为true,那么在Tomcat启动时,在$appBase目录下的web应用程序将被自动部署。部署的过程如下: Context元素声明的Web应用程序将被首先部署,这包括server.xml和context descriptor文件中的Context元素所指的应用程序; 部署扩展目录形式的Web应用程序; 部署WAR形式的Web应用程序; Tomcat5对于静态方式的部署的增强主要就是: 对于context descriptor方式的应用程序的部署。 如果扩展目录方式的应用程序对应有一个WAR文件,且WAR是更新过的,扩展目录将被自动删除,Web应用程序将被从WAR文件中重新部署。 在Tomcat4中,即使WAR文件已更新也无法被重新部署,仍然会使用旧的扩展目录方式的Web应用程序,除非你自己手动删除目录,而且还要重启Tomcat。
动态部署
- 01
动态部署是指在Tomcat已经运行以后在不重启服务器的情况下部署应用程序的方式。 如果虚拟主机的"autoDeploy"属性值为true,则主机会在需要的时候试图去部署和更新应用程序。这是由虚拟主机在后台运行的一个负责自动加载的处理线程来完成的,它的工作流程如下: 部署新放入$appBase目录的War方式的应用程序。
- 02
部署新放入$appBase目录的扩展目录方式的应用程序。
- 03
如果一个扩展目录方式的应用程序对应的War文件更新了,则删除此目录,从War文件中重新解开并部署。如果”unpackWARs”属性值为false,则不解开,从War文件中直接运行。不用自己删除扩展目录,也不用重启服务器 。
- 04
如果应用程序的/WEB-INF/web.xml文件被改变,则重新部署这个应用。
- 05
如果应用程序对应的Context元素配置发生了改变,则重新部署这个应用。这包括server.xml或者上下文描述符文件中的Context元素。
- 06
如果$CATALINA_HOME/conf/[enginename]/[hostname]/目录下增加了上下文描述符文件,则重新部署这个应用。
- 07
看来Tomcat5在动态部署上花费了不少功夫,其中的亮点主要就是如果我们修改了web.xml、server.xml配置文件,增加了上下文描述符文件,动态更新了War文件时都可以实现应用程序的自动部署和更新,而不用重新启动Tomcat服务器,在Tomcat4中都是必须重新启动服务器的,这是一个非常喜人的变化。