web-dev-qa-db-ja.com

Tomcat 7のサーバータイムゾーンを変更する方法は?

私のアプリケーションは、米国ロサンゼルスのDebian vpsにデプロイされました。したがって、new SimpleDateFormat("yyyy-MM-dd HH:mm").format(new Date())のようなコードは、アメリカ/ロサンゼルスの現在の時刻を返します。

Tomcatの設定ファイル(server.xmlまたはcatalina.shまたは何?)現在の時刻を取得するには、GMT + 8またはAsia/Taipeiのような指定されたTimeZoneを返します

15
Sam Su

タイムゾーンを設定できるさまざまな場所すべてで、時間を処理するときにタイムゾーンを明示的に設定することは(一般に)常に最善です。はい、サーバーはロサンゼルスにありますが、ユーザーはどこにいますか?

タイムゾーンを明示的に処理すると、アプリケーションが多少複雑になりますが(よ​​り正確で、驚くほど少なく、テストも難しくなります)、次にベストなのは、Tomcat(Java)にサーバークロックが設定されているタイムゾーンを明示的に知らせることです。注意:これを設定するにはいくつかのレベルがあります:サーバークロックをUTCに設定し、サーバーOSをPSTに設定してから、Javaサーバーがオンになっているタイムゾーン、たとえばsetenv.sh 行う CATALINA_OPTS="$CATALINA_OPTS -Duser.timezone=America/Los_Angeles"(またはタイムゾーンは何でも)を設定して、タイムゾーンにJavaを設定します。

構成に満足するまで、テスト、すすぎ、繰り返します。ただし、実際に設定できるさまざまなレベルで明示的に選択してください。タイムゾーンの解決は、Tomcatの機能よりもむしろJavaです。

ソフトウェアのメンテナンス性のために、常に UTCで時間を保存することは非常に重要です。ローカルタイムゾーンに保存する場合、他のタイムゾーンを計算するのは面倒です-夏時間、世界のさまざまな地域のタイムゾーンの変更などを考える.

サーバーをUTCに設定し、現在の時刻を取得して、正しいかどうかを確認します。表示のために、(ユーザーの)ローカルタイムゾーン(PSTなど)を使用できますが、保存と計算にはUTCを強くお勧めします。

17
Olaf Kock

Tomcatの個人のタイムゾーンは、スタートアップスクリプトで次のような形式で指定されます。

-Duser.timezone=GMT
14
M S Parmar

Eclipseから変更する場合...実行->実行構成-> Apache Tomcat-> Tomcatサーバー-> VM arguments add -Duser.timezone = America/Montreal

1
Purushothaman

Linuxでは、setenv.shにあるCATALINA_HOME/bin/に次の行を追加するだけです。 CATALINA_OPTS="-Duser.timezone=Asia/{your zone}"

1
Root

Windowsの場合:catalina.batに移動し、CATALINA_OPTSプロパティを追加します(開始)。

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

0
Aparajita