пул соединений JDBC Glassfish - PullRequest
       32

пул соединений JDBC Glassfish

0 голосов
/ 22 марта 2011

Мое приложение использует пул соединений mysql jdbc.Когда я пингую базу данных через сайт администратора Glassfish, я получаю хороший ответ.Когда я использую свое приложение, все работает нормально.

Моя проблема возникает, когда по какой-либо причине происходит сбой сервера mysql.После сбоя я перезагружаю сервер mysql и при пинге базы данных через сайт администратора glassfish я получаю хороший ответ, но когда я использую свое приложение, я получаю сообщение об ошибке.

Я ищу способсказать Glassfish восстановить соединения.Есть идеи?

Ответы [ 3 ]

1 голос
/ 22 марта 2011

Посмотрел в документации по Glassfish и нашел следующее:

com.sun.appserv.jdbc.DataSource ds=
   (com.sun.appserv.jdbc.DataSource)context.lookup("dataSource");
Connection con = ds.getConnection();
Statement stmt = null;
try{
   stmt = con.createStatement();
   stmt.executeUpdate("Update");
}
catch (BadConnectionException e){
   ds.markConnectionAsBad(con) //marking it as bad for removal
}
finally{
   stmt.close();    
   con.close(); //Connection will be destroyed during close.
}

Приходит с этой страницы Найдите заголовок: Пометка плохих соединений, это примерно две трети вниз по странице.

1 голос
/ 22 марта 2011

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

0 голосов
/ 23 сентября 2014

Иногда GlassFish не понимает, что соединения в пуле больше не хороши.Следовательно, он может некоторое время выдавать закрытое соединение обратно приложению (я видел, что это происходило до 20 минут).

В этом случае вы можете заставить GF закрыть старые соединения и создатьновые соединения путем очистки пула соединений.

Фрагмент из http://docs.oracle.com/cd/E19798-01/821-1752/giyeb/index.html.

Вы можете очистить пул соединений JDBC одним из следующих способов:

В АдминистрированииКонсоль, откройте компонент «Ресурсы», откройте компонент «JDBC», выберите «Пулы соединений» и выберите пул соединений, который вы хотите очистить.Затем нажмите кнопку «Очистить» в верхнем левом углу страницы.Для получения подробной информации нажмите кнопку «Справка» на консоли администрирования.

Используйте команду asadmin flush-connection-pool.Для получения дополнительной информации см. Справочное руководство Oracle GlassFish Server 3.0.1.

Другой вариант - включить проверку в пуле соединений.Это заставит GF проверить, работает ли соединение, прежде чем передать его приложению.Как только он поймет, что соединение закрыто, он заменит его новым соединением.

...