У меня есть веб-сервис, который взаимодействует с базой данных MySQL, я использовал Hibernate для доступа к данным.В производственной среде я обнаружил, что сервер базы данных закрывает соединение на своей стороне через некоторое время (30 минут), вызывая эту ошибку в моем приложении: org.hibernate.SessionException: Session is closed!
.Я решил использовать hibernate.c3p0
и добавить эти свойства в свой hibernate.cfg.xml
:
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql://xxxxx:xx/xx</property>
<property name="hibernate.connection.username">xxxx</property>
<property name="hibernate.connection.password">xxxx</property>
<property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property>
<property name="show_sql">true</property>
<property name="hibernate.c3p0.acquire_increment">1</property>
<property name="hibernate.c3p0.idle_test_period">10</property>
<property name="hibernate.c3p0.max_size">100</property>
<property name="hibernate.c3p0.max_statements">100</property>
<property name="hibernate.c3p0.min_size">10</property>
<property name="hibernate.c3p0.timeout">15</property>
<property name="c3p0.preferredTestQuery">select 1;</property>
. Чтобы проверить эти свойства в localhost, я создал в своей базе данных новую таблицу с именем testCnx
, содержащую один столбец.и я вставляю значение = 1, и я изменил значение idle_test_period
на 10 секунд, timeout
на 15 секунд и preferredTestQuery
на update testCnx set id=2 where id=1;
.После вызова веб-службы я ждал более 2 минут, но значение в таблице не изменилось.Я хочу знать, является ли hibernate.c3p0
хорошим решением для этой проблемы
Спасибо за ваше время заранее!