2012-03-27 6 views
4

How to store date/time and timestamps in UTC time zone with JPA and Hibernate私のアプリケーションのデフォルトタイムゾーンをUTCに設定したいと思います。 私のアプリは、他のアプリと並んでLinuxサーバー上のtomcat上で動作します。 サーバーには、さらに多くのアプリケーションを実行する他のtomcatインスタンスがあります。java Timezone setDefault effects

Timezone.setDefault(tz)は同じTomcatインスタンス上の他のアプリケーションに影響しますか?

他のtomcatインスタンスの他のアプリケーションに影響しますか?

タイムゾーンをアプリ専用に設定することはできますか?これを可能にするためにセキュリティ管理者の設定について覚えています。

答えて

9

javaのデフォルトのタイムゾーン設定はちょっとです。デフォルトでは、デフォルトのタイムゾーンを設定すると、jvm全体に影響します。ただし、SecurityManagerを使用して実行していて、現在のセキュリティコンテキストでデフォルトを設定できない場合、TimeZone.setDefault()メソッドは代わりにスレッドローカルの値を設定します(同じスレッドこの値がデフォルトとして表示されますが、残りのjvmは影響を受けません)。あなたのアプリケーションをスレッドの特定のコレクションに絞り込むことができない限り(おそらくほとんどありません)、あなたのためにデフォルトを設定する方法はないと思います。

+0

詳細な回答ありがとうございます。また、私の問題とは別の解決策を見つけなければならなくなるでしょう... – samz

+0

さらに悪いことに、 'setDefault'の動作はJava 4,5,6のいろいろなバージョンで変わりました。[この回答](http: //stackoverflow.com/q/2176784/642706)を参照してください。 –

2

Javaオプション-Duser.timezone=GMTを使用してアプリケーションサーバーを起動しますか?

+0

独自のアプリケーションサーバーを実行している場合はこれが正解です。そうであってもいなくても、JDBCドライバはDBから特定のデータ型を読み書きするときに、マシンのタイムゾーンを考慮します。トピックのMark Rotteveelの回答のカップルを参照してください:http://stackoverflow.com/a/13431628/516910とhttp://stackoverflow.com/a/14070771/516910 –

+0

私は彼らが同じ結果で終わることを知っていますが、 'GMT'ではなく' UTC'を使用したいと思います。 –