Using system tzdata
Iris Garcia
iag at ribbit.SFBay.Sun.COM
Thu Aug 9 00:08:16 UTC 2007
Hi, Keith.
The timezone information files are owned by the i18n team
(i18n-dev at openjdk.java.net). They should be able to provide you with
guidance.
Thanks,
iris
> Date: Wed, 08 Aug 2007 12:40:08 -0700
> From: Keith Seitz <keiths at redhat.com>
> Subject: Using system tzdata
>
> Hi,
>
> The JRE contains pre-compiled timezone information files. As an OS
> vendor, Red Hat would prefer not to respin or repackage the JRE every
> time tzdata changes somewhere in the world.
>
> In order to facilitate this, we're in the process of modifying our
> tzdata package to include pre-compiled zoneinfo files for use with JREs.
> I have created a patch to the openjdk JRE that would optionally use
> these files instead of the pre-packaged ones in the JRE.
>
> We would really like to solicit advice/comments about how to get
> something like this accepted upstream so that other distros can use this.
>
> Keith
>
>
> --- openjdk/hotspot/src/os/linux/vm/os_linux.cpp.keiths 2007-08-01 10:21:19.000000000 -0700
> +++ openjdk/hotspot/src/os/linux/vm/os_linux.cpp 2007-08-01 10:21:36.000000000 -0700
> @@ -376,6 +376,10 @@
> }
> }
>
> + // Use the system zoneinfo files, if present
> + SystemProperty* sp = Arguments::system_properties();
> + Arguments::PropertyList_add (&sp,
> + "java.zoneinfo.dir", "/usr/share/zoneinfo/java");
> #undef malloc
> #undef getenv
> #undef EXTENSIONS_DIR
> --- openjdk/j2se/src/share/classes/sun/util/calendar/ZoneInfoFile.java.keiths 2007-08-01 12:31:03.000000000 -0700
> +++ openjdk/j2se/src/share/classes/sun/util/calendar/ZoneInfoFile.java 2007-08-01 12:29:44.000000000 -0700
> @@ -1021,10 +1021,18 @@
> byte[] buffer = null;
>
> try {
> - String homeDir = (String) AccessController.doPrivileged(
> + String zi_dir = (String) AccessController.doPrivileged(
> + new sun.security.action.GetPropertyAction("java.zoneinfo.dir"));
> + File dir = null;
> + if (zi_dir != null)
> + dir = new File(zi_dir);
> + if (dir == null || !dir.exists() || !dir.isDirectory()) {
> + String homeDir = (String) AccessController.doPrivileged(
> new sun.security.action.GetPropertyAction("java.home"));
> - final String fname = homeDir + File.separator + "lib" + File.separator
> - + "zi" + File.separator + fileName;
> + zi_dir = homeDir + File.separator + "lib" + File.separator
> + + "zi";
> + }
> + final String fname = zi_dir + File.separator + fileName;
> buffer = (byte[]) AccessController.doPrivileged(new PrivilegedExceptionAction() {
> public Object run() throws IOException {
> File file = new File(fname);
More information about the core-libs-dev
mailing list