jetty跟tomcat中,war包解压缩的差别

jetty和tomcat中,war包解压缩的差别

jetty中处理war包解压的代码是:org.eclipse.jetty.util.resource.JarResource。使用JarInputStream来读取war文件,JarInputStream是首先处理可选的META-INF/MANIFEST.MF文件,也就是说getNextJarEntry方法不可能处理META-INF/MANIFEST.MF文件了,因此jetty会在处理完所有的JarEntry后,自己处理META-INF/MANIFEST.MF文件。但是,这样做的后果就是,不能设置解压出来的META-INF/MANIFEST.MF文件的最后修改时间。


tomcat中处理war包解压的代码:org.apache.catalina.startup.ExpandWar。使用JarFile来读取war文件,这样可以获得war中所有的JarEntry,不需要自己去处理META-INF/MANIFEST.MF文件。

 

显然,tomcat的做法更合理一些,其保证了解压出来的文件具有和war中文件一样的最后修改时间。

jetty跟tomcat中,war包解压缩的差别jetty跟tomcat中,war包解压缩的差别jetty跟tomcat中,war包解压缩的差别