为什么tomcat喜欢删除我的context.xml文件?

sta*_*san 25 tomcat

我正在开发一个基于 Web 的 Java 应用程序,并且(显然)在开发过程中必须在本地运行它。我已经找到了 Tomcat 文档并且有一个合适的 context.xml 文件,/etc/tomcat6/Catalina/localhost/但每隔一段时间,Tomcat 就会决定删除它!这意味着我必须把它放回去并重新启动Tomcat。

它为什么这样做?我已经搜索了有关它的 Tomcat 文档,但并不明智。

(哦,是的:它实际上并没有被调用,context.xmlowners.xml因为这是该应用程序的 HTTP 路径前缀。)

更新

我现在已经看到 Tomcat在 Tomcat 运行时删除文件。我想我需要提交一个错误...

Jan*_*yka 18

快速总结:在几种情况下(例如更改 war 文件、删除 webapp 或用新内容替换它),tomcat 将取消部署上下文,包括删除上下文文件。

详细信息:tomcat 是否执行 autoDeployment(意味着检查 .xml 描述符中的更改以及检查 webapp 目录中的更改)由以下因素驱动:

  1. server.xml 位于 $CATALINA_HOME/conf/server.xml 部分:

    <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">

  2. 您还可以在重载值的上下文文件中设置此属性

autoDeploy=true 的情况下引用文档可能会导致删除您的上下文文件:

  • 删除 WAR 文件将触发应用程序的取消部署,并删除任何关联的展开目录、上下文文件和工作目录。
  • 删除目录将触发取消部署应用程序,并删除任何关联的上下文文件和工作目录。
  • 更新 WAR 文件将触发应用程序的取消部署,并删除任何关联的扩展目录、上下文文件和工作目录。
  • 更新目录(不是目录内容)将触发应用程序的取消部署,并删除任何关联的上下文文件和工作目录。

详尽的细节http : //tomcat.apache.org/tomcat-6.0-doc/config/host.html#Automatic%20Application%20Deployment


小智 6

如果您不想要 autoDeploy功能,例如在生产环境中,您可以考虑 conf/Catalina/localhost 上下文文件中的以下属性:

  • 自动部署=“假”
  • 和 deployXML="false"

autoDeploy="false" 可能无法单独工作,因为 application context.xml(在 META-INF 中)可以覆盖 autoDeploy 的 server.xml 设置。

  • 应用程序的 META-INF/context.xml 将在开发环境中使用,带有 autoDeploy
  • 生产中的 conf/Catalina/localhost 上下文,没有 autoDeploy。

deployXML 属性文档属性文档值得一读(§ 标准实现)。

详尽的 autoDeploy 用户案例,当上下文被移除时:即应用程序未部署,可以在此处找到记录的用户案例。