我在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