2014-02-05 2 views
0

Я ищу решение для ниже проблемы, если у вас есть идеи, пожалуйста, поделитесь , когда я пытаюсь запустить один запрос из java (jboss server), я получаю следующее исключение (не часто).Исключение связи в MySQL

Cause: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: 
The last packet successfully received from the server was43200 seconds ago. The last packet sent successfully to the server was 43200 seconds ago, 
which is longer than the server configured value of 'wait_timeout'. 
You should consider either expiring and/or testing connection validity before use in your application, 
increasing the server configured values for client timeouts, or using the Connector/J connection property 'autoReconnect=true' 
to avoid this problem.* 

Если соединение простаивает, оно закрывается MySQL. в этом случае Java предоставит Can not write: broken pipe "или аналогичное исключение , но в этом случае соединение не простое. Он работает, поэтому MySQL не закрывает его, но Java ждет результата запроса и не может его получить в течение 12 часов, так что он показывает «таймаут» исключение

ответ

2

вы должны использовать пул соединений, который управляет этими вещами для вас, смотрите c3po, основная идея вы делаете фиктивный запрос, чтобы сохранить связь живых периодически

+0

на самом деле я использует NanoPoolDataSource уже ... если я иду с фиктивным запросом, это то, что не вызовет каких-либо других проблем, таких как трафик – Karthick

+0

нет, это единственный запрос, который не возвращает никаких данных, и вы запускаете его как ежечасно. –

+0

. Я не понимаю, что такое фиктивный запрос здесь. я должен создать пустую таблицу и начать получение данных таблицы в цикле. не могли бы вы привести несколько примеров. – Karthick

Смежные вопросы