tomcat时区设置问题
June 4th, 2009 Posted in Linux, troubleshooting最近碰到一个很奇怪的问题,两台一模一样的机器,一样的时间,一样的时区,一样的tomcat,一样的代码。但是tomcat在两台机器上获取到的时间就是不一样,不仅不一样,其中一个的tomcat时间跟系统时间还不一致。
最开始试着通过修改catalina.sh把两个tomcat的时区都改为GMT,结果得到的时间还是不一样:
JAVA_OPTS="-mx1600M -Duser.timezone=GMT"
后来把tomcat的时区改为:
JAVA_OPTS="-mx1600M -Duser.timezone=Europe/London"
突然发现这个时候这台tomcat时间与系统时间一向不一致的机器,这个时候tomcat时间突然跟系统时间一致了,而另一台一直直一致的现在却不一致了(系统用的时区是BST,开始改GMT时区时没看出来)。
这个时候我才突然想到,tomcat读取的可能是硬件时间(BIOS时间),而这两台机器很有可能一台设置了使用UTC时间一台设置了不使用UTC时间。遂查看配置文件/etc/sysconfig/clock,果然如此。
修改成一致的设置,重启,果然正常了。
8 Responses to “tomcat时区设置问题”
By YUQUN on Jul 27, 2010
也遇到了这个问题,客户服务器上的时间和tomcat上的时间不一致。应该怎样修改bios啊 是修改那个配置文件么? 麻烦您能把方法发到我的邮箱里可以么?
By myhnet on Jul 28, 2010
文章里面不是讲的很清楚了么?修改catalina.sh(windows应该是catalina.bat)
By YUQUN on Jul 27, 2010
yuqun777@163.com
By aishine0204 on Oct 7, 2010
是由于你的系统注册表里的时区信息丢失了,将时区信息导进注册表即可.
解决办法(windows系统):
到别人的机器上运行regedit
将[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones 这个注册表分支导出为一个文件,(如time.reg)
再将它合并到你的注册表里就行了(直接双击time.reg文件)
By myhnet on Oct 8, 2010
Linux机器,时区设置没有问题啊
By 小吴 on Apr 3, 2014
你好,我修改了tomcat的时区:-Duser.timezone=GMT+08,还是不行。然后你说的系统硬件时间去哪里看呢?
By myhnet on Apr 9, 2014
用这个命令可以读取硬件时间(硬件时间指的是BIOS/CMOS时间)hwclock -r