|
|
|
Play 1.4 и реконнект к БД
|
|||
|---|---|---|---|
|
#18+
Неправильно, конечно, но простейший способ наступить на грабли - сделать "что-нибудь" в статическом блоке. Код статического блока отработает в процессе загрузки класса, которая обязательно будет при развёртывании контекста и, если "что-нибудь" кинет исключение - контейнер напишет то, с чего началась ветка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2016, 18:14 |
|
||
|
Play 1.4 и реконнект к БД
|
|||
|---|---|---|---|
|
#18+
Blazkowiczdimonz80Хотя, судя по всему, не поможет. Пили свою инициализацию коннекшн пула. Пример в первой ссылке Почему не поможет? Вроде то что нужно. Залочит все потоки, пока Оракл не подымется. Разве нет? Play сам по себе не нуждается в сервлет-контейнере и сам обеспечивает взаимодействие с HTTP при помощи jBoss Netty. У плея есть понятие "приложения" то есть т.е. некоторый контекст, через который обеспечивается основной функционал. Для приложения есть механизм плагинов, обеспечивающих доп функционал. Плагин реализует интерфейс PlayPlugin, в том числе и функцию onApplicationStart, которая выполняется при старте пириложения. Взаимодействие с БД реадизовано через плагин ( см тут DBPlugin При старте приложения выполняется DBPlugin.onApplicationStart() который дергает DB.setConfigurations() который дергает DBConfig.configure() в котором то и происходит попытка зацепиться за БД и инициализация пула соединений Приложение опционально может быть запаковано в WAR и размещено в сервлет-контейнере (как у автора). Тогда все описанное выше безобразие происходит при инициализации сервлета Под спойлером DBConfig.configure() - виновник торжества. Пытается прицепиться дважды стачало просто через Connection, потом черер пул. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158. 159. 160. Решить проблему можно 3 способами: сложным, простым и очень простым. Сложный: пересобрать свой собственный Play с нужными правками и с ним пересобрать WAR Простой: выкинуть play.db.DB и запилить ru.migelle.DB с инициализацией пула как вам надо (как примерно сделать есть под спойлером) + добавить ленивость. И зарефакторить play.db.DB -> ru.migelle.DB Очень простой: уже советовали изменить приоритет/зависимости загрузки сервисов. что там у вас: init.d, systemd, windows, что-то еще? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2016, 06:48 |
|
||
|
Play 1.4 и реконнект к БД
|
|||
|---|---|---|---|
|
#18+
dimonz80Простой: выкинуть play.db.DB и запилить ru.migelle.DB с инициализацией пула как вам надо (как примерно сделать есть под спойлером) + добавить ленивость. И зарефакторить play.db.DB -> ru.migelle.DB Спасибо. Стало немного понятно куда копать. Буду пробовать. dimonz80Очень простой: уже советовали изменить приоритет/зависимости загрузки сервисов. что там у вас: init.d, systemd, windows, что-то еще? Это не подходит, т.к. томкэт с ораклом живут на разных машинах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2016, 07:27 |
|
||
|
Play 1.4 и реконнект к БД
|
|||
|---|---|---|---|
|
#18+
dimonz80Простой: выкинуть play.db.DB ещё проще - выкинусть весь фреймворк. Который лезет в базу без единой строчки кода по вызову. А потом при неудавшейся попытке не повторяет попытку инициализации. Хотя в его пуле вроде бы эта возможность есть. Если уж разрабы решили сделать AutoConnect, то надо было сделать это свойство для новичков возле инициализации драйвера. Чтобы его можно было сменить. И третье, обеспечить возможность работать без пула. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2016, 09:53 |
|
||
|
Play 1.4 и реконнект к БД
|
|||
|---|---|---|---|
|
#18+
Petro123dimonz80Простой: выкинуть play.db.DB ещё проще - выкинусть весь фреймворк. Который лезет в базу без единой строчки кода по вызову convention over configuration. Использовать встроенные примочки для БД никто не заставляет. Хошь, делай свой пул. Делов то. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2016, 10:06 |
|
||
|
Play 1.4 и реконнект к БД
|
|||
|---|---|---|---|
|
#18+
dimonz80Petro123пропущено... ещё проще - выкинусть весь фреймворк. Который лезет в базу без единой строчки кода по вызову convention over configuration. Использовать встроенные примочки для БД никто не заставляет. Хошь, делай свой пул . Делов то. Оценивать что данный фреймворк по данной фиче - Г., мне тоже никто не мешает. Ешо позиционировали как Супер фреймворк для новичков. ... Ты не ответил. Почему он валится при отсутствии коннекта и нужно перегружать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2016, 10:11 |
|
||
|
Play 1.4 и реконнект к БД
|
|||
|---|---|---|---|
|
#18+
dimonz80convention over configuration зато умные слова мы писать умеем. Удачи аффтару! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2016, 10:13 |
|
||
|
Play 1.4 и реконнект к БД
|
|||
|---|---|---|---|
|
#18+
Petro123dimonz80пропущено... convention over configuration. Использовать встроенные примочки для БД никто не заставляет. Хошь, делай свой пул . Делов то. Оценивать что данный фреймворк по данной фиче - Г., мне тоже никто не мешает. Ешо позиционировали как Супер фреймворк для новичков. ... Ты не ответил. Почему он валится при отсутствии коннекта и нужно перегружать? Валится при старте вот поэтому валится когда недоступен только оракл вот тоэтому Код: java 1. 2. можно в application.conf прописать db.default.pool.testConnectionOnCheckout=false. Но проблемы полностью не решит, тк есть еще случай когда ребутается и оракл и томкат и томкат поднимается быстрее оракла. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2016, 11:26 |
|
||
|
Play 1.4 и реконнект к БД
|
|||
|---|---|---|---|
|
#18+
авторможно в application.conf прописать db.default.pool.testConnectionOnCheckout=false. Затупил! Надо так Код: java 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2016, 11:28 |
|
||
|
Play 1.4 и реконнект к БД
|
|||
|---|---|---|---|
|
#18+
dimonz80Но проблемы полностью не решит, тк есть еще случай когда ребутается и оракл и томкат и томкат поднимается быстрее оракла. 2 вопроса: - У меня выше сайт на JNDI в GlassFish. Если оракл стартует позже АппСервер....или выпал из сети на пол часа, а потом появился. То нужно ли мне будет перегружать Веб приложение? (я позже протестирую) - Тот же самый вопрос при использовании банального JSP+jdbc .... Тот случай выше что вы привели - СТАНДАРТНЫЙ случай для веб приложений. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2016, 11:33 |
|
||
|
Play 1.4 и реконнект к БД
|
|||
|---|---|---|---|
|
#18+
Petro123dimonz80Но проблемы полностью не решит, тк есть еще случай когда ребутается и оракл и томкат и томкат поднимается быстрее оракла. 2 вопроса: - У меня выше сайт на JNDI в GlassFish. Если оракл стартует позже АппСервер....или выпал из сети на пол часа, а потом появился. То нужно ли мне будет перегружать Веб приложение? (я позже протестирую) - Тот же самый вопрос при использовании банального JSP+jdbc .... Тот случай выше что вы привели - СТАНДАРТНЫЙ случай для веб приложений. Скорее всего нет. Поток свалится с эксепшном, а сервер приложений будет жить спокойно дальше. Чего доказать-то пытаешься? Что древняя версия Play не очень? Ну Ок. Убелил. Я разбирал конкретный случай для конкретной версии конкретного фреймворка со ссылкой на исходники, из которой вроде как понятно, почему при старте валится приложение если нет соединения с БД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2016, 11:44 |
|
||
|
Play 1.4 и реконнект к БД
|
|||
|---|---|---|---|
|
#18+
dimonz80Скорее всего нет. Поток свалится с эксепшном, а сервер приложений будет жить спокойно дальше. ОК. Без Play работает всё отлично. dimonz80Чего доказать-то пытаешься? Что древняя версия Play не очень? Ну Ок. Убелил. Работа программиста такая. Программа должна работать как себе представляет программист. Чтобы тем на 2 страницы не было. Ничего личного) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2016, 11:50 |
|
||
|
Play 1.4 и реконнект к БД
|
|||
|---|---|---|---|
|
#18+
Petro123dimonz80Скорее всего нет. Поток свалится с эксепшном, а сервер приложений будет жить спокойно дальше. ОК. Без Play работает всё отлично. dimonz80Чего доказать-то пытаешься? Что древняя версия Play не очень? Ну Ок. Убелил. Работа программиста такая. Программа должна работать как себе представляет программист. Чтобы тем на 2 страницы не было. Ничего личного) Пытался помочь, не выходя за рамки вводных данных. Работаем с тем, что есть, как говорится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2016, 12:00 |
|
||
|
Play 1.4 и реконнект к БД
|
|||
|---|---|---|---|
|
#18+
dimonz80, а в последней версии там как с этим? Не в курсе? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2016, 12:10 |
|
||
|
Play 1.4 и реконнект к БД
|
|||
|---|---|---|---|
|
#18+
Petro123dimonz80, а в последней версии там как с этим? Не в курсе? При старте тоже отваливается если БД недоступна))) Если БД пропадает после старта, то ничего страшного. Ругается ексепшнами пока не переконнектится. Собственный пул делается в пару строк. Для доп базы на Pervasive SQL, ктоторая переодически бывает в отключке сделал вот так ( на скале правда) Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. Используется так же как и обычный play.api.db.DB Код: java 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2016, 12:26 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=39318529&tid=2123661]: |
0ms |
get settings: |
8ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
180ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
57ms |
get tp. blocked users: |
1ms |
| others: | 243ms |
| total: | 530ms |

| 0 / 0 |
