Tomcat nie ma kontroli nad cyklem życia zasobów JNDI, działa na zasadzie sam sobie utworzyłem sam po sobie i posprzątam. W odniesieniu do puli połączeń, oznacza to, że metoda close() nie jest wywoływana, w czasie startu/restartu serwera. Serwer bazy danych nie zawsze może stwierdzić ze na stronie klienta gniazdo (socket) został zamknięty w trybie pilnym, i utrzymuje otwarte połączenie (zombi connection).
Zombi połączenia zajmują miejsce w wydzielonej puli połączeń GlobalNamingResources co może doprowadzić do jej przepełnienia.
Najprostszym rozwiązaniem jest umieszczenie w konfiguracji serwera Listenera cyklu życia Tomcat, który zamknie połączenia za każdym razem, gdy cykl życiowy serwera zostanie przerwany.
Tworzymy class ServerListener pakujemy go do archiwum .jar , i wrzucamy do katalogu $CATALINA_HOME/lib
ServerListener