最近,我们的一台 Tomcat 服务器开始在部署 WAR 文件时遇到问题。我们在 webapps 目录中有一个现有版本的 WAR 以及未打包的版本。当我们将新版本的 WAR 文件放入 webapps 目录时,它不会解压新的 WAR 并且应用程序会死掉。如果我删除旧的解压版本,有时它会解压新版本。其他时候我必须重新启动 Tomcat 才能重新启动。
在 catalina 日志中,我发现以下错误:
WARNING: Error during context [/pos] destroy
java.lang.StackOverflowError
at sun.nio.cs.UTF_8$Encoder.encodeLoop(UTF_8.java:575)
at java.nio.charset.CharsetEncoder.encode(CharsetEncoder.java:544)
at java.lang.StringCoding$CharsetSE.encode(StringCoding.java:342)
at java.lang.StringCoding.encode(StringCoding.java:378)
at java.lang.String.getBytes(String.java:812)
at java.io.UnixFileSystem.getBooleanAttributes0(Native Method)
at java.io.UnixFileSystem.getBooleanAttributes(UnixFileSystem.java:228)
at java.io.File.isDirectory(File.java:723)
at org.apache.catalina.startup.ExpandWar.delete(ExpandWar.java:360)
at org.apache.catalina.startup.ExpandWar.delete(ExpandWar.java:361)
at org.apache.catalina.startup.ExpandWar.delete(ExpandWar.java:361)
at org.apache.catalina.startup.ExpandWar.delete(ExpandWar.java:361)
at org.apache.catalina.startup.ExpandWar.delete(ExpandWar.java:361)
at org.apache.catalina.startup.ExpandWar.delete(ExpandWar.java:361)
at org.apache.catalina.startup.ExpandWar.delete(ExpandWar.java:361)
最后一行重复了几百次。
然后还有其他错误。我很乐意将它们粘贴进去,但我怀疑第一个错误最有可能是罪魁祸首。
任何线索这意味着什么?
一旦我删除旧的解包并在必要时重新启动,一切似乎都很好。
我们在 Red Hat Linux 2.6.18 上运行 Tomcat 5.5.23。