Это может произойти, если код не использует close()
ресурсы БД, такие как Connection
, Statement
и ResultSet
, в блоке finally
после использования, что является довольно распространенной ошибкой для начинающих. БД через некоторое время исчерпает эти ресурсы. Это также может произойти, если код получает соединение с БД только при запуске веб-приложения и использует одно и то же для соединения для остатка времени жизни веб-приложения, а не получает его в момент выполнения запроса SQL. Ресурс БД, который остается открытым слишком долго, рано или поздно истечет.
Я бы также посмотрел на обработку исключений в вашем коде. Вы наверняка должны были получить SQLException
всякий раз, когда возникает эта проблема. Похоже, что код поглощает SQLException
пустым блоком перехвата или блоком перехвата, который не делает ничего, кроме печати его в журнале сервера (который вы, возможно, никогда не читали). Код никогда не должен продолжать поток всякий раз, когда возникает исключение, но вместо этого должным образом обрабатывает исключение, отображая страницу ошибки. Это также распространенная ошибка для начинающих.
В общем, вы можете найти базовый пример правильного подхода в этом ответе: Показать JDBC ResultSet в HTML на странице JSP с использованием шаблона MVC и DAO .
Обратите внимание, что это не имеет никакого отношения к "файлу JAR не работает". Это само по себе абсолютно бессмысленно.