文档说明如果你有一个上下文文件:
$CATALINA_HOME/conf/Catalina/localhost/myapp.xml
这里不会被上下文文件替换:
mywebapp.war/META-INF/context.xml
这里写着:http://tomcat.apache.org/tomcat-6.0-doc/config/context.html
仅当$ CATALINA_BASE / conf / [enginename] / [hostname] /中的应用程序不存在上下文文件时,才在应用程序文件内的/META-INF/context.xml中的单个文件中。
但是每当我重新部署战争时,它都会用/META-INF/context.xml替换这个myapp.xml!
为什么要这样做,我该如何避免呢?
感谢名单
答案 0 :(得分:6)
取消部署重新部署的一部分会删除应用程序和关联的context.xml。
如果使用maven tomcat插件,如果使用以下命令部署应用程序,则可以避免删除context.xml:
mvn tomcat:deploy-only -Dmaven.tomcat.update=true
此处有更多信息:https://tomcat.apache.org/maven-plugin-2.0-beta-1/tomcat7-maven-plugin/deploy-only-mojo.html
您可以使用deploy-only with parameter mode来部署context.xml。
答案 1 :(得分:3)
答案简短:
只需将 TOMCATHOME / conf / Catalina / localhost 目录设为只读,并继续阅读以获取更多详细信息:
对于构建部署模式(通常用于登台,QA或prod),JDBC 数据源和其他“Web资源”详细信息由 质量保证/生产团队,而不是开发团队。因此,他们 必须在Tomcat服务器中指定,而不是在WAR文件中指定 了。在这种情况下,请在文件中指定它们 TOMCATHOME / conf / Catalina / localhost / CONTEXT.xml (更改 Catalina 引擎,主机 localhost ,相应的上下文 CONTEXT 。然而, Tomcat将在每次部署时删除此文件。为了防止这种情况 删除,只是让这个目录只读;在Linux中,您可以输入:
chmod a-w TOMCATHOME/conf/Catalina/localhost
瞧!欢迎您。
答案很长
答案 2 :(得分:0)
在tomcat7上,autoDeploy = false也会在取消部署时删除该文件。这是记录而不是错误(虽然它避免了使用服务器端固定配置的良好自动部署)。
我找到了解决这个问题的解决方法:
这允许每个主机配置独立于部署的战争。
还应该可以通过添加诸如“/ config-context-MYPATH”之类的上下文来添加每个上下文配置。在您的应用程序中,您可以使用应用程序的上下文路径来计算配置应用程序的上下文路径。
答案 3 :(得分:0)
根据文档(http://tomcat.apache.org/tomcat-8.0-doc/config/automatic-deployment.html#Deleted_files),在重新部署时,tomcat会检测到应用程序的删除(取消部署)。所以它将启动一个清理过程,删除目录和xml。这与自动部署无关 - 因此在通过经理重新部署和修改战争时也会发生。有3个例外:
我不知道为什么,但是copyXML =" false" deployXML ="假"没有帮助。
其次:使目录只读,只会让tomcat抛出异常并且不会启动。
您可以尝试将$ CATALINA_BASE / conf / Catalina / localhost / myapp-1.xml,$ CATALINA_BASE / conf / Catalina / localhost / myapp-2.xml等文件合并到$ CATALINA_BASE / conf / context.xml中(仅当您确保您的应用程序不会部署其自己的上下文配置时才有效,例如myapp-1.xml)
如果有人能说出这是什么"外部资源"这通常可以解决问题。
答案 4 :(得分:0)
重新部署意味着两个部分:取消部署和部署。
取消部署会删除conf/Catalina/yourhost/yourapp.xml
,因为
<Host name="localhost" appBase="webapps" unpackWARs="true"
autoDeploy="true"> <!-- means autoUndeploy too!!! -->
</Host>
更改autoDeploy="false"
,Tomcat已无订单,以删除conf/Catalina/yourhost/yourapp.xml
。
答案 5 :(得分:0)
标题Re-deploy from war without deleting context涵盖了标题所描述的一般性问题,目前仍是未解决的问题。
在不删除上下文的重新部署和在取消部署后删除上下文的取消部署之后进行部署之间存在公认的区别。该文档已过时,并且经理GUI仍然不支持重新部署。