TimeZone # setDefault () на сервере приложений с JDK 1.6 - PullRequest
1 голос
/ 20 апреля 2010

Что произойдет, если #setDefault(TimeZone timezone) вызывается параллельным приложением, запущенным на том же сервере приложений с JDK 1.6

Как обсуждено в TimeZone #setDefault изменяется в JDK 6 , теперь вызов изменяетсяНа всей ВМ это может привести к ужасным последствиям.

Если вы не администрируете сервер приложений, как убедиться, что TimeZone не изменился?

Ответы [ 2 ]

3 голосов
/ 20 апреля 2010

Мое предложение будет полностью игнорировать часовой пояс по умолчанию. Всегда указывайте часовой пояс, который вы хотите использовать, что значительно затрудняет случайное использование чего-то значимого для вас, а не для пользователя. Действительно, для Noda Time мы удалили все, что является часовым поясом по умолчанию.

Обязательный справочник Joda: я бы также предложил использовать Joda Time вместо встроенных API даты / времени.

0 голосов
/ 20 апреля 2010

Чтобы предотвратить действие TimeZone.setDefault(...) на виртуальную машину, убедитесь, что ваш SecurityManager НЕ дает приложениям разрешение на запись системного свойства "user.timezone".

Чтобы понять почему, посмотрите на исходный код .

Теперь, возможно, немного капризно полагаться на поведение, которое не описано в Javadoc.Но в этом случае у нас мало выбора.Кроме того, учитывая историю этого конкретного метода, инженеры Sun / Oracle вряд ли изменят его поведение ... еще раз.

...