wake-up-neo.com

So ändern Sie die Server-Zeitzone von Tomcat 7

Meine Anwendung wurde in einem Debian-VPS in den USA in Los Angeles bereitgestellt. Code wie new SimpleDateFormat("yyyy-MM-dd HH:mm").format(new Date()) gibt also die aktuelle Uhrzeit von America/Los Angeles zurück.

Kann ich einige Einstellungen in der Tomcat-Konfigurationsdatei vornehmen (server.xml oder catalina.sh oder was?), Damit die aktuelle Uhrzeit eine bestimmte Zeitzone zurückgibt, wie GMT + 8 oder Asia/Taipei ???

13
Sam Su

Bei all den verschiedenen Orten, an denen Sie Zeitzonen einstellen können, ist es im Allgemeinen immer am besten, die Zeitzone explizit festzulegen, wenn Sie mit Zeiten arbeiten. Ja, Ihr Server befindet sich in Los Angeles, aber wo sind Ihre Benutzer? 

Der explizite Umgang mit Zeitzonen macht Ihre Anwendung etwas komplexer (aber auch korrekter, weniger überraschend, schwieriger zu testen). Als Nächstes sollten Sie Tomcat (Java) explizit mitteilen, auf welche Zeitzone Ihre Serveruhr eingestellt ist. Achtung: Es gibt einige Stufen, um dies festzulegen: Stellen Sie Ihre Serveruhr auf UTC ein, konfigurieren Sie Ihr Server-Betriebssystem als PST und teilen Sie Java die Zeitzone mit, auf der sich Ihr Server befindet, z. In setenv.sh do CATALINA_OPTS="$CATALINA_OPTS -Duser.timezone=America/Los_Angeles" (oder wie auch immer Ihre Zeitzone ist), um Java für Ihre Zeitzone zu konfigurieren. 

Testen, spülen, wiederholen, bis die Konfiguration zufrieden ist. Aber entscheiden Sie sich explizit für alle Ebenen, auf die Sie Ihre Hände legen können. Das Auflösen der Zeitzone ist eher eine Java- als eine Tomcat-Funktion.

Für die Wartbarkeit Ihrer Software ist es sehr wichtig, always Zeiten in UTC zu speichern. Wenn Sie jemals in Ihrer lokalen Zeitzone speichern, wird das Berechnen einer anderen Zeitzone zu einem Chaos - Sommerzeitumstellung, Änderung der Zeitzonen in verschiedenen Regionen der Welt usw. 

Also: Stellen Sie Ihren Server auf UTC, rufen Sie die aktuelle Uhrzeit ab und prüfen Sie, ob sie korrekt ist. Zu Anzeigezwecken können Sie die lokale Zeitzone (des Benutzers) (z. B. PST) verwenden, für Speicherung und Berechnung wird jedoch UTC dringend empfohlen.

16
Olaf Kock

Tomcat's persönliche Zeitzone würde in seinem Startskript in einer Form wie folgt angegeben:

-Duser.timezone=GMT
13
M S Parmar

Wenn Sie es von Eclipse aus ändern möchten, klicken Sie auf Ausführen -> Konfiguration ausführen -> Apache Tomcat -> Tomcat-Server -> VM. Argumente add -Duser.timezone = America/Montreal

1
Purushothaman

Fügen Sie in Linux einfach die folgende Zeile in setenv.sh hinzu, die sich unter CATALINA_HOME/bin/.CATALINA_OPTS="-Duser.timezone=Asia/{your zone}" befindet.

1
Root

Für Windows - Gehen Sie zu catalina.bat und fügen Sie die Eigenschaft CATALINA_OPTS hinzu (unter Start).

: doStart shift set CATALINA_OPTS = -Duser.timezone = America/Denver

0
Aparajita