Wie ändere ich die Server-Zeitzone von Tomcat 7?

9

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

Kann ich einige Einstellungen in der Tomcat-Konfigurationsdatei ( server.xml oder catalina.sh oder was?) vornehmen, so dass die aktuelle Zeit eine bestimmte Zeitzone wie GMT + 8 oder Asien zurückgibt / Taipeh ???

    
Sam Su 28.02.2015, 02:12
quelle

5 Antworten

12

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

Da der explizite Umgang mit Zeitzonen Ihre Anwendung etwas komplexer macht (aber auch korrekter, weniger überraschend, schwieriger zu testen), wäre die nächstbeste Lösung, tomcat (java) explizit mitzuteilen, auf welche Zeitzone Ihre Serveruhr eingestellt ist. Vorsicht: Es gibt einige Ebenen, um dies zu setzen: Stellen Sie Ihre Serveruhr auf UTC ein, konfigurieren Sie Ihr Server-Betriebssystem als PST und informieren Sie java dann über die Zeitzone, auf der sich Ihr Server befindet, z. in setenv.sh do CATALINA_OPTS="$CATALINA_OPTS -Duser.timezone=America/Los_Angeles" (oder was auch immer Ihre Zeitzone ist), um Java für Ihre Zeitzone zu konfigurieren.

Testen, spülen, wiederholen bis zufrieden mit der Konfiguration. Aber machen Sie es zu einer ausdrücklichen Wahl auf allen verschiedenen Ebenen, die Sie in die Hand nehmen können. Das Auflösen der Zeitzone ist eher eine Java-Funktion als eine Tomcat-Funktion.

Es ist sehr wichtig für die Wartbarkeit Ihrer Software, immer Zeiten in UTC zu speichern. Wenn Sie jemals in Ihrer lokalen Zeitzone speichern, wird die Berechnung jeder anderen Zeitzone ein Durcheinander sein - denken Sie an die Sommerzeit, die Änderung der Zeitzonen in verschiedenen Regionen der Welt usw.

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

    
Olaf Kock 28.02.2015, 08:19
quelle
11

Tomcat's persönliche Zeitzone wird in seinem Startskript wie folgt angegeben:

%Vor%     
M S Parmar 21.05.2015 11:35
quelle
1

Wenn Sie es von Eklipse ändern möchten ... Run - & gt; Konfiguration ausführen - & gt; Apache Kater - & gt; Tomcat Server - & gt; VM-Argumente hinzufügen -Duser.timezone = America / Montreal

    
Purushothaman 18.05.2016 18:48
quelle
1

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

    
Root 11.07.2016 07:31
quelle
0

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

: doStart Verschiebung setze CATALINA_OPTS = -Duser.timezone = Amerika / Denver

    
Aparajita 10.05.2016 10:03
quelle

Tags und Links