powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / ConnectionPool и потеря связи?
8 сообщений из 8, страница 1 из 1
ConnectionPool и потеря связи?
    #32535144
sanek842
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
добрый день
увидал соседний топик Как кто думает(DB2-backup and Connection)
и вспомнился вопрос про пул соединений

Допустим создан пул к oracle и происходит одно из событий
1. перезапуск БД
2. alter system kill session ...
3. если БД на др. компе - временная потеря связи в сети ( можно сэмулировать вытащив сетевой кабель на неск. сек )

При этом логические соединения остаются, а физически объекты Connection в пуле уже неработоспособны. Для решения данной проблемы видятся след. пути:
- написать собственный драйвер, где как нибудь через таймер организовать проверку соединений на работоспособность с заданной периодичностью. Только вот как проверять, select sysdate from dual? :)
- во всех приложениях дополнительно предусматривать обработку исключений на потерю связи ( типа ORA-12571: TNS:packet writer failure ) и на ходу пытаться пересоздать пул

Когда занимался пулами положил глаз на оракловый драйвер oracle.jdbc.pool.OracleConnectionCacheImpl , с ним и работал, но по вышеописанной проблеме ничего толком не нашел и в качестве утешения для себя решил, что при наступлении данных событий буду перезапускать Tomcat, и еще дополнительно реализована такая фишка что соединения не висят вечно - пул чистится по истечении заданного времени если нет активности ( свойство setCacheInactivityTimeout )

В общем-то в OracleConnectionCacheImpl ошибка возникает только первый раз, если следом дать еще запрос - соединение вроде как устанавливается, но драйвер начинает непонятно как работать ( судя по getCacheSize() выделяется новый объект неуничтожая старые). Можно еще конечно попробовать поработать через OracleOCIConnectionPool ( есть там такой, но не юзал), но здается мне будет то же..

вот такая проблемка, может кто чего скажет по этому поводу?
...
Рейтинг: 0 / 0
ConnectionPool и потеря связи?
    #32535517
JJJ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
execute simple query like
"select sysdate..."... esli oshibka - dostan'
next connection, esli oblomalas' 2 raz, to
cretae new Pool i delo s koncom!

JJJ
...
Рейтинг: 0 / 0
ConnectionPool и потеря связи?
    #32535901
sanek842
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
т.е. есть предложение проверять по таймеру? А если у юзера облом случится где-то в промежутке?
Можно еще эту проверку в метод getConnection() запихнуть, надежнее, но .. лишние тормоза это плохо
...
Рейтинг: 0 / 0
ConnectionPool и потеря связи?
    #32536766
Фотография oson
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Извиняюсь за вторжение в Вашу тему - но можно в контексте
вопрос задать
- можно для пула использовать класс
oracle.jdbc.driver.OracleDriver ??? Это в classes12.zip
- там же есть класс javax.sql.ConnectionPoolDataSource
он подходит?
- где взять oracle.jdbc.pool.OracleConnectionCacheImpl и главное
что к нему прописывть и в каком формате - user, ip etc?
Подскажите плиз?
...
Рейтинг: 0 / 0
ConnectionPool и потеря связи?
    #32537137
sanek842
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to oson
там все просто .солью сначала пару англ. слов:
The OracleConnectionCacheImpl class implements the OracleConnectionCache interface, and also extends the OracleDataSource class впрочем, лучше сразу в доке читать ...
а присутствует он в том же classes12.jar , вам нужно ( там где вы видите OracleDriver.class ) перейти в дир pool - там все и сидит ( ну на худой конец можно все с otn забрать )
osonможно для пула использовать класс
oracle.jdbc.driver.OracleDriver ???
он не для пула, тогда сам пул делай :)
Про javax.sql.ConnectionPoolDataSource это не оракловая реализация
osonчто к нему прописывть и в каком формате
для jsp-хи будет выглядеть так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
<jsp:useBean id="cods" class="oracle.jdbc.pool.OracleConnectionCacheImpl" scope="application">
<% 
    cods.setURL("jdbc:oracle:oci8:@");
// или  так   cods.setURL("jdbc:oracle:thin:@sanek:1521:test");
    cods.setUser("scott");
    cods.setPassword("tiger");
    cods.setStmtCacheSize( 5 );
    cods.setMinLimit( 3 );
%>
</jsp:useBean>
<%@ page import="java.sql.*, javax.sql.*, oracle.jdbc.pool.*" %>
<HTML> 
 <BODY> 
<%
    try {
      Connection conn = cods.getConnection();
      Statement stmt = conn.createStatement ();
.. и дальше попер ( все прозрачно ) ...

примеры есть даже в доке на oracle, раздел OracleJSP Support for JavaServer Pages Developer's Guide and Reference
Потом в google всего дофига...
Но главное что тут нужно сказать, тот classes12.zip ( jar ) что на сайте у oracle , там есть ошибки , и если будешь играть параметрами типа CacheInactivityTimeout или SetStmtCacheSize, это может неработать
читать здесь
http://otn.oracle.com/software/products/ias/files/patch_unix_readme.htm
свежий classes12 качал с ФОРСа ( для справки - дата его создания у меня 29.12.03 )

Еще для справки, в 10g они данный класс объявили depricated, но я думаю ну их всех в баню, не успеешь с одним разобраться уже говорят надо уже подругому, работает и работает ....
...
Рейтинг: 0 / 0
ConnectionPool и потеря связи?
    #32537570
Фотография stdio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
свежий classes12 качал с ФОРСа ( для справки - дата его создания у меня 29.12.03 )
С OTN-а надо драйвера качать

_______________
Alex
There are three kinds of people: those who can count and those who can't
...
Рейтинг: 0 / 0
ConnectionPool и потеря связи?
    #32538717
Фотография oson
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to sanek842 - спасибо.
...
Рейтинг: 0 / 0
ConnectionPool и потеря связи?
    #32608658
Фотография oson
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Господа.
Можно по пунктам подсказать, что к драйверу
oracle.jdbc.pool.OracleConnectionCacheImpl
прописывать надо.
Я вот пишу так
serverName - имя компа
databaseName - sid базы
networkProtocol - TCP
port - 1521
user - имя
password - соотв.

На что сервер(SUN AppServer) отвечает
An error has occurred.
Operation 'pingConnectionPool' failed in 'resources' Config Mbean. Target exception message: Connection could not be allocated because: Invalid Oracle URL specified: OracleDataSource.makeURL

А как правильно тогда этот URL ему указать?
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / ConnectionPool и потеря связи?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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