Mamy posiadające wiele MemoryLeaks (znaleziono w catalina.out), podczas przeładowywania kontekst.Tomcat ServletContextListener.contextDestroyed nie nazywa
Aby oczyścić te wątki, stworzyłem implementację ServletContextListener.
Sposób contextInitialized()
powodzeniem wywołana, gdy tworzony jest kontekst, bo widzę wpisy dziennika.
Ale metoda contextDestroyed()
nie nazywa się tak mój kod porządki nie jest wywoływany. Jakieś pomysły, dlaczego tak się dzieje?
powinienem realizować innego interfejsu, aby być zauważonym, gdy potrzebuje kontekstu być przeładowane?
public class MyContextListener implements ServletContextListener {
private static final Logger log = Logger.getLogger(MyContextListener.class);
@Override
public void contextDestroyed(final ServletContextEvent arg0) {
MyContextListener.log.info("destroying Servlet Context");
//Do stuff
MyContextListener.log.info("Servlet Context destroyed");
}
@Override
public void contextInitialized(final ServletContextEvent arg0) {
try {
MyContextListener.log.info("Creating Servlet Context");
//Do stuff
} finally {
MyContextListener.log.info("Servlet Context created");
}
}
}
Tomcat wywołuje javax.servlet.ServletContextListener.contextDestroyed(), gdy aplikacja internetowa jest zatrzymana (jeśli nie byłaby to poważna usterka). Jakie masz dowody, że nie jest ona miano? –
Tylko Logfiles i wynikające MemoryLeaks-ostrzeżenia. Proszę spojrzeć na realizację. – Mirko
Wtedy coś w kodzie jest uszkodzony ponieważ Tomcat zawsze wywołuje contextDestroyed() Metody zarejestrowanych ServletContextListeners gdy aplikacja internetowa jest zatrzymany. Czas aby umieścić kod na swojej ServletContextListener oraz związanych z ekstraktami z bali. –