Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Oracle Application Server / 12 сообщений из 12, страница 1 из 1
10.06.2005, 16:02
    #33112300
albertislamov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Oracle Application Server
Добрый день! Есть проблемка. Насколько я понимаю когда поднимается AS он автоматом подтягивает ряд библиотек, которые будут доступны все приложениям работающим под AS. Одна из них - JDBC драйвера для Oracle. Так вот, есть несколько приложений на этом AS - одни из них работают с одной версией БД другие с другой версией. Необходимо для разных приложений использовать различные версии JDBC драйверов. Как это сделать? И возможно ли это?
...
Рейтинг: 0 / 0
10.06.2005, 16:12
    #33112333
Naug
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Oracle Application Server
Не совсем понял вопрос: если приложения работают с разными версиями бд для них надо указываь разные версии драйвероы. В чём проблема?

За оракул не скажу, а на веблгике так:
общение с бд осуществляется посредством "источников данных" (DataSources), каждый источник подключен к пулу соединений (СonnectionPools) каждый из которых в свою очередь имеет такие параметры как: используемый драйвер, урл базы, логин/пароль.
...
Рейтинг: 0 / 0
10.06.2005, 16:18
    #33112351
stdio
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Oracle Application Server
albertislamovДобрый день! Есть проблемка. Насколько я понимаю когда поднимается AS он автоматом подтягивает ряд библиотек, которые будут доступны все приложениям работающим под AS. Одна из них - JDBC драйвера для Oracle. Так вот, есть несколько приложений на этом AS - одни из них работают с одной версией БД другие с другой версией. Необходимо для разных приложений использовать различные версии JDBC драйверов. Как это сделать? И возможно ли это?См. http://www.oracle.com/technology/tech/java/oc4j/pdf/ClassLoadingInOC4J_WP.pdf
...
Рейтинг: 0 / 0
10.06.2005, 16:25
    #33112367
albertislamov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Oracle Application Server
NaugНе совсем понял вопрос: если приложения работают с разными версиями бд для них надо указываь разные версии драйвероы. В чём проблема?

За оракул не скажу, а на веблгике так:
общение с бд осуществляется посредством "источников данных" (DataSources), каждый источник подключен к пулу соединений (СonnectionPools) каждый из которых в свою очередь имеет такие параметры как: используемый драйвер, урл базы, логин/пароль.

проблема в том что для всех соединений используемый драйвер oracle.jdbc.driver.OracleDriver. Но для каждой версии БД есть свой драйвер, который с другой версией не работает, либо работает в некоторых случаях криво. А получается что ов всех приложениях используется один - который подятнулся во время старта AS.
...
Рейтинг: 0 / 0
10.06.2005, 17:03
    #33112469
albertislamov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Oracle Application Server
stdio albertislamovДобрый день! Есть проблемка. Насколько я понимаю когда поднимается AS он автоматом подтягивает ряд библиотек, которые будут доступны все приложениям работающим под AS. Одна из них - JDBC драйвера для Oracle. Так вот, есть несколько приложений на этом AS - одни из них работают с одной версией БД другие с другой версией. Необходимо для разных приложений использовать различные версии JDBC драйверов. Как это сделать? И возможно ли это?См. http://www.oracle.com/technology/tech/java/oc4j/pdf/ClassLoadingInOC4J_WP.pdf
Почитал. Все равно осталась проблема ведь ClassLoader образуют дерево ClassLoader'ов и как я понял, самый нижний ищет у себя в кэше класс, если не находит, передает запрос на поиск класса в кэше родителя, и так до тех пор пока он не будет найден. Если не найден, то самый нижний ищет класс в досутпных ему путях, если не находит то этот же запрос передает предку и т.д. пока класс не будет найден. Если он не найден то валим ClassNotFoundException. Так это все равно не решает проблему найдется левый класс в родительском ClassLoader, а класс из бибилотеки моего приложения не загрузится. Или я опять где-то ошибаюсь?
...
Рейтинг: 0 / 0
10.06.2005, 17:08
    #33112480
albertislamov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Oracle Application Server
stdio albertislamovДобрый день! Есть проблемка. Насколько я понимаю когда поднимается AS он автоматом подтягивает ряд библиотек, которые будут доступны все приложениям работающим под AS. Одна из них - JDBC драйвера для Oracle. Так вот, есть несколько приложений на этом AS - одни из них работают с одной версией БД другие с другой версией. Необходимо для разных приложений использовать различные версии JDBC драйверов. Как это сделать? И возможно ли это?См. http://www.oracle.com/technology/tech/java/oc4j/pdf/ClassLoadingInOC4J_WP.pdf
Такое впечаление что нужно написать свой classLoader который бы делал то что нужно.
...
Рейтинг: 0 / 0
10.06.2005, 17:25
    #33112529
stdio
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Oracle Application Server
albertislamovТак это все равно не решает проблему найдется левый класс в родительском ClassLoader, а класс из бибилотеки моего приложения не загрузится. Или я опять где-то ошибаюсь?Что тебе мешает найти нужные классы JDBC "раньше"? Например, поместив их в ear.
...
Рейтинг: 0 / 0
10.06.2005, 17:58
    #33112630
albertislamov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Oracle Application Server
stdioЧто тебе мешает найти нужные классы JDBC "раньше"? Например, поместив их в ear.
Это на мой взгляд тоже не решает проблему. Ведь проблема заключается в том что class старой версии драйвера уже загружен в кэш родительского classLoader (например другим приложением) и соотвественно при поиске класса (ведь вначале идет иерархический поиск по кэшам, а уже потом идет поиск по другим файлам которые доступны classloader'у) он будет найден у родителя - т.е. старая версия и обращения к файлам уже не будет.
...
Рейтинг: 0 / 0
10.06.2005, 18:31
    #33112700
stdio
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Oracle Application Server
albertislamovЭто на мой взгляд тоже не решает проблему. Ведь проблема заключается в том что class старой версии драйвера уже загружен в кэш родительского classLoader (например другим приложением) и соотвественно при поиске класса (ведь вначале идет иерархический поиск по кэшам, а уже потом идет поиск по другим файлам которые доступны classloader'у) он будет найден у родителя - т.е. старая версия и обращения к файлам уже не будет.1) Что такое кэш загрузчиков классов?
2) Читаем бумажку ещё раз.
...
Рейтинг: 0 / 0
10.06.2005, 18:38
    #33112712
stdio
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Oracle Application Server
Сначала срабатывает загрузчик классов модуля - он в первую очередь будет искать JDBC библиотеку, пришедшую с EAR-архивом.
...
Рейтинг: 0 / 0
14.06.2005, 15:31
    #33115899
albertislamov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Oracle Application Server
Спасибо stdio, с подтянулись JDBC драйвера. Точнее сказать похоже подтянулись - т.к. начали валится ошибки.. :-((
Причем ошибки очень интересные делаю lookup как результат мне возвращается класс com.evermind.sql.OrionCMTDataSource, причем он при приведении к javax.sql.DataSource валит ClassCastException, хотя этот класс является наследником от класса который implements javax.sql.DataSource. Есть у кого-ниубдь идеи что за фигня?
...
Рейтинг: 0 / 0
14.06.2005, 15:36
    #33115915
albertislamov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Oracle Application Server
Причем если заменить jar'ы JDBC драйвера в {jdev_home}/jdbc то все отрабатывает на ура. если же их в ear цеплять то валится ошибка которая выше описана
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Oracle Application Server / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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