powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / GlassFish4.1+MSSQL2008R2
25 сообщений из 33, страница 1 из 2
GlassFish4.1+MSSQL2008R2
    #39452249
Vlad_ZJ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый вечер
не подскажите ?
написан веб сервис, в котором дергаются хранимки MSSQL
они отрабатываю нормально, но через некоторое время GlassFish
перестает возвращать по ним результат, только после рестарта
все работает нормально до следующего зависания

в чем может быть проблема?

Спасибо

p.s. настроен пул соединений через jdbc
...
Рейтинг: 0 / 0
GlassFish4.1+MSSQL2008R2
    #39452290
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vlad_ZJ,
зови программиста, админа. Пусть логи смотрит. Память мониторит.
...
Рейтинг: 0 / 0
GlassFish4.1+MSSQL2008R2
    #39452312
Фотография ponuch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vlad_ZJ,

скорее всего утечки, возможно коннекшены не закрываются и подключения к базе заканчиваются. такое было с самописным орм. только логи смотреть.
...
Рейтинг: 0 / 0
GlassFish4.1+MSSQL2008R2
    #39452460
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ponuchVlad_ZJ,

скорее всего утечки, возможно коннекшены не закрываются и подключения к базе заканчиваются. такое было с самописным орм. только логи смотреть.

Если подключение идет напрямую по JDBC, не используя connection pull, а при создании соединения нет блока finally, то да будет очень плохо. :-)
...
Рейтинг: 0 / 0
GlassFish4.1+MSSQL2008R2
    #39453021
Vlad_ZJ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
делаю так
//------АКТИВАЦИЯ ПУЛА СОЕДИНЕНИЙ----------------------------------------
@Resource(lookup = "jdbc/Test")
private DataSource dataSource;

в методе пишу
dbConnection = getConnection();

но когда добавил в этом методе вроде работает, но правильно ли это?
...
finally {
dbConnection.close();
}


функция
private Connection getConnection() {
Connection result = null;
try {
result = dataSource.getConnection();
} catch (SQLException ex) {
Logger.getLogger(WCC_Service.class.getName()).log(Level.SEVERE, null, ex);
}
return result;
}
...
Рейтинг: 0 / 0
GlassFish4.1+MSSQL2008R2
    #39453032
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Закрой подключение, чтобы оно вернулось в пулл.
https://docs.oracle.com/javase/tutorial/jdbc/basics/sqldatasources.html
...
Рейтинг: 0 / 0
GlassFish4.1+MSSQL2008R2
    #39453036
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторно когда добавил в этом методе вроде работает, но правильно ли это?
...
finally {
dbConnection.close();
}

Чет не увидел сразу, именно.
Но проще использовать try-with-resources если версия JAVA позволяет, это надежнее.
...
Рейтинг: 0 / 0
GlassFish4.1+MSSQL2008R2
    #39453112
WGA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WGA
Гость
Vlad_ZJделаю так
.......
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
private Connection getConnection() {
    Connection result = null;
    try {
        result = dataSource.getConnection();
    } catch (SQLException ex) {
        Logger.getLogger(WCC_Service.class.getName()).log(Level.SEVERE, null, ex);
    }
    return result;
}

Прэлестно! Теперь вместо SQLException будешь получать NullPointerException...
Все же просто
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
        Connection connection = null;
        try {
            connection = dataSource.getConnection();
..................................
        } catch (SQLException e) {
            throw new IllegalStateException(e);
            // или просто прокидывать исключение наверх
        } finally {
            if (connection != null) {
                try {
                    connection.close();
                } catch (SQLException e) {
                    LOG.error("", e);
                }
            }
        }
...
Рейтинг: 0 / 0
GlassFish4.1+MSSQL2008R2
    #39453120
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WGA,

да getConnection вообще не понятно зачем врэпить
...
Рейтинг: 0 / 0
GlassFish4.1+MSSQL2008R2
    #39453197
