Najprawdopodobniej albo
- Otwieranie gniazd i nie zamykanie ich. Z biegiem czasu liczba otwartych gniazd staje się zbyt duża i aplikacja ulega awarii.
- Otwierasz zbyt wiele gniazd jednocześnie. Może dlatego, że masz mnóstwo wątków.
Domyślam się, że to numer 1. Dokładnie sprawdź swój kod i upewnij się, że zamknąłeś wszystkie obiekty Connection i obiekty ResultSet.
Jeśli trafiasz na punkt 2, możesz rozważyć użycie mniejszej liczby wątków (po pewnym momencie zbyt duża liczba wątków przyniesie więcej szkody niż pożytku) lub użycie puli połączeń, takiej jak c3p0 który utworzy tylko określoną liczbę połączeń i pozwoli wątkom je udostępniać. Używanie c3p0 jest ogólnie dobrym pomysłem i powinno również umożliwić szybsze wykrycie #1.
Trzecią opcją jest użycie abstrakcji wyższego poziomu, takiej jak JPA lub JDO, która zajmie się zarządzaniem połączeniami za Ciebie.