Tomcat autodeploy不会通过HTTP返回实际文件

时间:2014-06-03 15:42:16

标签: java apache http tomcat

旧文件是:

$ curl http://localhost:8084
First file 

我的意思是 - war-file 只包含一个带文字&#34的index.jsp页面;第一页":

$ jar tf ../app-application/APP.war
META-INF/
META-INF/MANIFEST.MF
index.jsp

Tomcat' server.xml有下一个组件配置:

    <Host
      name="localhost"
      appBase="/home/user/APP/app-application/"
      unpackWARs="false"
      autoDeploy="true"
      deployOnStartup="false">

      <Context
        path=""
        docBase="APP.war"
        reloadable="true"
      />

然后 - 我复制了新的 war-file

$ cat ../tmp/1/index.jsp
Second file

$ cd ../tmp/1/ && jar cf APP.war index.jsp

$ cp APP.war ../../app-application/
cp: overwrite `../../app-application/APP.war'? y

在日志中看到:

 INFO: Undeploying context [/APP]
 Jun 3, 2014 1:16:40 PM org.apache.catalina.startup.HostConfig deployWAR
 INFO: Deploying web application archive /home/user/APP/app-application/APP.war

Buit - 当我尝试用浏览器打开它时 - 我又得到了旧文件:

$ curl http://localhost:8084/
First file

只有在完全重启Tomcat之后 - 我才会看到新文件;

$ curl http://localhost:8084
Second file

为什么呢?我错过了什么吗? Tomcat将它保存在一些缓存中吗?

1 个答案:

答案 0 :(得分:1)

如评论中所述,当您启用<Context>时,您不需要定义autoDeploy

autoDeploy为true时,Tomcat将在appBase目录中查看新文件并将其部署在名为WAR的上下文路径上 - EG {{ 1}}将部署在app.war上下文路径上。

您可以定义/app但我认为如果您对<Context> autoDeploy这样做,它会覆盖部分Host设置,并可能导致打破Host

希望这有帮助,

威尔