java 时区集默认效果

2022-09-04 08:20:16

按照如何使用JPA和休眠以UTC时区存储日期/时间和时间戳,我想将应用程序默认时区设置为UTC。我的应用程序在linux服务器上的tomcat上运行,与其他一些应用程序一起运行。服务器还有其他运行更多应用程序的tomcat实例。

Timezone.setDefault(tz) 是否会影响同一 tomcat 实例上的其他应用?

它会影响其他 tomcat 实例上的其他应用程序吗?

是否可以仅为应用设置时区?我松散地记得一些关于安全管理器设置的事情,以允许这样做。


答案 1

Java中的默认时区设置有点麻烦。默认情况下,如果设置默认时区,它将影响整个 jvm。但是,如果您使用 SecurityManager 运行,并且不允许当前安全上下文设置默认值,则 TimeZone.setDefault() 方法将改为设置线程本地值(因此在同一线程上运行的任何其他代码都将将此值视为默认值,但 jvm 的其余部分将不受影响)。我不认为有一种方法可以只为你设置默认值“应用程序”,除非你可以将应用程序缩小到特定的线程集合(极不可能)。


答案 2

使用java选项启动您的应用程序服务器会为您完成吗?-Duser.timezone=GMT


推荐