一尘不染

如何在Tomcat7.0.35中修复org.apache.catalina.startup.ContextConfig.populateSCIsForCacheEntry中的StackOverflowError

tomcat

我们正在运行旧版本的Tomcat,并且新的Web应用程序导致了这样的堆栈跟踪

Caused by: java.lang.StackOverflowError
    at org.apache.catalina.startup.ContextConfig.populateSCIsForCacheEntry(ContextConfig.java:2269)
    at org.apache.catalina.startup.ContextConfig.populateSCIsForCacheEntry(ContextConfig.java:2269)
    at org.apache.catalina.startup.ContextConfig.populateSCIsForCacheEntry(ContextConfig.java:2269)

这已在https://bz.apache.org/bugzilla/show_bug.cgi?id=53871中提及,并且更高版本(例如Tomcat
8)似乎没有受到影响。

我怎样才能解决这个问题?


阅读 435

收藏
2020-06-16

共1个答案

一尘不染

由于无法升级Tomcat,因此我需要一种解决此问题的方法。

事实证明, Tomcat 7.0.47 具有相同的问题,但报告效果更好。在本地运行时,报告向我显示了以下内容:

Caused by: java.lang.IllegalStateException: Unable to complete the scan for 
annotations for web application [/api] due to a StackOverflowError. 
Possible root causes include a too low setting for -Xss and illegal cyclic inheritance dependencies. 
The class hierarchy being processed was 
[org.bouncycastle.asn1.ASN1Boolean->org.bouncycastle.asn1.DERBoolean-
>org.bouncycastle.asn1.ASN1Boolean]

找到有害的jar文件后,将其添加到catalina.properties文件中,如下所示:

org.apache.catalina.startup.ContextConfig.jarsToSkip=bcprov*.jar

在旧版本的Tomcat中,这似乎已解决了该问题。

2020-06-16