Java Timezone setDefault effects

после Как сохранить дату и время и временные метки в часовом поясе UTC с JPA и Hibernate Я хочу установить часовой пояс вашего приложения по умолчанию в UTC. Мое приложение работает на tomcat на сервере linux рядом с некоторыми другими приложениями. На сервере есть другие экземпляры tomcat, которые запускают еще больше приложений.

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

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

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

Ответ 1

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

Ответ 2

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