powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Play 1.4 и реконнект к БД
25 сообщений из 41, страница 1 из 2
Play 1.4 и реконнект к БД
    #39317507
Migelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть микроприложение написанное на play-1.4.3 и работающее под tomcat-ом
Все, что делает - это принимает пост-запрос и отправляет его в процедуру БД (oracle)
Все работает, но есть одна проблема:
Если при старте приложения БД еще не работает(а оракл запускается всяко дольше), то томкэт пишет Error listenerStart и приложение больше не подымается. Если БД перезапустить во время работы то приложение также перестанет работать, пока его не перезапустишь.

Есть ли возможность сделать что-то типа lazy-коннекта и reconnect к БД?
...
Рейтинг: 0 / 0
Play 1.4 и реконнект к БД
    #39317512
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Migelle,

Воткните пул соединений с БД. И настройте в нем валидацию. Пул будет пересоздовать подключения. Покажите код работы с базой. Play это ведь Web фреймверк. Какое он вообще имеет отношение к вопрос? Или там ORM встроен?
...
Рейтинг: 0 / 0
Play 1.4 и реконнект к БД
    #39317535
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MigelleЕсть ли возможность сделать что-то типа lazy-коннекта и reconnect к БД?
странно админские проблемы тащить в код приложения.
У меня тоже на сайте оракл дольше стартует, но:
- перегружаю хостинг я раз в 2 года
- оракл каждый час не перегружают
- операционка сначала грузит оракл а потом томкат
MigelleЕсть ли возможность сделать что-то типа lazy-коннекта и reconnect к БД?
можно. Но опять таки юзверь ждать часики или сообщение будет?
Или ему экран затемнить с мессагой Ждите? ))
...
Рейтинг: 0 / 0
Play 1.4 и реконнект к БД
    #39317833
Migelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123- операционка сначала грузит оракл а потом томкат
У меня это разные машины.
Petro123Но опять таки юзверь ждать часики или сообщение будет?
Там нет юзверей вообще. Там железяки общаются, они подождут.
...
Рейтинг: 0 / 0
Play 1.4 и реконнект к БД
    #39317842
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Migelle,
программист?
Покажи код где у тебя ошибка.
Т.к. при синхронном POST ответа та машина не дождётся и все сообщения потеряются.
Слишком много вариантов решения.
Migelle. Там железяки общаются, они подождут.
каким образом железяка ждёт и накапливает свои желания?
...
Рейтинг: 0 / 0
Play 1.4 и реконнект к БД
    #39317844
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Migelle,
делай оракл доступным 24х7
...
Рейтинг: 0 / 0
Play 1.4 и реконнект к БД
    #39317850
Migelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BlazkowiczВоткните пул соединений с БД. И настройте в нем валидацию.
Пул настроен, но где там настроить валидацию? Ничего подобного в доке не нашел.

BlazkowiczПокажите код работы с базой.
Вот конфигурация из application.conf

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
db.default.driver=oracle.jdbc.driver.OracleDriver
db.default.url=jdbc:oracle:thin:@192.168.1.1:1521:oracle
db.default.user=user
db.default.pass=user_password
# Connections pool configuration :
db.pool.timeout=1000
db.pool.maxSize=30
db.pool.minSize=2



Вызов происходит так
Код: java
1.
2.
3.
        CallableStatement cs = DB.getConnection().prepareCall(PREPARE_CALL_REQUEST);
        cs.setString(3, params.get("body"));
        cs.executeQuery();



P.S. Проблема в том, что ява для меня почти темный лес, но приходится подправлять чужое приложение.
...
Рейтинг: 0 / 0
Play 1.4 и реконнект к БД
    #39317853
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Migelle,
то что 5 минут старта оракле и потеряются за это время записи от POST имеет значение?
...
Рейтинг: 0 / 0
Play 1.4 и реконнект к БД
    #39317864
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MigelleПроблема в том, что ява для меня почти темный лес
фигово.
Вот эти 3 строки должны быть многократно выполнянемыми даже после райзе в try
Код: java
1.
2.
3.
4.
CallableStatement cs = DB.getConnection().prepareCall(PREPARE_CALL_REQUEST);
cs.setString(3, params.get("body"));
try
cs.executeQuery();
...
Рейтинг: 0 / 0
Play 1.4 и реконнект к БД
    #39317877
Migelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123Migelle,
то что 5 минут старта оракле и потеряются за это время записи от POST имеет значение?
Проблема в том, что если в момент старта нет соединения с ораклом, приложение вообще не загружается

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Caused by: oracle.net.ns.NetException: Listener refused the connection with the following error:
ORA-12505, TNS:listener does not currently know of SID given in connect descriptor
.
<------>at oracle.net.ns.NSProtocol.connect(NSProtocol.java:399)
<------>at oracle.jdbc.driver.T4CConnection.connect(T4CConnection.java:1140)
<------>at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:340)
<------>... 31 more
Sep 29, 2016 10:33:38 AM org.apache.catalina.core.StandardContext start
SEVERE: Error listenerStart
Sep 29, 2016 10:33:38 AM org.apache.catalina.core.StandardContext start
SEVERE: Context [/testapp] startup failed due to previous errors
...
Рейтинг: 0 / 0
Play 1.4 и реконнект к БД
    #39317881
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MigelleПроблема в том, что если в момент старта нет соединения с ораклом, приложение вообще не загружается
я этот FW не знаю, но в общем случае надо вырубать код, пока не найдёшь строки инициализации коннекта к БД.
Приложение будет грузится.
...
Рейтинг: 0 / 0
Play 1.4 и реконнект к БД
    #39317892
Migelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123Вот эти 3 строки должны быть многократно выполнянемыми даже после райзе в try

Пересоединения не происходит вообще, сколько бы туда не стучалось запросов.
Только перезапуск томката/приложения решает проблему.


Я, конечно, поставлю какой-нибудь вотчдог, чтоб перегружал томкат, но некрасиво это.
...
Рейтинг: 0 / 0
Play 1.4 и реконнект к БД
    #39317895
Migelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123но в общем случае надо вырубать код, пока не найдёшь строки инициализации коннекта к БД.
Там нечего вырубать. Все, что относится к коннекции БД я уже описал. Вся коннекция происходит внутри фреймворка, за пределами приложения.
...
Рейтинг: 0 / 0
Play 1.4 и реконнект к БД
    #39317909
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MigelleP.S. Проблема в том, что ява для меня почти темный лес, но приходится подправлять чужое приложение.
Ну, начинается... Найдите Java программиста, пусть посмотрит ваш код и расставить try...catch где надо и как надо. Может и правда пул не нужен. Нужно чтобы ваш модуль не падал при ошибках.
...
Рейтинг: 0 / 0
Play 1.4 и реконнект к БД
    #39317920
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MigelleВся коннекция происходит внутри фреймворка, за пределами приложения
А кому счас легко?
Копать вплоть до своего наследника DB:
http://alvinalexander.com/java/jwarehouse/play-framework-2.3/framework/src/play-jdbc/src/main/scala/play/api/db/DB.scala.shtml
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
package play.api.db

import scala.language.reflectiveCalls

import play.api._
import play.api.libs._

import java.sql._
import javax.sql._

import com.jolbox.bonecp._
import com.jolbox.bonecp.hooks._
import scala.util.control.{ NonFatal, ControlThrowable }

/**
 * The Play Database API manages several connection pools.
 */
trait DBApi {


если там нет
DB.SetReconnect(true);
))
Если без единой твоей строчки в приложении с вызовом фреймворк уже падает, то это баг самого FW
...
Рейтинг: 0 / 0
Play 1.4 и реконнект к БД
    #39317933
Migelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BlazkowiczНужно чтобы ваш модуль не падал при ошибках.
Причем здесь модуль, если проблема в самом play. Приложение не загружается при старте томкэта. До вызовов моих функций дело не доходит. Соединение устанавливается внутри фреймворка.
...
Рейтинг: 0 / 0
Play 1.4 и реконнект к БД
    #39317937
Migelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123Если без единой твоей строчки в приложении с вызовом фреймворк уже падает, то это баг самого FW
Именно... :(
...
Рейтинг: 0 / 0
Play 1.4 и реконнект к БД
    #39317957
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MigelleПричем здесь модуль, если проблема в самом play. Приложение не загружается при старте томкэтаПроблема не в play, а в том, что разработчик не читал документацию по жизненному циклу сервлетов и запросов к ним.
Даже если нет желания реализовывать init(), всегда можно обернуть ошибку обращения к базе в 5xx коды. "Bad gateway" - то, что доктор прописал.
...
Рейтинг: 0 / 0
Play 1.4 и реконнект к БД
    #39317983
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Migelle,

Прежде чем винить фреймверк, давайте посмотрим на полный stacktraсe а не его обрубок. Eсли там только playframework, то увидим куда вклинится. Вообще народ пишет что при наличии @Entity он всегда ломится в базу.
...
Рейтинг: 0 / 0
Play 1.4 и реконнект к БД
    #39318005
dimonz80
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Migelle,


Там внутри c3p0 connection pool. Можно попробовать поиграться с параметрами, которые он принимает из application.conf

см тут и тут
...
Рейтинг: 0 / 0
Play 1.4 и реконнект к БД
    #39318012
dimonz80
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
dimonz80Migelle,


Там внутри c3p0 connection pool. Можно попробовать поиграться с параметрами, которые он принимает из application.conf

см тут и тут

Хотя, судя по всему, не поможет. Пили свою инициализацию коннекшн пула. Пример в первой ссылке
...
Рейтинг: 0 / 0
Play 1.4 и реконнект к БД
    #39318042
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimonz80Хотя, судя по всему, не поможет. Пили свою инициализацию коннекшн пула. Пример в первой ссылке
Почему не поможет? Вроде то что нужно. Залочит все потоки, пока Оракл не подымется. Разве нет?
...
Рейтинг: 0 / 0
Play 1.4 и реконнект к БД
    #39318064
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если хост/сервис в дауне, то будет "connection timeout" на уровне IP-стека.
Любое необработанное исключение фатально при развёртывании контекста и крайне нежелательно при обработке запроса.
...
Рейтинг: 0 / 0
Play 1.4 и реконнект к БД
    #39318074
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovЕсли хост/сервис в дауне, то будет "connection timeout" на уровне IP-стека.
Любое необработанное исключение фатально при развёртывании контекста и крайне нежелательно при обработке запроса.
Это пул лезет в БД при первой инициализации?
Разве это правильно?
...
Рейтинг: 0 / 0
Play 1.4 и реконнект к БД
    #39318078
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Это пул лезет в БД при первой инициализации?
Разве это правильно?
Почему ты решил что пул? Нам пока тут стека еще не предъявили. В БД лезет playframework скорее всего.
...
Рейтинг: 0 / 0
25 сообщений из 41, страница 1 из 2
Форумы / Java [игнор отключен] [закрыт для гостей] / Play 1.4 и реконнект к БД
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]