Serverabsturz nach Tomcat-Redeployment
Viele von uns, die mit J2EE-Servern, und vor allem dem Tomcat zu tun haben, kennen das Problem. Nachdem zum Beispiel während der Entwicklung die Webapplikation mehrfach redeployed wurde, kommt es desöfteren zu einer OutOfMemory-Exception und der Server schmiert schliesslich ab.
Ursache hierfür ist oft die Verwendung von Cache-Mechanismen und Singleton-Mustern, denn diese Klassen und Objekte werden auch nach dem Redeployment noch oft von außen referenziert. Zu den vermutlichen Übeltätern gehören zum Beispiel Libraries wie: DOM4J, JDBC-DriverManager, Jakarta Commons Logging, Log4J, oder auch Sun’s KeepAliveCache.
Einige dieser verdächtigen Libraries erfahren bereits im Tomcat 5.5 eine Sonderbehandlung, allerdings konnte hiermit das Problem noch nicht ausreichend gelöst werden.
Einen sehr interessanten Artikel und weitere Infos zu diesem immer noch sehr aktuellen Thema findet Ihr hier: Memory leaks where the classloader cannot be garbage collected