zoukankan      html  css  js  c++  java
  • tomcat时间与系统时间不一致问题

    我在部署应用到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的时区是东八区时区

  • 相关阅读:
    排序算法——堆排序 转载
    排序之冒泡排序
    排序之直接插入排序(Straight Insertion Sort)
    浅谈C++之冒泡排序、希尔排序、快速排序、插入排序、堆排序、基数排序性能对比分析
    插入法==冒泡排序
    排序的算法
    排序]
    Linux下zoopkeeper的安装和启动
    Linux下zoopkeeper的安装和启动
    Linux下切换使用两个版本的JDK
  • 原文地址:https://www.cnblogs.com/ywxbbbbb/p/9766060.html
Copyright © 2011-2022 走看看