クラス間の相互呼び出しによるtomcatサーバが起動できない原因分析

677 ワード

Tomcatが起動できませんでした.
ログエラー:Causedby:java.lang.StockOverflowError
調べてみると、2つのクラスがお互いに呼出する場合があるので、そのうちの1つはspringに配置されています.また、これらの2つのクラスの呼び出しは現在の別のクラスでこのクラスの実用化属性として呼び出されています.
たとえば:
public class XeditServiceDao extends BaseDao
{
   private XeditXmlManager xxm = new XeditXmlManager();
}

public class XeditXmlManager {
   private XeditServiceDao xsDao = new XeditServiceDao();
}
Xedit ServiceDao類はspringに配置されていますが、tomcatサーバを起動すると、Xedit ServiceDao類の関連属性XeditXml Managerがロードされます.
XeditXml Managerの中でまたXedit ServiceDaoを属性にして、死の循環をもたらして、そのためヒープのオーバーフローの誤りjava.lang.Stock Overflowerをもたらします.
同じように、他のウェブサーバでこのような状況が発生したら、その原因を調べてもいいです.