powered by simpleCommunicator - 2.0.30     © 2024 Programmizd 02
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / Закрыть пул подключения к базе
19 сообщений из 19, страница 1 из 1
Закрыть пул подключения к базе
    #39898025
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
подключаюсь к mysql так
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
private static void setdataSource() {

        pp = new PoolProperties();
        pp.setDriverClassName("com.mysql.cj.jdbc.Driver");
        pp.setUrl(BASE);
        pp.setUsername(BASE_LOGIN);
        pp.setPassword(BASE_PASSWORD);
      ......
        dataSource = new DataSource();

        dataSource.setPoolProperties(pp);

    }


как закрыть пул при редеплое?
при новом деплое старый пул коннектов остаётся висеть, в логах
Код: plaintext
1.
The web application [test] registered the JDBC driver [com.mysql.cj.jdbc.Driver] but failed to unregister it when the web application 
was stopped. To prevent a memory leak, the JDBC Driver has been forcibly unregistered.
но все работает нормально с новым пулом
...
Рейтинг: 0 / 0
Закрыть пул подключения к базе
    #39898028
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для начала - вынести jdbc-драйверы и библиотеку логирования из приложения в общий или даже системный classpath. Чтобы развёртывание приложения вообще их не затрагивало.
...
Рейтинг: 0 / 0
Закрыть пул подключения к базе
    #39898035
ferc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вадя,

настрой datasource на своем томкате, а в приложении получай его через JNDI
...
Рейтинг: 0 / 0
Закрыть пул подключения к базе
    #39898054
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя
как закрыть пул при редеплое?
там где синглетон стопишь.
...
Рейтинг: 0 / 0
Закрыть пул подключения к базе
    #39898059
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov
Для начала - вынести jdbc-драйверы и библиотеку логирования из приложения в общий или даже системный classpath.
так и есть
PetroNotC Sharp
там где синглетон стопишь.
вопрос как а не где
...
Рейтинг: 0 / 0
Закрыть пул подключения к базе
    #39898087
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя
вопрос как а не где
все используют не руками пул new Pool, а пул аппСервера JNDI.
Поэтому могу только посоветовать делать обратные действия.
- вернуть коннекты в пул,.... обнулить ссылки...
...
Рейтинг: 0 / 0
Закрыть пул подключения к базе
    #39898100
lleming
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в томкате подписаться на событие там есть набор listenerov в томкате поискать надо какой подходить.
Подписаться и при undeploy соотвествующем выолпнить закрытие пула соединений.

Но лучше все таки jndi в томкат настроить

https://stackoverflow.com/questions/15895997/tomcat-application-deployment-listener
...
Рейтинг: 0 / 0
Закрыть пул подключения к базе
    #39898197
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov
Для начала - вынести jdbc-драйверы и библиотеку логирования из приложения в общий или даже системный classpath. Чтобы развёртывание приложения вообще их не затрагивало.
правильное решение.
maven во всём виноват, тащит драйвер в варнике.
убрать из pom и не будет его в варнике, а влинуксе устанавливать вместе с javasdk
...
Рейтинг: 0 / 0
Закрыть пул подключения к базе
    #39898224
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя

как закрыть пул при редеплое?
при новом деплое старый пул коннектов остаётся висеть, в логах
Код: plaintext
1.
The web application [test] registered the JDBC driver [com.mysql.cj.jdbc.Driver] but failed to unregister it when the web application 
was stopped. To prevent a memory leak, the JDBC Driver has been forcibly unregistered.
но все работает нормально с новым пулом

Я-бы предложил следовать такому принципу. На каком уровне вы ресурс создали - на том он и должен быть удалён.
Если пулом владеет Tomcat. То только shutdown Tomcat имеет право закрыть соединения. Если пул создает ваше
приложение - то вам его удалять пул вместе с коннектами пре редеплое.

