Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / IBM DB2, WebSphere, IMS, U2, etc Новый топик    Ответить
 О провайдерах источников данных WSAS  [new]
Semen Popov
Member

Откуда: Сыктывкар
Сообщений: 793
Здравствуйте всем!

Ситуция: WSAS 7.0.0.21 и DB2 9.7.
Приложение работает с базой данных через jdbc-источник. Настроен провайдер источника, у кторого заданы

путь к классам:
${DB2UNIVERSAL_JDBC_DRIVER_PATH}/db2jcc.jar
${UNIVERSAL_JDBC_DRIVER_PATH}/db2jcc_license_cu.jar
${DB2UNIVERSAL_JDBC_DRIVER_PATH}/db2jcc_license_cisuz.jar

путь к встроенным библиотекам
${DB2UNIVERSAL_JDBC_DRIVER_NATIVEPATH}

Но DB2UNIVERSAL_JDBC_DRIVER_PATH и DB2UNIVERSAL_JDBC_DRIVER_NATIVEPATH не проинициализированы в переменых среды (значение = пусто).

Но приложение работает без проблем. Соединение к источнику данных проходит.

Вопрос. Через какой драйвер (из какой папки) работает провайдер, если не заданы значения переменных? Какая папка считается по умолчанию для драйвера?

С уважением, Семен Попов
28 янв 13, 10:04    [13837471]     Ответить | Цитировать Сообщить модератору
 Re: О провайдерах источников данных WSAS  [new]
Евгений Хабаров
Member

Откуда: Москва
Сообщений: 773
Semen Popov,

В WAS версии 7.0 драйвер нашелся в следующем каталоге:
C:\IBM\WebSphere\AppServer\deploytool\itp\plugins\com.ibm.datatools.db2_2.1.102.v20100709_0407\driver

А провайдер какой?

Для "DB2 Using IBM JCC Driver" (рекомендуемый для версии 7.0) используются другие переменные и пути:
${DB2_JCC_DRIVER_PATH}/db2jcc4.jar
${DB2_JCC_DRIVER_PATH}/db2jcc_license_cu.jar
${DB2_JCC_DRIVER_PATH}/db2jcc_license_cisuz.jar
28 янв 13, 12:15    [13838297]     Ответить | Цитировать Сообщить модератору
 Re: О провайдерах источников данных WSAS  [new]
Semen Popov
Member

Откуда: Сыктывкар
Сообщений: 793
Евгений Хабаров, провайдер DB2 Universal JDBC Driver Provider с классом реализации com.ibm.db2.jcc.DB2ConnectionPoolDataSource. Ещё не сказал, что при установке приложения инсталлятор копирует в папку AppServer\lib\ext драйверы из своих закромов (это - db2java.zip, db2jcc.jar, db2jcc_license_cu.jar, db2jcc4.jar). Но вопрос в том, использует ли их провайдер, если не заданы переменные WebSphere?
28 янв 13, 14:42    [13839435]     Ответить | Цитировать Сообщить модератору
 Re: О провайдерах источников данных WSAS  [new]
Евгений Хабаров
Member

Откуда: Москва
Сообщений: 773
Semen Popov
Евгений Хабаров, провайдер DB2 Universal JDBC Driver Provider с классом реализации com.ibm.db2.jcc.DB2ConnectionPoolDataSource. Ещё не сказал, что при установке приложения инсталлятор копирует в папку AppServer\lib\ext драйверы из своих закромов (это - db2java.zip, db2jcc.jar, db2jcc_license_cu.jar, db2jcc4.jar). Но вопрос в том, использует ли их провайдер, если не заданы переменные WebSphere?

lib\ext сервер приложений обязан использовать. Причем это весьма приоритетный каталог для поиска jar-архивов.
Вообще-то инсталлятору так поступать несколько "некрасиво", если этот сервер приложений используется не только для этого приложения.

Более подходящий (ИМХО) вариант - создавать отдельный провайдер с изолированным Classloader-ом, явно задав путь к классам драйвера. Это для случаев, когда на сервере может быть несколько провайдеров однотипной СУБД и для них могут понадобиться разные версии драйверов. Для изолированного драйвера раздел Native library path должен быть пустым.
28 янв 13, 15:25    [13839863]     Ответить | Цитировать Сообщить модератору
 Re: О провайдерах источников данных WSAS  [new]
Semen Popov
Member

Откуда: Сыктывкар
Сообщений: 793
Евгений Хабаров, большое спасибо. А если у провайдера пути к классам и путь к встроенным библиотекам заданы явно и ссылаются на "C:\Program Files\IBM\SQLLIB\java" (драйвер от DB2 Runtime client, который устанавливается параллельно), то переменные инициализировать не обязательно? И считается ли такой провайдер с изолированным Classloader-ом?
28 янв 13, 15:39    [13839994]     Ответить | Цитировать Сообщить модератору
 Re: О провайдерах источников данных WSAS  [new]
Евгений Хабаров
Member

Откуда: Москва
Сообщений: 773
Semen Popov
Евгений Хабаров, большое спасибо. А если у провайдера пути к классам и путь к встроенным библиотекам заданы явно и ссылаются на "C:\Program Files\IBM\SQLLIB\java" (драйвер от DB2 Runtime client, который устанавливается параллельно), то переменные инициализировать не обязательно? И считается ли такой провайдер с изолированным Classloader-ом?

Если путь к классам драйвера задан явно, то переменные инициализировать необязательно.

По умолчанию провайдеры создаются без изоляции загрузчика (Classloader).
Чтобы провайдер был с изолированным загрузчиком нужно поставить галку на странице его свойств (Isolate this resource provider).
Изолировать загрузчик нужно, если в разных провайдерах используются одинаковые классы/библиотеки, но разных версий, и они должны сосуществовать.
По умолчанию (без изолированного загрузчика) классы будут загружаться общим загрузчиком и, при совпадающих классах, возьмутся те, к которым будет раньше обращение, что может порождать неоднозначность.
В идеале желательно чтобы загружалась ровно одна копия классов, но бывает, что нужно грузить два драйвера разных версий.

PS: Возможно, что опция с изолированным ClassLoader появилась только в версии 7.0. Не помню была ли она в 6.1.
28 янв 13, 16:49    [13840535]     Ответить | Цитировать Сообщить модератору
 Re: О провайдерах источников данных WSAS  [new]
Semen Popov
Member

Откуда: Сыктывкар
Сообщений: 793
Евгений Хабаров, большое спасибо
28 янв 13, 17:36    [13840796]     Ответить | Цитировать Сообщить модератору
Все форумы / IBM DB2, WebSphere, IMS, U2, etc Ответить