Search code examples
javatomcattimezonedefaultutc

java Timezone setDefault effects


following How to store date/time and timestamps in UTC time zone with JPA and Hibernate I want to set my application default time zone to UTC. My app runs on tomcat on a linux server along side some other apps. The server has other tomcat instances that run even more apps.

Will Timezone.setDefault(tz) affect the other apps on the same tomcat instance?

Will it affect other apps on other tomcat instances?

Is it possible to set the timezone only for the app? I loosely remember something about security manager settings to allow this.


Solution

  • The default timezone setting in java is kind of screwy. by default, if you set the default timezone, it will affect the entire jvm. however, if you are running with a SecurityManager, and the current security context is not allowed to set the default, then the TimeZone.setDefault() method will instead set a thread local value (so any other code running on the same thread will see this value as the default, but the rest of the jvm will be unaffected). i don't think there is a way to set the default just for your "application" unless you can narrow your application to a specific collection of threads (highly unlikely).