我想收集一些关于将Web应用程序部署到正在运行的Tomcat的最佳实践。不久前,我不得不描述我们的Web应用程序的部署过程,并且这个过程显得相当混乱。我们有一个WAR文件(foo.war)中的应用程序正确配置,不需要额外的配置。在这种情况下,部署过程相当简单:将Web应用程序部署到正在运行的Tomcat
- 将foo.war文件复制到$ CATALINA_HOME/webapps目录。如果应用程序正确启动,应用程序将自动部署到$ CATALINA_HOME/webapps/foo目录。
要取消部署应用程序:
- 从$ CATALINA_HOME/webapps中删除foo.war文件。如果应用程序卸载正确,它将被卸载,$ CATALINA_HOME/webapps/foo将被删除。
现在我想重写我正在运行的应用程序中的一些上下文参数。读了docs,所有我需要做的:
- 创建一个名为foo.xml
- 将文件复制到$ CATALINA_BASE/conf目录/ [引擎]/[主机名] /目录下的context.xml文件。
不幸的是,这没有奏效:应用程序不会重新启动。从经验上讲,我们发现唯一的解决方案是将war文件部署到$ CATALINA_HOME/webapps之外的位置。 此外,应该在web.xml中指定WAR文件中可配置上下文参数的缺省值,因为WAR文件中的context.xml在外面有context.xml时不会被读取。
这里是foo.xml的一个简单的例子:
<?xml version='1.0' encoding='utf-8'?>
<Context docBase="/path-to-deployment-directory/foo.war">
<Parameter name="myparam" value="newvalue" override="false"/>
</Context>
要确保,如果你想在“NEWVALUE”覆盖在WAR的web.xml中指定的值,以指定倍率= false为参数。这对我们来说并不明显。
因此,到aplication部署到运行Tomcat:
- 创建一个名为foo.xml
- 将文件复制到$ CATALINA_BASE/conf目录/ [引擎]/[主机名context.xml文件]/ 目录。
- 将foo.war复制到foo.xml的docBase中指定的位置;该应用程序将自动部署。
要申请新的环境参数:
- 添加参数值到foo.xml并保存文件;该应用程序将自动重新部署。
要取消部署应用程序:
- 从$ CATALINA_BASE/conf目录/ [引擎]/[主机名] /目录
请注意,移除foo的取出foo.xml。战争也会奏效,但也会删除foo.xml。
到现在为止,我有以下问题:
- 它是一个最佳实践在所有不停止Tomcat的部署Web应用程序?我听说一个意见,即部署到正在运行的tomcat从不需要,因为人们在单独的tomcat中运行每个应用程序。
- 将WAR文件复制到$ CATALINA_HOME/webapps还是将它们保存在一个单独的位置最好?
- 如何配置部署到$ CATALINA_HOME/webapps的应用程序
- 为什么catalina.out中没有INFO行来部署应用程序,并且有一个用于取消部署?它是可配置的吗?