2012-03-27 6 views
4

folgende How to store date/time and timestamps in UTC time zone with JPA and Hibernate mag ich meine Anwendung der Standardzeitzone UTC einzustellen. Meine App läuft auf Tomcat auf einem Linux-Server neben einigen anderen Anwendungen. Der Server verfügt über andere Tomcat-Instanzen, die noch mehr Apps ausführen.java Zeitzone setDefault Effekte

Will Timezone.setDefault (tz) wirken sich auf die anderen Anwendungen auf demselben Tomcat-Instanz?

Wird es andere Anwendungen auf anderen Kater Instanzen auswirken?

Ist es möglich, die Zeitzone nur für die App zu setzen? Ich erinnere mich locker an etwas über Sicherheitseinstellungen, um dies zu ermöglichen.

Antwort

9

Die Standard-Zeitzone-Einstellung in Java ist eine Art verrückt. Wenn Sie die Standardzeitzone festlegen, wirkt sich dies standardmäßig auf den gesamten JVM aus. Wenn Sie jedoch mit einem SecurityManager arbeiten und der aktuelle Sicherheitskontext den Standard nicht festlegen darf, legt die TimeZone.setDefault() -Methode stattdessen einen lokalen Thread-Wert fest (also jeden anderen Code, der auf demselben Thread ausgeführt wird) wird diesen Wert als Standard sehen, aber der Rest des jvm wird nicht beeinflusst). Ich denke nicht, dass es eine Möglichkeit gibt, den Standard nur für Ihre "Anwendung" festzulegen, es sei denn, Sie können Ihre Anwendung auf eine bestimmte Sammlung von Threads eingrenzen (höchst unwahrscheinlich).

+0

Danke für die ausführliche Antwort. und auch awwww Mist, werde eine andere Lösung für mein Problem finden müssen ... – samz

+0

Noch schlimmer, das Verhalten von 'setDefault' hat sich mit verschiedenen Versionen von Java 4, 5 und 6 geändert. Siehe [diese Antwort] (http: //stackoverflow.com/q/2176784/642706) für Details. –

2

Möchten Sie Ihren App-Server mit der Java-Option -Duser.timezone=GMT für Sie starten?

+0

Dies ist die richtige Antwort, wenn Sie einen eigenen App-Server betreiben. Ob es Ihnen gefällt oder nicht, Ihr JDBC-Treiber berücksichtigt die Zeitzone Ihres Rechners, wenn er bestimmte Datentypen aus Ihrer Datenbank liest/schreibt. Sehen Sie ein paar von Mark Rotteveels Antworten zum Thema: http://StackOverflow.com/a/13431628/516910 und http://StackOverflow.com/A/14070771/516910 –

+0

Ich weiß, dass sie mit dem gleichen Ergebnis enden, aber Ich würde 'UTC' anstelle von' GMT' verwenden. –