服务器安装JDK时,默认会有支持JDK版本对应的时区规则。但是时区规则可能会变化的,那如何保持时区规则是最新的呢?
TZUpdater 工具介绍
提供的 TZUpdater 工具 允许您使用更新的时区数据更新已安装的 Java 开发工具包 (JDK) 和 Java 运行时环境 (JRE) 软件,以适应不同国家/地区的夏令时 (DST) 更改。Oracle 依赖于通过 IANA 的时区数据库公开提供的时区数据。
如果您无法使用 Oracle 最新的 JDK 或 JRE 更新版本,或者如果最新版本上的时区数据不是最新可用的,TZUpdater 工具提供了一种更新时区数据的方法,同时保持其他系统配置和依赖项不变.
TZUpdater 工具用法
TZUpdater 工具用于执行该工具的 JDK/JRE 软件实例。每次执行都会修改 JDK/JRE 软件。要将工具管理到 JDK/JRE 软件的多个实例。
在安装的 JDK/JRE 软件上运行 TZUpdater 工具之前,您必须停止操作系统上的 JDK/JRE 软件的任何正在运行的服务。
使用以下命令运行 TZUpdater 工具:
java -jar tzupdater.jar options
要成功更新时区数据,您应该确保您有足够的权限来修改JDK_HOME /jre/lib或JRE_HOME /lib目录。
如果未指定任何选项,则会显示用法消息。要更新时区数据,请使用-l或-f选项。
| 选项 | 描述 |
|---|---|
-h, --help | |
将用法打印到stdout并退出。如果指定此选项,则其他选项将被忽略。 | |
-V, --version | 打印工具版本、JRE 中的 tzdata 版本以及工具将更新到的 tzdata 版本,然后退出。 |
-l, --location url-link-to-archive-file | 从提供的tzdata.tar.gz包中编译、测试和更新 JRE 时区数据,例如-l https://www.iana.org/time-zones/repository/tzdata-latest.tar.gz. 支持的 URL 协议:http://、https://、file://。如果未提供 URL 链接,该工具将使用位于 的最新 IANA tzdata 包https://www.iana.org/time-zones/repository/tzdata-latest.tar.gz。 |
-f, --force | 强制 tzdata 更新。如果更新到较旧的 tzdata 版本,请使用此选项。 |
-v, --verbose | 向 显示详细消息stdout。 |
手动升级
注意:
1、在安装的 JDK/JRE 软件上运行 TZUpdater 工具之前,您必须停止操作系统上的 JDK/JRE 软件的任何正在运行的服务。
2、要成功更新时区数据,您应该确保您有足够的权限来修改JDK_HOME /jre/lib或JRE_HOME /lib目录。(linux系统:JRE目录要有写权限;windows系统:用管理员身份运行cmd)
3、如果系统上有多个JDK/JRE ,需要将该工具用于每个JDK/JRE中(每个JDK/JRE都要操作一遍)
4、更新成功后,要重新启动此 JDK/JRE 实例上的应用程序服务(如果还没更新,重启下服务器试试)
操作步骤:
1、下载Oracle官方提供的tzupdater.jar包;下载地址
把tzupdater.jar放到java目录bin目录下,比如
“C:\Program Files\JAVA\java-1.8.0-openjdk-1.8.0.201\bin\tzupdater.jar”;
2、查看当前时区数据库版本,以windows为例,用管理员身份运行cmd,切换到tzupdater.jar对应的目录:
java -jar tzupdater.jar -V
3、在线更新,以windows为例,用管理员身份运行cmd,切换到tzupdater.jar对应的目录:(第3种和第4种更新方式任选一种)
java -jar tzupdater.jar -l https://www.iana.org/time-zones/repository/tzdata-latest.tar.gz
如图所示,已经更新成功到了tzdata2021a版本了。
更新后的文件是放在jre/lib/tzdb.dat ,如图所示,它有备份历史的版本。
4、离线更新:要先下载最新的时区数据,下载地址:
以windows为例,用管理员身份运行cmd。切换到tzupdater.jar对应的目录:
java -jar tzupdater.jar -l file:///[path]/tzdata.tar.gz
注:
windows建议放在C盘根目录下,路径目录也不要有中文;
用管理员身份运行cmd(需要写权限);
如上面的命令所示,file后面的/是3个
5、以上执行完后,用第2步的查看当前时区数据库版本命令,查看是否更新成功。
服务自动化升级
思路步骤:
1、设置定时任务(操作系统配置就行),执行tzupdater 更新时区的命令脚本;
2、新开一个时区服务,用来对外提供时区和夏令时规则读取服务,独立部署;
3、在时区服务中,写个同步按钮,用来执行tzupdater 更新时区的命令脚本;
4、在时区服务中,将timeZone数据定时写到自定义的时区表中。提供维护功能,可以自定义新增修改删除timeZone数据。
此思路的好处:
1、其他服务不需要停止服务来更新时间,直接通过调用时区服务的数据,可保证获取到最新的时区数据;
2、自动化的好处,避免了手动维护时区的繁琐,人工介入有引发问题的风险;
3、时区服务和其他业务服务是拆分的,方便未来的扩展。
推荐相关文章
hutool日期时间系列文章
如果你也是看准了Python,想自学Python,在这里为大家准备了丰厚的免费学习大礼包,带大家一起学习,给大家剖析Python兼职、就业行情前景的这些事儿。
一、Python所有方向的学习路线
Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
二、学习软件
工欲善其必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。
三、全套PDF电子书
书籍的好处就在于权威和体系健全,刚开始学习的时候你可以只看视频或者听某个人讲课,但等你学完之后,你觉得你掌握了,这时候建议还是得去看一下书籍,看权威技术书籍也是每个程序员必经之路。
四、入门学习视频
我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。
四、实战案例
光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
五、面试资料
我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
成为一个Python程序员专家或许需要花费数年时间,但是打下坚实的基础只要几周就可以,如果你按照我提供的学习路线以及资料有意识地去实践,你就有很大可能成功! 最后祝你好运!!!