Java 使用JDK 1.6的应用程序服务器上的时区#setDefault()
如果使用JDK1.6在同一应用服务器上运行的并发应用程序调用了Java 使用JDK 1.6的应用程序服务器上的时区#setDefault(),java,datetime,timezone,Java,Datetime,Timezone,如果使用JDK1.6在同一应用服务器上运行的并发应用程序调用了#setDefault(TimeZone TimeZone),会发生什么情况 正如调用now changes VM wide中所讨论的,这可能会产生可怕的后果 如果您没有管理应用程序服务器,如何确保时区不改变?我的建议是完全忽略默认时区。始终指定您要使用的时区,这样就很难意外地使用对您而不是用户有意义的东西。事实上,我们已经删除了所有默认时区的内容 强制性Joda参考:我还建议使用而不是内置的日期/时间API。防止时区。setDefa
#setDefault(TimeZone TimeZone)
,会发生什么情况
正如调用now changes VM wide中所讨论的,这可能会产生可怕的后果
如果您没有管理应用程序服务器,如何确保时区不改变?我的建议是完全忽略默认时区。始终指定您要使用的时区,这样就很难意外地使用对您而不是用户有意义的东西。事实上,我们已经删除了所有默认时区的内容
强制性Joda参考:我还建议使用而不是内置的日期/时间API。防止
时区。setDefault(…)
在VM范围内产生影响的方法是确保您的安全管理器
不允许应用程序编写user.TimeZone”
系统属性
要了解原因,请查看
现在,依赖Javadoc中没有记录的行为可能有点顽皮。但在这种情况下,我们别无选择。此外,考虑到这种特殊方法的历史,Sun/Oracle工程师不太可能改变其行为。。。再一次。是的,我也建议使用Joda时间,但不幸的是这不可能(在我的情况下)。默认应用程序服务器是否使用
SecurityManager
并避免设置user.timezone
?@chrsk:老实说,我不知道。即使不使用Joda Time,您也可以尝试确保在相关的时候始终指定时区。你能详细介绍一下你的情况吗?