tomcat时区设置问题

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时区设置问题”

  1. YUQUN — July 27, 2010 @ 8:47 pm

    也遇到了这个问题,客户服务器上的时间和tomcat上的时间不一致。应该怎样修改bios啊 是修改那个配置文件么? 麻烦您能把方法发到我的邮箱里可以么?

    • myhnet — July 28, 2010 @ 6:20 am

      文章里面不是讲的很清楚了么?修改catalina.sh(windows应该是catalina.bat)

  2. YUQUN — July 27, 2010 @ 8:47 pm

    yuqun777@163.com

  3. aishine0204 — October 7, 2010 @ 11:59 am

    是由于你的系统注册表里的时区信息丢失了,将时区信息导进注册表即可.
    解决办法(windows系统):
    到别人的机器上运行regedit
    将[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones 这个注册表分支导出为一个文件,(如time.reg)
    再将它合并到你的注册表里就行了(直接双击time.reg文件)

  4. 小吴 — April 3, 2014 @ 5:25 pm

    你好,我修改了tomcat的时区:-Duser.timezone=GMT+08,还是不行。然后你说的系统硬件时间去哪里看呢?

    • myhnet — April 9, 2014 @ 11:16 am

      用这个命令可以读取硬件时间(硬件时间指的是BIOS/CMOS时间)

      hwclock -r

Leave a Reply