在过去的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时,一切都很好。 我已经尝试了两种方法:
/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。
我认为罪魁祸首是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