不能在tomcat中自动部署war

在过去的3个小时里,我一直在尝试这个事情,而且一无所获。 我需要放弃一场新的战争,让tomcat自动部署它。 这没有发生。 这是我的简化configuration:

server.xml

 <Engine name="Catalina" defaultHost="localhost"> <Host name="something.com" appBase="/var/www/something.com/webapps" unpackWARs="false" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"> <Context path="" docBase="application.war" debug="0" reloadable="true"> ... some realm and data source stuff here </Context> </Host> </Engine> 

当我启动tomcat时,一切都很好。 我已经尝试了两种方法:

  1. 在地点复制使用scp的新战争。
  2. 触摸/var/www/something.com/webapps/application.war

在这两种情况下,我都可以看到catalina.err同样的信息:

 INFO: Undeploying context [/application] 

没有相应的

 INFO: Deploying web application archive application.war 

当我重新启动tomcat时, 我有一种感觉,这是因为它不在CATALINA_BASE/webapps但不知道如何继续。 任何帮助?

这可能是一些事情。 我遇到的一些具体问题:

(1)文件权限。 确保webapps目录,你的工作目录,战争本身,以及它所访问的任何特殊文件都是运行Tomcat的用户可读/可写的(理想情况下它们应该由该用户拥有)。

(2)以前的版本没有完全删除。 尝试停止Tomcat,删除战争和匹配文件夹,复制新的战争,然后启动Tomcat。 如果有效,那么问题可能会留在文件上。 (我有一个应用程序,例如,不完全清理自己)。

(3)由于应用程序的问题,应用程序可能无法正确初始化。 如果战争自动部署到一个文件夹,autodeploy正在工作,但该应用程序没有完全初始化。 寻找日志消息。 根据您的应用程序,这可能在tomcat / logs,当前目录或标准输出。 如果可以,请更改日志属性(例如log4j.properties文件)以显示debugging级别消息。

(4)Permgen记忆问题。 当您在Tomcat中重新加载应用程序时,会使用Permgen内存。 根据定义,这不能被恢复。 重新加载太多,Tomcat将崩溃,出现内存不足的错误(您通常可以在日志中看到这一点)。 要么configuration更多的permgen,要么更好,closures/重新部署应用程序时重新启动Tomcat。

http://wiki.apache.org/tomcat/OutOfMemory

我认为罪魁祸首是unpackWARs="false"

从最近发布在stackoverflow上 ,发现unpackWARs="false"导致新版本的WAR没有被检测到。 任何具体的原因是false

不应该是docBase="application"而不是docBase="application.war" ? 如果我理解正确,这将导致Tomcat首先查找/var/www/something.com/webapps/application/文件夹,如果不存在,请查找/var/www/something.com/webapps/application.war