Vlad_ZJ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
спасибо Всем большое разобрался
...
Рейтинг: 0 / 0
GlassFish4.1+MSSQL2008R2
    #39453298
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WGAВсе же простоЭто уже не просто. Вот с try-with-resources - действительно просто (:
...
Рейтинг: 0 / 0
GlassFish4.1+MSSQL2008R2
    #39454003
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
UsmanWGAВсе же простоЭто уже не просто. Вот с try-with-resources - действительно просто (:

поясни :)
...
Рейтинг: 0 / 0
GlassFish4.1+MSSQL2008R2
    #39454007
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Atum1,
Код: java
1.
2.
3.
4.
5.
6.
        try (Connection connection = dataSource.getConnection()) {
..................................
        } catch (SQLException e) {
            throw new IllegalStateException(e);
            // или просто прокидывать исключение наверх
        }
...
Рейтинг: 0 / 0
GlassFish4.1+MSSQL2008R2
    #39454100
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
UsmanВот с try-with-resources - действительно просто (:
это очень и очень просто, и никаких головняков. главное открыть , а закроют всё за тебя вовремя и как надо.
...
Рейтинг: 0 / 0
GlassFish4.1+MSSQL2008R2
    #39454765
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
UsmanAtum1,
Код: java
1.
2.
3.
4.
5.
6.
        try (Connection connection = dataSource.getConnection()) {
..................................
        } catch (SQLException e) {
            throw new IllegalStateException(e);
            // или просто прокидывать исключение наверх
        }



взрыв мозга !

и какое поведение ?
...
Рейтинг: 0 / 0
GlassFish4.1+MSSQL2008R2
    #39454801
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Atum1взрыв мозга !Atum1и какое поведение ?избавились от определения явного finally-блока в коде
...
Рейтинг: 0 / 0
GlassFish4.1+MSSQL2008R2
    #39454922
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Usman,

в случае с finally, если в try будет перехвачено исключение, и потом еще close выбросит исключение, то второе перезатрет первое.

Код: java
1.
2.
3.
4.
5.
        try {
            throw new IllegalStateException("exception 1");
        } finally {
            throw new IllegalStateException("exception 2");
        }



Код: plaintext
1.
Exception in thread "main" java.lang.IllegalStateException: exception 2
	at Thr.main(Thr.java:12)
...
Рейтинг: 0 / 0
GlassFish4.1+MSSQL2008R2
    #39454973
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hettперезатрет http://stackoverflow.com/a/20661765 (только убрал конструктор)
Код: java
1.
2.
3.
4.
5.
6.
java.lang.Exception: Exception from method
	at console.Console03$Resource.doSomething(Console03.java:10)
	at console.Console03.main(Console03.java:21)
	Suppressed: java.lang.Exception: Exception from closeable
		at console.Console03$Resource.close(Console03.java:15)
		at console.Console03.main(Console03.java:22)

catch -блок все же перехватил исключение из finally
...
Рейтинг: 0 / 0
GlassFish4.1+MSSQL2008R2
    #39454982
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Usman,

Можно пример полностью?
...
Рейтинг: 0 / 0
GlassFish4.1+MSSQL2008R2
    #39454986
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hettи потом еще close выбросит исключение,
обычно в данной секции в логи пишут.
А исключения если есть, то это форс-мажор и пусть перетирает(огрубляет) или гасить его.
...
Рейтинг: 0 / 0
GlassFish4.1+MSSQL2008R2
    #39454987
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hett,

Код: 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.
package console;

public class Console03 {

    public static class Resource implements AutoCloseable {

        public Resource() throws Exception {
        }

        public void doSomething() throws Exception {
            throw new Exception("Exception from method");
        }

        @Override
        public void close() throws Exception {
            throw new Exception("Exception from closeable");
        }
    }
    
    public static void main(String[] args) throws Exception {
        try(Resource r = new Resource()) {
            r.doSomething();
        } catch (Exception ex) {
            ex.printStackTrace();
        }        
    }
}
...
Рейтинг: 0 / 0
GlassFish4.1+MSSQL2008R2
    #39454999
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Hettи потом еще close выбросит исключение,
обычно в данной секции в логи пишут.
А исключения если есть, то это форс-мажор и пусть перетирает(огрубляет) или гасить его.

Логи могут быть на уровне выше и проброшенное исключение не даст всей информации
...
Рейтинг: 0 / 0
GlassFish4.1+MSSQL2008R2
    #39455001
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Usman,

Наверное я вас не правильно понял. Я думал это был стек трейс из try-finally
...
Рейтинг: 0 / 0
GlassFish4.1+MSSQL2008R2
    #39455010
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HettЛоги могут быть на уровне выше
логи делай ниже
Hettи проброшенное исключение не даст всей информации
не возбуждай райзе в блоке finally сам и гаси другие.
...
Рейтинг: 0 / 0
GlassFish4.1+MSSQL2008R2
    #39455017
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HettЯ думал это был стек трейс из try-finallyТак и есть. Только из НЕявного finally -блока.
Это и есть основная фишка try-with-resources :
     Исключение из finally перехватывается в catch -блоке.
                                                            
У меня тоже:Atum1взрыв мозга !

И пока не совсем понятно, как это происходит в действительности.
Предпложительно какие-то безусловные переходы на уровне байткода и пр. магия (:
                                                            
Если произойдет исключение в явно определенном finally -блоке, то только в этом случае:Hettвторое перезатрет первое
...
Рейтинг: 0 / 0
25 сообщений из 33, страница 1 из 2
Форумы / Java [игнор отключен] [закрыт для гостей] / GlassFish4.1+MSSQL2008R2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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