类之间相互调用引起的tomcat服务器无法启动原因分析

Tomcat无法启动:

日志报错:Causedby:java.lang.StackOverflowError

经查发现是因为有两个类存在相互调用的情况,其中一个类在spring中做了配置,而且这两个类的调用都是现在另外的类中将其作为该类的实例化属性来调用。

例如:

public class XeditServiceDao extends BaseDao
{
   private XeditXmlManager xxm = new XeditXmlManager();
}

public class XeditXmlManager {
   private XeditServiceDao xsDao = new XeditServiceDao();
}

XeditServiceDao类在spring中做了配置,但是当我们启动tomcat服务器时,就会加载XeditServiceDao类的相关属性XeditXmlManager,

而XeditXmlManager中又以XeditServiceDao为属性,造成了死循环,因此造成堆溢出错误java.lang.StackOverflowError。

同理,如果其他web服务器出现此类情况,也不妨查一下此类原因。



你可能感兴趣的:(tomcat)