2015-02-27 2 views
0

У меня есть приложение Java, которое имеет кластер из двух узлов. Моя цель здесь - убедиться, что все узлы кластера находятся в одном и том же часовом поясе.Java читает старую запись в часовом поясе linux

TimeZone tz = Calendar.getInstance().getTimeZone(); 
String slaveTimeZone = tz.getDisplayName(false, TimeZone.SHORT); 

Код считывает часовой пояс правильно в первый раз, скажем, IST. Теперь я перехожу и меняю символическую ссылку, указывая localtime на CST, но приложение java не забирает обновленный часовой пояс, если я не перезапущу приложение.

Я делаю это правильно? Или я пропускаю шаг?

+0

Какую символическую ссылку на какой файл/каталог вы меняете? – SubOptimal

ответ

0

Если ваше приложение по-прежнему обращается к каталогу, оно может не признать, что существует новый каталог с тем же именем.

Простой пример для оболочки Linux

сессия 1 кд ~/TMP MkDir данные кд данные эхо обув> бар кот бар

выход на сессии 1

foo 

сессия 2

cd ~/tmp 
mv data/ data.old 
mkdir data 
cd data 
echo baz > bar 

выход сессии 2

baz 

обратно сессии 1, мы все еще находятся в директории ~/TMP/данные

cat bar 

выход сессии 1

foo 

Причина. До тех пор, пока ваше приложение использует исходный каталог data, он видит только inodes исходного каталога data. Изменения в новом каталоге data станут видны для вашего приложения (в сеансе 1) только после его выхода (его) data.

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