- 2010-01-20 (水) 22:09
- Unkown
とある古いサーバにインストールされているJDK 6 Update 17をJDK 6 Update 18に更新したらデフォルトのタイムゾーンがJSTからGMTに変わってしまいました。他のサーバでは問題なかったのでこの古いサーバ限定の問題です。
状況を確認するためにサンプルコードを動かして確認しました。
import java.util.Date;
public class DateTest {
public static void main(String[] args) {
System.out.println(new java.util.Date());
}
}
実行してみます。
# /usr/local/java/jdk1.6.0_17/bin/java DateTest Wed Jan 20 21:42:44 JST 2010 # /usr/local/java/jdk1.6.0_18/bin/java DateTest Wed Jan 20 12:42:56 GMT 2010
というようにJDK 6 Update 17ではJSTなのにJDK 6 Update 18だとGMTになってしまいました。JVMのタイムゾーンがGMTになる 追記と同じ原因のようで、/etc/localtime を調べてみたら /usr/share/zoneinfo/Asia/Tokyo と違うものでした。
# ls -al /etc/localtime -rw-r--r-- 1 root root 73 Feb 26 2004 /etc/localtime # ls -al /usr/share/zoneinfo/Asia/Tokyo -rw-r--r-- 2 root root 125 Mar 22 2006 /usr/share/zoneinfo/Asia/Tokyo
というわけで、コピーして直します。
cp -a /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
再び確認します。
# /usr/local/java/jdk1.6.0_17/bin/java DateTest Wed Jan 20 21:49:58 JST 2010 # /usr/local/java/jdk1.6.0_18/bin/java DateTest Wed Jan 20 21:50:07 JST 2010
無事直りました。良かった良かった。
/etc/localtime が食い違ってのは、/etc/localtimeのタイムスタンプが2004-02-26 という古いサーバなので、インストール時に何かミスったか、これまでの運用の中での更新で何かがおきたのかなと思います。ただ、JDK更新したらいきなしWEBアプリが書き込むデータのタイムスタンプが9時間ずれ初めてたのでビックリしました。
コメント:0
トラックバック:0
- このエントリーのトラックバックURL
- http://jfut.integ.jp/2010/01/20/jdk-6-update-18-default-timezone-on-old-server/trackback/
- Listed below are links to weblogs that reference
- 古いサーバでJDK 6 Update 18に更新したらタイムゾーンがJSTからGMTに変わった件と対処法 from ふたつの川うるおう日記






