|
这是由不同的工具对时间的读取不同引起的,如果.class文件的时间戳比JSP文件的时间戳晚的话,Weblogic Server是不会重编译JSP的。当预编译JSP作为
build
的一部分时,生成环境和运行时环境需要使用同一时区。
当Java类的时间戳中有奇数秒时,这个问题就会出现。例如,一个叫做 "staticJavascript$jsp.java" 的Java文件,它有一个Wed May 28 17:58:33的时间戳。当你用jar
utility
打包该文件时,jar实用工具会将时间戳读取为32秒。而当你用zip
utility 创建一个jar文件时,jar utility 会将时间戳读取为34秒。
e.g. 使用的不同的工具
a) JAR,b) infozip,and c) Winzip。
会有不同的结果:
Jar: 4625 Wed May 28 17:58:32 CDT 2003 jsp/staticJavascript$jsp.java
Infozip: 4625 Wed May 28 17:58:34 CDT 2003 jsp/staticJavascript$jsp.java
Winzip: 4625 Wed May 28 16:58:34 CDT 2003 jsp/staticJavascript$jsp.java
从这个例子可以看到,zip工具往上舍入,而jar工具往下舍入。
另外,在jar 和 zip之间还有另一个不同:夏令时转换的处理。与其他两种工具相比较,Winzip有一小时的偏离。看下面的例子:
C:\struts\webapps>jar cvf usingjar.war jsp
added manifest
adding: jsp/in = 0) out= 0)stored 0%)
adding: jsp/staticJavascript$jsp.classin = 3005) out= 1536)deflated 48%)
adding: jsp/staticJavascript$jsp.javain = 4625) out= 1111)deflated 75%)
adding: jsp/Validate$jsp.classin = 9746) out= 5132)deflated 47%)
adding: jsp/Validate$jsp.javain = 38163) out= 3688)deflated 90%)
C:\struts\webapps>zip -r usinginfozip.war jsp
adding: jsp/ 92 bytes security) stored 0%)
adding: jsp/staticJavascript$jsp.class 92 bytes security) deflated 49%)
adding: jsp/staticJavascript$jsp.java 92 bytes security) deflated 76%)
adding: jsp/Validate$jsp.class 92 bytes security) deflated 47%)
adding: jsp/Validate$jsp.java 92 bytes security) deflated 90%)
[这里使用了Winzip GUI 来创建压缩文件 "usingwinzip.war"。接下来,使用jar 实用工具来解压所有 jar文件。]
C:\struts\webapps>jar -tvf usingjar.war
0 Tue Oct 28 13:42:36 CST 2003 META-INF/
71 Tue Oct 28 13:42:36 CST 2003 META-INF/MANIFEST.MF
0 Wed May 28 17:58:34 CDT 2003 jsp/
3005 Wed May 28 17:58:34 CDT 2003 jsp/staticJavascript$jsp.class
4625 Wed May 28 17:58:32 CDT 2003 jsp/staticJavascript$jsp.java
9746 Wed May 28 17:58:32 CDT 2003 jsp/Validate$jsp.class
38163 Wed May 28 17:58:26 CDT 2003 jsp/Validate$jsp.java
C:\struts\webapps>jar -tvf usinginfozip.war
0 Wed May 28 16:58:36 CDT 2003 jsp/
3005 Wed May 28 17:58:36 CDT 2003 jsp/staticJavascript$jsp.class
4625 Wed May 28 17:58:34 CDT 2003 jsp/staticJavascript$jsp.java
9746 Wed May 28 17:58:34 CDT 2003 jsp/Validate$jsp.class
38163 Wed May 28 17:58:26 CDT 2003 jsp/Validate$jsp.java
C:\struts\webapps>jar -tvf usingwinzip.war
3005 Wed May 28 16:58:36 CDT 2003 jsp/staticJavascript$jsp.class
4625 Wed May 28 16:58:34 CDT 2003 jsp/staticJavascript$jsp.java
9746 Wed May 28 16:58:34 CDT 2003 jsp/Validate$jsp.class
38163 Wed May 28 16:58:28 CDT 2003 jsp/Validate$jsp.java
0 Wed May 28 16:58:36 CDT 2003 jsp/
要注意在JAR 和其他zip 工具比如 Info-ZIP 和 Winzip之间在时间戳上取舍的不同。生成时使用预编译的JSP时,取舍的不同可能会导致问题。要避免这个问题,请使用jar
utility 。如果使用zip utility 创建jar文件的话,要注意编译后的时间戳,并在必要时重设已编译类的时间戳。如果.class文件的时间戳比JSP文件的时间戳晚的话,Weblogic Server是不会重编译JSP的。还要注意时区问题和夏令时变化。例如,当预编译JSP作为
build
的一部分时,生成环境和运行时环境需要使用同一时区。
|