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的時區是東八區時區


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM