最近,我们的一个Tomcat服务器开始在部署战争文件时遇到问题。我们在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。