new*_*ver 9 deployment configuration tomcat servlets
我想收集一些关于将Web应用程序部署到正在运行的Tomcat的最佳实践.不久前,我不得不描述我们的网络应用程序的部署过程,这个过程显得比较混乱.
比如,我们在WAR文件(foo.war)中有一个应用程序正确配置,不需要额外的配置.在这种情况下,部署过程相当简单:
要取消部署应用程序:
现在我想在我正在运行的应用程序中覆盖一些上下文参数.阅读完文档后,我需要做的就是:
不幸的是,这不起作用:应用程序不会重新启动.根据经验,我们发现唯一可行的解决方案是将war文件部署到$ CATALINA_HOME/webapps之外的位置.此外,应该在web.xml中指定WAR文件中可配置上下文参数的默认值,因为当外部有context.xml时,不会读取WAR文件中的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>
Run Code Online (Sandbox Code Playgroud)
如果希望'newvalue'覆盖WAR的web.xml中指定的值,请确保为参数指定override = false.这对我们来说并不明显.
因此,要将应用程序部署到正在运行的Tomcat:
要应用新的上下文参数:
要取消部署应用程序:
请注意,删除foo.war也可以,但也会删除foo.xml.
到现在为止,我有以下问题:
一种解决方案是使用管理器应用程序。如果您认为使用它是安全的,那么您可以轻松部署、启动、停止和取消部署应用程序:
http://localhost:8080/manager/deploy?path=[context_path] http://localhost:8080/manager/start?path=[context_path] http://localhost:8080/manager/stop?path=[context_path ] http://localhost:8080/manager/undeploy?path=[context_path]
有一些 ant 任务可以帮助您完成这些任务。
我猜测,但不确定,停止和启动应用程序将使其重新读取 context.xml。
关于你的第二个问题,我认为出于维护原因,将 war 文件保留在 webapps 目录中会更好。
归档时间: |
|
查看次数: |
8003 次 |
最近记录: |