【问题标题】:Tomcat7 WAR unpack incompleteTomcat7 WAR解包不完整
【发布时间】:2015-04-23 13:36:24
【问题描述】:

我在 CentOS 6.2 上运行 Tomcat 7.0.23。我有一个使用服务器特定上下文 XML 文件部署的 WAR。

conf/server.xml 包含:

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

conf/Catalina/localhost/MyWebapp.xml 包含:

<Context docBase="/opt/apache-tomcat-7.0.23/MyWebapp.war" unpackWAR="true">

WAR 文件包含(我通过解压缩验证):

css/style.css
META-INF/MANIFEST.MF
META-INF/maven/...
WEB-INF/classes/... (the .class files)
WEB-INF/lib/... (some .jar files)
WEB-INF/resources/...
WEB-INF/web.xml
WEB-INF/log4j.xml

在 tomcat 中部署时(使用热部署或冷部署,之前都删除了 MyWebapp 文件夹)work/Catalina/localhost/MyWebapp/ 文件夹仅包含:

WEB-INF/classes/...
WEB-INF/lib/...

参数 unpackWARsTomcat 7 Host Documentation 表示:

Set to true if you want web applications that are placed in the appBase directory as web application archive (WAR) files to be unpacked into a corresponding disk directory structure, false to run such web applications directly from a WAR file.

所以它对实际解包的内容并不是很具体。

Tomcat 没有解压整个 WAR 文件是预期的行为吗?有记录吗?在哪里?我应该把资源文件放在哪里?

【问题讨论】:

    标签: tomcat7 war


    【解决方案1】:

    这在 Tomcat 版本 7.0.12 - 7.0.47 中似乎是一种奇怪的行为。 7.0.12 版的changelog 包含:

    Don't unpack WAR files if they are not located in the Host's appBase.
    

    对于版本 7.0.48(发布为 7.0.50):

    Add support for unpacking WARs located outside of the Host's appBase in to the appBase.
    

    有关这些更改的更多信息,请参阅相应的Bugzilla entry

    【讨论】:

      猜你喜欢
      • 2017-07-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-23
      • 2012-09-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多