ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

tomcat时间与系统时间不一致问题

2021-05-17 15:32:33  阅读:198  来源: 互联网

标签:catalina java tomcat Asia etc 时间 一致 时区


我在部署应用到centos系统上的tomcat服务器中运行,发现操作系统的时间和tomcat中的访问日志的时间与系统时间不一致,但是查看当前操作系统的时区也是CST时区(中国标准时区)。

查看系统的时区:

root@localhost:~# date +"%Z %z"

CST +0800

如果系统时间不对,centos执行cp /usr/share/zoneinfo/Asia/Shanghai  /etc/localtime 修改时区

 

解决方法一:

修改catalina.sh文件

查找catalina.sh文件路径: find / -name "catalina.sh"

 

在文件的开头添加如下内容:
export JAVA_OPTS="$JAVA_OPTS -Duser.timezone=Asia/shanghai",重启tomcat

但是,有的时候通过方法一还是解决不了java程序时区问题,java程序读取时间还是不对,甚至System.getProperty("user.timezone")都读不到时区信息。主要原因是我们在安装JDK之后发现时间不对才去修改的系统时区,此时jdk已经默认使用系统修改之前的那个时区,已经改不回来了,删掉jdk重装也没用。

java -XshowSettings   展示java配置

 

 

解决方法二:

就是修改/etc/profile文件,在文件的末尾添加 export TZ='Asia/Shanghai',然后使用命令source /etc/profile使其生效即可。

 

总结:

java程序在初始化时区的时候,如果没有指定JVM参数-Duser.timezone=GMT+08,java程序就会默认读取操作系统的时区来初始化java程序的时区。

为了保证java程序在启动时加载正确的默认时区:

1、需要将系统的时区改正确

2、还需要将硬件时钟的系统时钟校准(执行命令hwclock --systohc --localtime)

3、修改配置文件中的时区参数

4、在/etc/profile文件末尾添加:export TZ='Asia/Shanghai

5、修改tomcat安装目录下的bin目录下的catalina.sh脚本,添加JVM参数JAVA_OPTS="${JAVA_OPTS} -Duser.timezone=GMT+08",来保证Tomcat的时区是东八区时区

 

 

转载:https://www.cnblogs.com/ywxbbbbb/p/9766060.html

标签:catalina,java,tomcat,Asia,etc,时间,一致,时区
来源: https://www.cnblogs.com/cangcat/p/14777044.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有