У меня есть приложение Java, которое зависит от даты / времени системы, чтобы проверить наличие новых и старых сообщений электронной почты.
Проверяя журнал приложений Java, я обнаружил, что часовой пояс сервера изменился. Это привело к тому, что приложение перестало выполнять свою работу.
В чем может быть причина такого резкого изменения часового пояса сервера? Как я могу предотвратить такие проблемы в будущем.
Я использую сервер Ubuntu 8.04.
Проверяет ли ваше приложение время, проверяя время Unix (time_t, секунды с начала эпохи), или оно проверяет только время, выраженное человеком, без учета часового пояса?
В последнем случае, я боюсь, вы допустили ошибку в коде. Часовой пояс можно установить и изменить для каждого процесса, так же просто, как изменение переменной среды TZ; пытаться
export TZ=BST
date
export TZ=EST
date
Обратите внимание, что это переменная среды и, следовательно, наследуется дочерними элементами запущенного процесса. Если процесс java перезапускается кем-то, у кого TZ установлено на то, чего вы не ожидали, и ваш файл запуска не заставляет TZ, тогда java будет работать с неожиданным часовым поясом.
TZ ни в коем случае не единственный способ установить часовой пояс; Я хотел упомянуть об этом, чтобы показать вам, что Unix спроектирован так, чтобы часовой пояс был удобен для вас, во многом как приглашение оболочки или ваш PATH. Если вам нужно, чтобы процесс имел определенное представление о часовом поясе, вам нужно убедиться, что он устанавливает его при запуске.