Мне пришлось пройти через множество решений, и моя проблема была решена, но через некоторое время соединение прервалось или прервалось. Через 2 3 дня я получил решение, которое решило мою проблему.
Многие решения предлагают использовать autoReconnect = true , но когда я прошел через документы. В источнике я увидел следующий текст, описывающий параметр autoReconnect:
Использование этой функции не рекомендуется, поскольку она имеет побочные эффекты, связанные с состоянием сеанса и согласованностью данных
Когда я посмотрел в коде Hibernate. Базовый механизм подключения Hibernate не поддерживает переподключение, необходимо использовать пул соединений H3C0 (который сам не всегда поддерживал переподключение).
Но как только кто-то использовал H3C0, поведение по умолчанию, по-видимому, заключается в том, что для обработки запроса, если соединение разорвано, пользователь видит ошибку, но, по крайней мере, он повторно подключается для следующего запроса. Я предполагаю, что одна ошибка лучше, чем бесконечные ошибки, но все же не так хороша, как ноль ошибок. Оказывается, нужен параметрtestConnectionOnCheckout, который не рекомендуется в документации, поскольку тестирование соединения перед запросом может привести к снижению производительности. Конечно, во-первых, программное обеспечение должно работать, а во-вторых, оно должно работать быстро.
Итак, чтобы подвести итог, получить соединение с «работой» (которое я определяю как обработку сброшенных соединений путем повторного соединения без ошибки): в «hibernate.cfg.xml»:
<!-- hibernate.cfg.xml -->
<property name="c3p0.min_size">5</property>
<property name="c3p0.max_size">20</property>
<property name="c3p0.timeout">1800</property>
<property name="c3p0.max_statements">50</property>
<!-- no "connection.pool_size" entry! -->
Затем создайте файл «c3p0.properties», который должен находиться в корне пути к классам (т. Е. Нет способа переопределить его для определенных частей приложения):
c3p0.properties
c3p0.testConnectionOnCheckout = истина
Если это решение не работает, то существует больше возможных решений: -
1. Add
<property name="connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property>
Also dont forget to place the c3p0-0.9.1.jar in the classpath.
2. Instead of using that c3p0.properties file, couldn't you just use this property in your hibernate.cfg.xml:
<property name="hibernate.c3p0.validate">true</property>
Also checkout the last post on this page:
https://forum.hibernate.org/viewtopic.php?p=2399313
If all these not work than go [more][1] and read in detail
[1]: http://hibernatedb.blogspot.in/2009/05/automatic-reconnect-from-hibernate-to.html