我在CentOS服务器上运行大型Grails应用程序。Tomcat上的Grails应用程序在部署后几天忘记时区
服务器设置为EST(GMT - 5)。
当我部署应用程序(作为战争文件)时,应用程序的日期和时间将是正确的几天,然后突然该应用程序变得困惑,并认为它是格林尼治标准时间,而不是美国东部时间。
这会导致域对象上的日期不正确,还会导致Quartz作业在错误的时间运行。例如:
我们有每天6:15 16:00运行,并通过电子邮件 发出报告工作。这发生在 部署后几天的正确时间,然后突然日常工作在1:15 AM 开始运行。
日期字段中显示相克:formatDate将显示GMT,而不是EST的 但时/分/秒日期本身不 变化,所以每次在保存记录的日期最终被 推转发五个小时。
当前运行的Grails 2.4.4,的Apache Tomcat/8.0.15,OpenJDK的1.8.0版本,但我们经历了Grails的各种版本2.3.x版本,Tomcat的7和Java 7
相同的行为我还不确定这是Grails问题还是Tomcat问题。任何想法如何解决它将不胜感激。
你可以排除,你的代码中的“全局”状态(例如'TimeZone.setDefault()')的东西搞乱了吗? – cfrick 2015-02-23 12:38:46
这就是问题所在!在应用程序的一个很少使用的区域有一个错误的TimeZone.setDefault()。 请将您的评论更改为答案,我会将其关闭。谢谢。 – MT1 2015-02-23 14:43:19