#java #tomcat #war
#java #tomcat #Война
Вопрос:
У меня возникла проблема, когда я попытался развернуть файл WAR в tomcat. Во время процесса автоматической распаковки из tomcat изменялась дата последнего изменения файлов распаковки. Дата распаковки веб-приложения. файлы стали на 12 часов быстрее, и это приводит к нескольким разным ошибкам.
Я попытался распаковать вручную через jar -xvf, дата последнего изменения файлов осталась неизменной. Я также тестировал в локальном tomcat (тот же часовой пояс с dev. env.), ничего не изменилось в дате последнего изменения.
Похоже, проблема с часовым поясом tomcat, могу ли я настроить tomcat, чтобы решить эту проблему? Большое спасибо за любую помощь.
Среда: Tomcat 6 в Linux с часовым поясом GMT-4, установленным на сервере, и tomcat — файл WAR, созданный машиной с установленным часовым поясом GMT 8
Комментарии:
1. Я также сталкиваюсь с этой проблемой. Вы выяснили, почему?
2. нет, мне нужно распаковать и перепаковать WAR на компьютере развертывания, чтобы заставить файл WAR работать.
3. Вы пробовали устанавливать часовой пояс в Tomcat? в tomcat/bin/setenv.bat
-Duser.timezone=America/New_York
в tomcat/webapps/ROOT/classes/system-ext.propertiesuser.timezone=America/New_York
Ответ №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