|
ConnectionPool и потеря связи?
|
|||
---|---|---|---|
#18+
добрый день увидал соседний топик Как кто думает(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 ( есть там такой, но не юзал), но здается мне будет то же.. вот такая проблемка, может кто чего скажет по этому поводу? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2004, 17:02 |
|
ConnectionPool и потеря связи?
|
|||
---|---|---|---|
#18+
execute simple query like "select sysdate..."... esli oshibka - dostan' next connection, esli oblomalas' 2 raz, to cretae new Pool i delo s koncom! JJJ ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2004, 19:55 |
|
ConnectionPool и потеря связи?
|
|||
---|---|---|---|
#18+
т.е. есть предложение проверять по таймеру? А если у юзера облом случится где-то в промежутке? Можно еще эту проверку в метод getConnection() запихнуть, надежнее, но .. лишние тормоза это плохо ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2004, 09:36 |
|
ConnectionPool и потеря связи?
|
|||
---|---|---|---|
#18+
Извиняюсь за вторжение в Вашу тему - но можно в контексте вопрос задать - можно для пула использовать класс oracle.jdbc.driver.OracleDriver ??? Это в classes12.zip - там же есть класс javax.sql.ConnectionPoolDataSource он подходит? - где взять oracle.jdbc.pool.OracleConnectionCacheImpl и главное что к нему прописывть и в каком формате - user, ip etc? Подскажите плиз? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2004, 14:12 |
|
ConnectionPool и потеря связи?
|
|||
---|---|---|---|
#18+
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.
примеры есть даже в доке на 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, но я думаю ну их всех в баню, не успеешь с одним разобраться уже говорят надо уже подругому, работает и работает .... ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2004, 16:26 |
|
ConnectionPool и потеря связи?
|
|||
---|---|---|---|
#18+
свежий classes12 качал с ФОРСа ( для справки - дата его создания у меня 29.12.03 ) С OTN-а надо драйвера качать _______________ Alex There are three kinds of people: those who can count and those who can't ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2004, 20:29 |
|
ConnectionPool и потеря связи?
|
|||
---|---|---|---|
#18+
to sanek842 - спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2004, 13:18 |
|
ConnectionPool и потеря связи?
|
|||
---|---|---|---|
#18+
Господа. Можно по пунктам подсказать, что к драйверу 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 ему указать? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.07.2004, 16:37 |
|
|
start [/forum/topic.php?fid=59&msg=32608658&tid=2153939]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
67ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
others: | 320ms |
total: | 480ms |
0 / 0 |