Blocks :
|
|
Duplicate :
|
|
Relates :
|
|
Relates :
|
Pack/unpack method changes default time zone and this isn't documented( at least I didn't find this): 87 public synchronized void pack(JarFile in, OutputStream out) throws IOException { 88 assert(Utils.currentInstance.get() == null); 89 TimeZone tz = (props.getBoolean(Utils.PACK_DEFAULT_TIMEZONE)) 90 ? null 91 : TimeZone.getDefault(); 92 try { 93 Utils.currentInstance.set(this); 94 if (tz != null) TimeZone.setDefault(TimeZone.getTimeZone("UTC")); 95 96 if ("0".equals(props.getProperty(Pack200.Packer.EFFORT))) { 97 Utils.copyJarFile(in, out); 98 } else { 99 (new DoPack()).run(in, out); 100 } 101 } finally { 102 Utils.currentInstance.set(null); 103 if (tz != null) TimeZone.setDefault(tz); 104 in.close(); 105 } 106 } http://ipw83120.uk.oracle.com:8080/source/xref/jdk7u-cpu/jdk/src/share/classes/com/sun/java/util/jar/pack/PackerImpl.java#87 If we call this code concurrently, the original default time zone can be lost and set to UTC. we've already faced with this issue in deploy code: https://bugs.openjdk.java.net/browse/JDK-8066985
|