admin 管理员组

文章数量: 1086019


2024年4月24日发(作者:企业网站如何优化)

Java日志时间与Linux系统时间相差一小时解决方案

一、 分析

2007年10月分,夏令时曾经做更改,2007年与之前发布的jdk版本均有此问题,2007年后

发布的jdk版本不会出现此bug。一线版本jdk为1.5是

2004年发布

在10.78.228.102上已测试通过,时区更新工具在文档的最后。

参考资料:/cn/technologies/java/

时区更新下载:

/technetwork/java/javase/downloads/

二、 描述

模拟一线的情况成功,与一线的情况相同,在入夏令时和出夏令时会出现时间不能自动调整

的问题。

三、 解决步骤

1、修改时区文件

使用root用户更改 /etc/sysconfig/clock

TIMEZONE="Asia/Tehran"

UTC="yes"

DEFAULT_TIMEZONE="Asia/Tehran"

文件描述:TIMEZONE="Asia/Tehran" 表示时区设置为Iran的时区

UTC="yes" 表示启用UTC时间,这样jdk才可以从系统获取正确的时间,必须启用

DEFAULT_TIMEZONE="Asia/Tehran" 默认时区

2、更新jdk时区信息

使用 更新jdk的时区信息,注意此时必须要停止所有可能使用jdk的进程,

否则会导致升级失败,建议重启系统后升级,保证升级成功

1、下载到系统中

2、解压

unzip tzupdater-1_3_

3、验证版本信息(注意大小写)

java -jar –V

如果输出:The Java runtime doesn''t have time zone data (zi directory).

或者

tzupdater version 1.3.42-b02

JRE time zone data version: tzdata2005i

Embedded time zone data version: tzdata2011k

JRE time zone data 的版本是2007以前的,则表示时区信息没有升级到最新,可以继续升级

操作

4、升级jdk时区信息

java -jar –u

没有任何输出则升级成功

5、测试升级是否成功,无任何输出则升级成功

java -jar –t

没有任何输出,则zone data文件验证通过

6、可检查升级后时区版本

java -jar –V

输出

tzupdater version 1.3.42-b02

JRE time zone data version: tzdata2011k

Embedded time zone data version: tzdata2011k

则表示升级成功。

3.保证以上步骤没有错误后,调整系统时间,重启操作系统,启动MOS5200系统。检查日

志是否与操作系统时间一致。如果时间一致,升级成功。

升级碰到的一些问题

1. 升级后验证版本时输出

tzupdater version 1.3.42-b02

JRE time zone data version: tzdata2005i

There's no tzdata available for this Java runtime.

而前面操作没有报错,这是因为你的jdk还有进程在访问,导致升级失败,重启操作系

统后执行之前操作就可以升级成功了。

2. 升级后系统时间跟日志时间相差3:30

因为jdk没有获取到正确的时区信息,给jboss的启动文件

/opt/netwatcher/pm4h2/app/opt/jboss-report/bin/中添加启动参数

set JAVA_OPTS=%JAVA_OPTS% -=%PROGNAME%

-ne=Asia/Tehran

具体位置加在62行左右,不能再if分支里,保证一定会执行这句。

重启web容器后就可以获取到正确时区,日志时间会跟随夏令时一起跳变。

3. 测试时输出

The Java runtime doesn''t have time zone data (zi directory).

表示没有升级上去。


本文标签: 升级 时间 系统 没有 重启