Tomcat自动解压缩WAR文件更改了文件的上次修改时间

时间:2011-09-28 15:18:23

标签: java tomcat war

当我尝试将WAR文件部署到tomcat时遇到了问题。 从tomcat自动解压缩进程时,修改了unpack文件的最后修改日期。 解压缩Web应用程序的日期。文件变得快12个小时,这导致了一些杂项错误。

我试图通过jar -xvf手动解压缩,文件的最后修改日期保持不变。 我还在本地tomcat(与dev.env。相同的时区)中进行了测试,在上次修改日期没有任何变化。

好像是tomcat时区问题,在tomcat上设置我能解决这个问题吗? 非常感谢任何帮助。

环境: Linux上的Tomcat 6,GMT-4时区都设置​​在服务器和tomcat中 由GMT + 8时区设置的机器创建的WAR文件

1 个答案:

答案 0 :(得分:1)

就我而言,应用程序在初始化应用程序时从Tomcat中设置默认时区。时区变化引入的差异与文件修改时间的偏移量相匹配。

我很惊讶应用程序中的任何代码都可以在解压缩之前运行,但Tomcat容器确实为应用程序提供了在所有文件解压缩之前运行初始化代码的机会。

查找TimeZone.setDefault()的出现次数,并尝试在初始化序列中删除呼叫或稍后移动呼叫。

有用的线索:

这个JSP告诉我,无论环境设置如何,应用程序始终以特定时区运行:

<html> 
<body> 
<h2>Current Timezone</h2> 
<%    java.util.Date date = new java.util.Date();       
      java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("zzz"); %> 
<%=sdf.format(date)%> 
</body> 
</html>

在日志文件中,我可以看到时区正在变化的瞬间(四小时跳转)。它发生在加载应用程序时。

注意:一旦设置,时区将保持设置,直到Tomcat重新启动。

Sep 18, 2015 2:34:26 PM org.apache.coyote.http11.Http11Protocol init
INFO: Initializing Coyote HTTP/1.1 on http-8443
Sep 18, 2015 2:34:26 PM org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 285 ms
Sep 18, 2015 2:34:26 PM org.apache.catalina.core.StandardService start
INFO: Starting service Catalina
Sep 18, 2015 2:34:26 PM org.apache.catalina.core.StandardEngine start
INFO: Starting Servlet Engine: Apache Tomcat/6.0.24
Sep 18, 2015 2:34:26 PM org.apache.catalina.startup.HostConfig deployWAR
INFO: Deploying web application archive myWebapp.war
Sep 18, 2015 6:34:30 PM org.apache.catalina.core.ApplicationContext log
INFO: Initializing Spring root WebApplicationContext
Sep 18, 2015 6:34:34 PM org.apache.catalina.core.ApplicationContext log
INFO: org.tuckey.web.filters.urlrewrite.UrlRewriteFilter INFO: loaded (conf ok)
Sep 18, 2015 6:34:34 PM org.apache.catalina.core.ApplicationContext log
INFO: struts: []: Verifying ModuleConfig for this module
Sep 18, 2015 6:34:34 PM org.apache.catalina.core.ApplicationContext log
INFO: struts: []: Verification of ModuleConfig has been completed
Sep 18, 2015 6:34:34 PM org.apache.catalina.core.ApplicationContext log
INFO: struts: []: Verifying ModuleConfig for this module