Как я устанавливаю часовой пояс в Tomcat для единственного веб-приложения?

Это неизбежно, после того как Вы были программистом, что это произойдет. Если Вы серьезно имеете непредполагаемый усилие или поражаете проблему, где Ваше решение просто не работает затем кодирование остановки и добирается говорящий с Вашим менеджером проектов. Мне всегда нравится брать решения со мной на встречу, проблемой является A, можно сделать x, который займет 3 дня, или мы можем попробовать y, который займет 6 дней. Не делайте выбор сами.

15
задан sk. 24 August 2009 в 22:22
поделиться

5 ответов

Единственный Я нашел способ настроить фильтр и изменить часовой пояс в фильтре

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
        throws IOException, ServletException {
    TimeZone savedZone = TimeZone.getDefault();
    TimeZone.setDefault(webappZone);
    chain.doFilter(request, response);
    TimeZone.setDefault(savedZone);
}

setDefault () изменяет зону для потока. Таким образом, все, что выполняется в потоке внутри фильтра, будет иметь другой часовой пояс по умолчанию. Мы должны вернуть его обратно, потому что поток используется другими приложениями. Вам также необходимо сделать то же самое для ваших методов init () , destroy () и любого другого потока, который вы можете запустить в своем приложении.

Мне пришлось сделать это, потому что сторонняя библиотека предполагает часовой пояс по умолчанию, и у нас нет исходного кода. Это был беспорядок, потому что это меняет часовой пояс журнала, но мы не хотим входить в другое время.

8
ответ дан 1 December 2019 в 02:46
поделиться

Лучший способ - изменить веб-приложение таким образом, чтобы оно принимало явную конфигурацию часового пояса через web.xml вместо использования часового пояса JVM по умолчанию.

0
ответ дан 1 December 2019 в 02:46
поделиться

Установите системную переменную на CATALINA_OPTS = -Duser.timezone = America / Denver

Вы также можете указать CATALINA_OPTS в $ TOMCAT_HOME / bin / catalina.sh или% TOMCAT_HOME % \ bin \ catalina.bat тоже.

Вот список приемлемых часовых поясов.

Источник

7
ответ дан 1 December 2019 в 02:46
поделиться

РЕДАКТИРОВАТЬ: Я ошибался насчет этого. Это правка исправляет это.

Ответ заключается в том, что вы не можете переносимо установить часовой пояс (по умолчанию) для одного веб-приложения. Но если вы используете Java 6 (по крайней мере), класс java.util.TimeZone реализует методы часового пояса по умолчанию getDefault () , setDefault () и setDefault (TimeZone) с использованием наследуемого локального потока. Другими словами, вызов setDefault () влияет только на текущий поток и будущие дочерние потоки.

Поведение не задокументировано в документации Sun Javadocs. Он работает для Java 6 и 5 (см. Выше), но нет никаких гарантий, что он будет работать в более старых или новых Sun JRE. Однако я был бы очень удивлен, если бы Sun решила изменить / вернуться к «глобальной» модели для часового пояса по умолчанию.

8
ответ дан 1 December 2019 в 02:46
поделиться

Посетите SimpleTimeZone . Вы можете создать экземпляр на основе идентификатора часового пояса и использовать его для отображения даты / времени с использованием этого часового пояса. При желании вы можете прочитать этот идентификатор из файла конфигурации конкретного проекта.

0
ответ дан 1 December 2019 в 02:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: