2012-03-27 2 views
4

How to store date/time and timestamps in UTC time zone with JPA and Hibernate Я хочу установить часовой пояс для моего приложения по умолчанию в UTC. Мое приложение работает на tomcat на сервере linux рядом с некоторыми другими приложениями. На сервере есть другие экземпляры tomcat, в которых запущено еще больше приложений.java Timezone setDefault effects

Может ли Timezone.setDefault (tz) повлиять на другие приложения на одном экземпляре tomcat?

Будет ли это влиять на другие приложения на других экземплярах tomcat?

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

ответ

9

Настройка часового пояса по умолчанию в java является отвратительной. по умолчанию, если вы установите часовой пояс по умолчанию, это повлияет на весь jvm. однако, если вы работаете с SecurityManager, а текущему контексту безопасности не разрешено устанавливать значение по умолчанию, то метод TimeZone.setDefault() вместо этого установит значение thread (так что любой другой код, работающий на том же потоке будет видеть это значение как значение по умолчанию, но остальная часть jvm не будет затронута). я не думаю, что есть способ установить значение по умолчанию только для вас «приложение», если вы не можете сузить приложение до определенной коллекции потоков (крайне маловероятно).

+0

Спасибо за подробный ответ. а также awwww crap, собираюсь найти другое решение моей проблемы ... – samz

+0

Хуже того, поведение 'setDefault' изменилось с различными версиями Java 4, 5 и 6. См. [этот ответ] (http: //stackoverflow.com/q/2176784/642706). –

2

Запустил бы ваш сервер приложений с опцией java -Duser.timezone=GMT сделать это за вас?

+0

Это правильный ответ, если вы используете собственный сервер приложений. Нравится вам это или нет, ваш драйвер JDBC будет учитывать часовой пояс вашего компьютера, когда он читает/записывает определенные типы данных из вашей базы данных. См. Пару ответов Марка Роттевеля по теме: http://stackoverflow.com/a/13431628/516910 и http://stackoverflow.com/a/14070771/516910 –

+0

Я знаю, что они в конечном итоге имеют тот же результат, но Я бы использовал 'UTC', а не' GMT'. –

Смежные вопросы