Выше по топику верно сказали что можно просто корректно вернуть объект сессии обратно
(возм для dbcp это будет нечто вроде:

Код: java
1.
ObjectPool::returnObject(T obj);


Этого будет достаточно чтоб не флудить в базе висячими объектами connection которые
могут быть дорогими с точни зрения ресурсов. Наприер 1 сессия oracle потребляет от 10Мб памяти
на стороне БД.
...
Рейтинг: 0 / 0
Закрыть пул подключения к базе
    #39898226
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton

На каком уровне вы ресурс создали - на том он и должен быть удалён.

Если пулом владеет Tomcat. То только shutdown Tomcat имеет право закрыть соединения. Если пул создает ваше
приложение - то вам его удалять пул вместе с коннектами пре редеплое.

на этом надо было и закончить

все остальное - чтение документации. Например для Oracle JDBC Drivers
https://docs.oracle.com/cd/E18283_01/appdev.112/e13995/oracle/jdbc/pool/OracleConnectionCacheManager.html

для MySQL, читать версию документации по используемой версии MySQL драйверов + возможно, смотреть исходный код
...
Рейтинг: 0 / 0
Закрыть пул подключения к базе
    #39898230
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Я-бы предложил следовать такому принципу. На каком уровне вы ресурс создали - на том он и должен быть удалён.
только как определить ? если mysql-connector в папке lib приложения - не работает, если в папке tomcet/lib или в системной папке java - то всё нормально.
...
Рейтинг: 0 / 0
Закрыть пул подключения к базе
    #39898235
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid Kudryavtsev
для MySQL, читать версию документации по используемой версии MySQL драйверов + возможно, смотреть исходный код
судя про практике поиска по данной теме это не правильно направление. это фича томсат.
и Basil A. Sidorov правильно задал направление.
...
Рейтинг: 0 / 0
Закрыть пул подключения к базе
    #39898238
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя
mayton
Я-бы предложил следовать такому принципу. На каком уровне вы ресурс создали - на том он и должен быть удалён.
только как определить ? если mysql-connector в папке lib приложения - не работает, если в папке tomcet/lib или в системной папке java - то всё нормально.

Как не работает? Нужны детали. Если он JDBC какой-то там версии то DriverManager сам его обнаруживает
через connection-url. Если тип старый то нужно класслоадеру сказать что ClassForName... e.t.c.
...
Рейтинг: 0 / 0
Закрыть пул подключения к базе
    #39898257
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Как не работает? Нужны детали. Если он JDBC какой-то там версии то DriverManager сам его обнаруживает
через connection-url. Если тип старый то нужно класслоадеру сказать что ClassForName... e.t.c.
сам драйвер , пул работает.
главное чтоб был коннектор.
это проблема с 6 кошки....
...
Рейтинг: 0 / 0
Закрыть пул подключения к базе
    #39898259
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя
mayton
Я-бы предложил следовать такому принципу. На каком уровне вы ресурс создали - на том он и должен быть удалён.
только как определить ? если mysql-connector в папке lib приложения - не работает, если в папке tomcet/lib или в системной папке java - то всё нормально.
ну ты же не разбирался. Просто перекинул дрова в папку сервера. Они вполне могли быть в папке отдельного приложения.
...
Рейтинг: 0 / 0
Закрыть пул подключения к базе
    #39898262
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
ну ты же не разбирался. Просто перекинул дрова в папку сервера. Они вполне могли быть в папке отдельного приложения.
просто передвину - это совет инета и Basil A. Sidorov
варианты кода предложенные в инете ориентированы на старые драйвера.
...
Рейтинг: 0 / 0
Закрыть пул подключения к базе
    #39898266
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя,
Да. Их все то 3 решения по степени продвинутости: в апп, в сервере, jndi.
До jndi ты не дошел. Но все впереди.
...
Рейтинг: 0 / 0
Закрыть пул подключения к базе
    #39898272
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
Да. Их все то 3 решения по степени продвинутости: в апп, в сервере, jndi.
2 в апп не работает.
а что лучше из 2 - вопрос спорный
...
Рейтинг: 0 / 0
Закрыть пул подключения к базе
    #39898280
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
Они вполне могли быть в папке отдельного приложения
... но лучше, чтобы их там не было JNDI Datasource How-To :
DriverManager, the service provider mechanism and memory leaks
java.sql.DriverManager supports the service provider mechanism. This feature is that all the available JDBC drivers that announce themselves by providing a META-INF/services/java.sql.Driver file are automatically discovered, loaded and registered, relieving you from the need to load the database driver explicitly before you create a JDBC connection.
However, the implementation is fundamentally broken in all Java versions for a servlet container environment. The problem is that java.sql.DriverManager will scan for the drivers only once.
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Закрыть пул подключения к базе
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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