|
|
|
Hibernate JPA re-connect
|
|||
|---|---|---|---|
|
#18+
Конечно, если что, найду сам, но всё же, если знаете "с верха головы"... Как автоматически реконнектится к БД? В приложении всё на JPA (в hibernate-реализации), т.е. сам практически не управляешь всем этим процессом, всё на автомате. Но если что -- соединение рвётся и навсегда. Надо перезапускать программу. Логично предположить, что должен быть предусмотрен какой-то автоматический механизм восстановления соединения. Нашёл пока какой-то: hibernate.connection.autoReconnect=true но пока не знаю, что там к чему. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2013, 21:47:40 |
|
||
|
Hibernate JPA re-connect
|
|||
|---|---|---|---|
|
#18+
Зависит от пула содеинений (DataSource). В JEE лучше всего настраивать пул на сервере. В пуле настраивается превалидация соединений. Если пул обнаруживает ошибку, то он пытается пересоздать соединение, не выкидывая ошибок. Пул внутри hibernate лучше не использовать. Он нужен больше для тестовых целей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2013, 22:01:24 |
|
||
|
Hibernate JPA re-connect
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, Не понял нифига из твоих посылов. На каком сервере? У меня обычное приложение, демон. Почему пул внутри Hib нельзя использовать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2013, 11:52:13 |
|
||
|
Hibernate JPA re-connect
|
|||
|---|---|---|---|
|
#18+
MasterZivНе понял нифига из твоих посылов. Бывает. MasterZivНа каком сервере? У меня обычное приложение, демон. В Java "обычное приложение" это .war модуль, который хостится в контейнере (сервере). Всё остальное имеет смысл указывать и описывать более детально. JPA это тоже часть JEE, которая обычно работает внутри JEE контейнера. MasterZivПочему пул внутри Hib нельзя использовать? Там c3p0. На него были как-то нарекания. Можно поискать в гугле. Например тут пишут про http://www.databasesandlife.com/automatic-reconnect-from-hibernate-to-mysql/ c3p0.testConnectionOnCheckout=true Покажите свой конфиг. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2013, 12:52:55 |
|
||
|
Hibernate JPA re-connect
|
|||
|---|---|---|---|
|
#18+
BlazkowiczMasterZivНе понял нифига из твоих посылов. Бывает. MasterZivНа каком сервере? У меня обычное приложение, демон. В Java "обычное приложение" это .war модуль, который хостится в контейнере (сервере). Всё остальное имеет смысл указывать и описывать более детально. JPA это тоже часть JEE, которая обычно работает внутри JEE контейнера. MasterZivПочему пул внутри Hib нельзя использовать? Там c3p0. На него были как-то нарекания. Можно поискать в гугле. Например тут пишут про http://www.databasesandlife.com/automatic-reconnect-from-hibernate-to-mysql/ c3p0.testConnectionOnCheckout=true Покажите свой конфиг. Ладно, спасибо за помощь, я всё это автор"В Java "обычное приложение" это .war модуль, который хостится в контейнере (сервере). Всё остальное имеет смысл указывать и описывать более детально. JPA это тоже часть JEE, которая обычно работает внутри JEE контейнера." уже понял, и понял, что мне надоело рыться в ворохе этих спецификаций, и интеграции ещё одного модуля (коннекшн пула) я уже не выдержу. Времени нет. Сделал просто и ясно -- при сбое приложение тупо перестартовывает с нуля, повторяет всё инициализацию. (естественно, JVM не рестартует). В общем, особенно ничего не теряется в смысле производительности -- всё равно надо переконнекчиваться к БД. Контекста особенно никакого в приложении нет, так что ничего не теряется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2013, 13:19:01 |
|
||
|
Hibernate JPA re-connect
|
|||
|---|---|---|---|
|
#18+
Кстати, вот: Код: plaintext 1. 2. 3. 4. 5. 6. Т.е. эта сволочь и пул имеет, и autoReconnect=true поняла, но нифига не переконнекчивается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2013, 15:38:54 |
|
||
|
Hibernate JPA re-connect
|
|||
|---|---|---|---|
|
#18+
MasterZivКстати, вот: Код: plaintext 1. Кстати, я об этом писал выше. MasterZiv Код: plaintext 1. Т.е. эта сволочь и пул имеет, и autoReconnect=true поняла, но нифига не переконнекчивается. Вы бы не чурались заглядывать в мануал. А там, между прочим, написано RTFMhibernate.connection.<propertyName> - Pass the JDBC property <propertyName> to DriverManager.getConnection(). То есть он просто передаёт это свойство в JDBC драйвер. А использует это свойство, на сколько я понимаю, только MySQL. Для чего использует - можно найти в мануале MySQL. Всё в том же мануале можно почитать и про c3p0 http://docs.jboss.org/hibernate/orm/3.3/reference/en/html/session-configuration.html C3P0 is an open source JDBC connection pool distributed along with Hibernate in the lib directory. Hibernate will use its org.hibernate.connection.C3P0ConnectionProvider for connection pooling if you set hibernate.c3p0.* properties. If you would like to use Proxool, refer to the packaged hibernate.properties and the Hibernate web site for more information. Исходя из чего сделать вывод, что нужно вам указать hibernate.c3p0.testConnectionOnCheckout=true Возможно и некоторые другие свойства, которые стоит поискать в мануале для c3p0. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2013, 16:02:11 |
|
||
|
Hibernate JPA re-connect
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, Спасибо за всё. Но я пока не использую c3p0. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2013, 17:28:23 |
|
||
|
Hibernate JPA re-connect
|
|||
|---|---|---|---|
|
#18+
Однако, чтобы добить тему. Может кому-то и будет полезно. http://dev.mysql.com/doc/refman/5.0/en/connector-j-reference-configuration-properties.html и http://stackoverflow.com/questions/667289/why-does-autoreconnect-true-not-seem-to-work autoReconnect... If enabled the driver will throw an exception for a queries issued on a stale or dead connection, which belong to the current transaction, but will attempt reconnect before the next query issued on the connection in a new transaction. ... Т.е. вместо одного ожидаемого (мною в частности) поведения "крутись как хочешь, а мой запрос выполни", они реализуют поведение "сейчас не удалось, но в следующий раз мы не оплошаем". Они правы, что, чтобы реализовать ожидаемое мною поведение, приложение должно быть к этому готово -- должно особым образом обрабатывать транзакции, а именно -- один запрос, одна транзакция. Мне лично вариант, реализованный в драйвере MySQL и так бы не подошёл. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2013, 17:33:51 |
|
||
|
Hibernate JPA re-connect
|
|||
|---|---|---|---|
|
#18+
MasterZivСпасибо за всё. Но я пока не использую c3p0. А что же вы тогда используете, интересно знать. Если c3p0 используется в хибере по-умолчанию? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2013, 17:51:20 |
|
||
|
Hibernate JPA re-connect
|
|||
|---|---|---|---|
|
#18+
BlazkowiczMasterZivСпасибо за всё. Но я пока не использую c3p0. А что же вы тогда используете, интересно знать. Если c3p0 используется в хибере по-умолчанию? Не понял. Проверю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2013, 21:01:51 |
|
||
|
Hibernate JPA re-connect
|
|||
|---|---|---|---|
|
#18+
А как проверить, что используется ? Отдельно библиотеки (JAR) c3p0 у меня нет, в библиотеках hiber-а классов его тоже не нашёл. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2013, 21:12:02 |
|
||
|
Hibernate JPA re-connect
|
|||
|---|---|---|---|
|
#18+
MasterZivА как проверить, что используется ? Отдельно библиотеки (JAR) c3p0 у меня нет, в библиотеках hiber-а классов его тоже не нашёл. Хм. Может я ошибся. Завтра исходники посмотрю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2013, 22:07:33 |
|
||
|
Hibernate JPA re-connect
|
|||
|---|---|---|---|
|
#18+
Да, действительно, у хибернейта сейчас реализован свой примитивный пул в DriverManagerConnectionProvider. c3p0 был дефолтным, вероятно, только в версиях 2.x Поэтому единственный способ добится желаемого поведения, это таки добавить реализацию пула в проект. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2013, 10:06:36 |
|
||
|
Hibernate JPA re-connect
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, Спасибо. Не, ну уж на фиг. Оставим так. Тем более, что логика так лучше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2013, 15:12:03 |
|
||
|
Hibernate JPA re-connect
|
|||
|---|---|---|---|
|
#18+
Делал такую штуку, но задачу нельзя назвать тривиальной. Тоже для процесса демона который перелопачивает кучу данных. 1) Пул соединений с возможностью восстановления. C3P0 действительно имеет проблемы, я использовал BoneCp. Он и пинговать соединение может, и переустонавливает при ошибках. Но тоже по принципу "сейчас не получилось, но вот в следующий раз..." 2) Все Exception от базы данных транслируются в 2 типа: recoverable/unrecoverable. Например, потерю сетевого соединения или таймаут рассматриваем как восстановимые. Идея взята из Spring, но их транслятор модифицирован для разбора на 2 такие категории. 3) Вызовы к методам которые работают с базой обернуты в блок который ловит exception и в случае восстановимого ждет некоторое время и пытается вызвать метод повторно. Если после нескольких попыток все еще ошибка, бросаем "все пропало" дальше... Это сделано как Guice Interceptor. Естественно, метод который пытаемся вызвать несколько раз должен быть без сторонних эффектов в случае rollback. Система получилась пуленепробиваемой. Можно выдернуть сетевой кабель или перегрузить SQL сервер - ругается в логи, но как только соединение восстанавливается продолжает работу как ни в чем не бывало. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2013, 21:55:35 |
|
||
|
Hibernate JPA re-connect
|
|||
|---|---|---|---|
|
#18+
Весь этот геморой с реконектами уходит если собирать такие приложения в Тануки http://wrapper.tanukisoftware.com/doc/english/download.jsp Грузит приложения как сервисы и перегружает приложения если сбои по сети. По вашему описанию у вас микрософт на сетке, так что пользуйте тануки как сервис - все потом в автомате если даже ошибки валятся после каждого второго запроса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2013, 04:37:33 |
|
||
|
|

start [/forum/topic.php?fid=59&gotonew=1&tid=2128918]: |
0ms |
get settings: |
16ms |
get forum list: |
30ms |
check forum access: |
6ms |
check topic access: |
6ms |
track hit: |
83ms |
get topic data: |
25ms |
get first new msg: |
15ms |
get forum data: |
6ms |
get page messages: |
103ms |
get tp. blocked users: |
3ms |
| others: | 341ms |
| total: | 634ms |

| 0 / 0 |
