Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема с пулом соединения к базе данных, Нет реконекта 
V
    Опции темы
kkin
Дата 10.8.2010, 11:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 54
Регистрация: 9.8.2010

Репутация: нет
Всего: нет



Добрый день форумчане.
В общем суть проблемы в том, что мое приложение работает под управлением TomCat 6 
Создаю пул соединения. Все работает какое то время, но потом через некоторое время ну допустим гдето около 5 часов 
когда в коде выполняется вот это 
Код

    env=(Context)new InitialContext().lookup("java:comp/env");
            pool=(DataSource)env.lookup("jdbc/MySQLDB");


Вылетает следующая ошибка 
Код

Cannot get a connection, pool error Timeout waiting for idle object at 

в context.xml  прописано следующие 

Код

   <Resource name="jdbc/MySQLDB" auth="Container" type="javax.sql.DataSource" 
     username="way4" password="way4" driverClassName="com.mysql.jdbc.Driver"
     url="jdbc:mysql://127.0.0.1/paymentDB?autoReconnect=true"
     maxActive="100" maxIdle="30" maxWait="10000"
     characterEncoding="cp1251"
     autoReconnect="true"
     defaultAutoCommit="true"
     testOnBorrow="true"
     testWhileIdle="true"
     timeBeatweenEvictionRunsMillis="10000"
     minEvictableIdleTimeMillis="60000"
     validationQuery="Select 1"
     />


Как говорят старописатели это все правильно работало под TomCat 5 но в шестом отваливается по таймауту 

Что можете посоветовать. Буду рад любой помощи

PM   Вверх
Skipy
Дата 10.8.2010, 12:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 487
Регистрация: 24.8.2006
Где: Москва, Россия

Репутация: 2
Всего: 16



А это точно отвалившееся соединение с базой, а не исчерпавшиеся соединения в пуле? Я бы сообщение интерпретировал именно так. MySQL что в это время говорит - есть у него открытые соединения или нет?


--------------------
С уважением,
Евгений aka Skipy
www.skipy.ru
PM MAIL WWW ICQ   Вверх
kkin
Дата 10.8.2010, 12:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 54
Регистрация: 9.8.2010

Репутация: нет
Всего: нет



Давайте начнем с того что мне проект достался понаследству  и пытаюсь в нем разобраться 
Цитата
А это точно отвалившееся соединение с базой, а не исчерпавшиеся соединения в пуле

Я так полагаю если бы закончились соединения в пуле были  бы другие сообщения. А тут именно что по таймауту.
Да и отваливается это если допустим не трогать проект гдето 5 часов потом не конектиться к пулу (((  



Цитата

MySQL что в это время говорит - есть у него открытые соединения или нет?

Сори за тупой вопрос: Где смотреть ? 




Это сообщение отредактировал(а) kkin - 10.8.2010, 12:29
PM   Вверх
Vasay
Дата 10.8.2010, 12:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2097
Регистрация: 8.3.2006

Репутация: 18
Всего: 73



kkin, 

А за эти 5 часов были обращения к базе? А то если обращений нет, MySQL закрывает соединения через какое-то время.  Пул  можно настроить, чтоб раз в какое-то время пинговал БД, для того что бы она не отвалилась.


--------------------
Придумать идеальную защиту от дурака невозможно, дураки, наудивление, изобретательны.
PM MAIL   Вверх
kkin
Дата 10.8.2010, 12:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 54
Регистрация: 9.8.2010

Репутация: нет
Всего: нет



Vasay, В том том то и прикол что коннекты были и запросы отрабатывались, но в моем класе когда пытаюсь создать конект пишет вот такую ерунду. 

Цитата

Пул  можно настроить, чтоб раз в какое-то время пинговал БД, для того что бы она не отвалилась.

Я слышал что можно НО КАК ???? 

по сути вот это должно отвечать за реконект 

Цитата

autoReconnect="true"
     defaultAutoCommit="true"
     testOnBorrow="true"
     testWhileIdle="true"
     timeBeatweenEvictionRunsMillis="10000"
     minEvictableIdleTimeMillis=" 
     validationQuery="Select 1"
 


Это сообщение отредактировал(а) kkin - 10.8.2010, 12:36
PM   Вверх
Vasay
Дата 10.8.2010, 12:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2097
Регистрация: 8.3.2006

Репутация: 18
Всего: 73



Цитата(kkin @  10.8.2010,  12:36 Найти цитируемый пост)
Я слышал что можно НО КАК ???? 

по сути вот это должно отвечать за реконект 


По идет - да. Судя по настройке, должен пинговать запросом  "Select 1" . 


--------------------
Придумать идеальную защиту от дурака невозможно, дураки, наудивление, изобретательны.
PM MAIL   Вверх
kkin
Дата 10.8.2010, 12:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 54
Регистрация: 9.8.2010

Репутация: нет
Всего: нет



Но эта зараза этого не делает )))) 

PM   Вверх
kkin
Дата 12.8.2010, 07:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 54
Регистрация: 9.8.2010

Репутация: нет
Всего: нет



Доброго времени суток.
Спасибо всем за помощь, данную проблему решил следующим образом. 
Уточную что это все решаемо для Tomcat 6/

В конфигурационный файл Tomcat  wer.xml добавил следующие 
Код

<resource-ref>
      <description>DB Connection</description>
      <res-ref-name>jdbc/MySQLDB</res-ref-name>
      <res-type>javax.sql.DataSource</res-type>
      <res-auth>Container</res-auth>
  </resource-ref>



В context.xml прописал так 
Код

<Context  path="/TestServlet" docBase="TestServlet"
        debug="5" reloadable="true" crossContext="true">

   <Resource name="jdbc/MySQLDB" auth="Container" type="javax.sql.DataSource" 
     username="way4" password="way4" driverClassName="com.mysql.jdbc.Driver"
     url="jdbc:mysql://127.0.0.1/paymentDB?autoReconnect=true"
     maxActive="100" maxIdle="30" maxWait="10000"
     characterEncoding="cp1251"
     autoReconnect="true"
     defaultAutoCommit="true"
     testOnBorrow="true"
     testWhileIdle="true"
     timeBeatweenEvictionRunsMillis="10000"
     minEvictableIdleTimeMillis="60000"
     validationQuery="Select 1"
     />



В общем наверное благодаря этому проблема решилась)) 
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема »


 




[ Время генерации скрипта: 0.0549 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.