Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности

Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
01.03.2013, 11:13
|
|||
|---|---|---|---|
|
|||
DSRA8650W: Ошибка при закрытии дочернего заменителя JDBC |
|||
|
#18+
Здравствуйте всем! J2EE-приложение было развернуто на сервере (Linux) с WSAS 6 и DB2 8.2, и функционировало без проблем. Выполнил миграцию приложения и базы данных на сервер с ОС Windows, WSAS 7, DB2 9.7. Миграцию приложения делал через экспорт из консоли WSAS 6, а затем установку в консоли WSAS 7. С базой пришлось повозиться (db2look, db2move). Теперь на новом сервере приложение запускается и нормально работает - извлечение данных из базы, изменение данных, отчеты. И все хорошо, пока не запускаю один из отчетов. При формировании этого отчета приложение вызывает хранимую процедуру. На сервере приложений происходит ошибка " DSRA8650W: Ошибка при закрытии дочернего заменителя JDBC ", а далее я уже ни с каким из режимов приложения работать не могу. Возникает постоянная ошибка " com.ibm.db2.jcc.b.SqlException: DB2 SQL Error: SQLCODE=-805, SQLSTATE=51002, SQLERRMC=NULLID.SYSLN303 0X5359534C564C3031, DRIVER=3.50.152 ". systemOut.log сервера WSAS прикладываю. Причем, если подсоединиться к базе в обход WSAS с пользователем, под которым работает приложение, например из процессора командной строки DB2, то с данными можно работать без проблем. А приложение не хочет, пока не перегружу профиль WSAS. И так до следующего запуска этого отчета. Интересно, что может натворить вызов ХП из приложения? Из ошибки "SQLCODE=-805, SQLSTATE=51002" понял, что какой-то пакет не был связан или отброшен. Похоже, что не совсем корректно прошла миграция базы. Может, Mark Barinstein что-нибудь подскажет по этому поводу? С уважением, Семен Попов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
01.03.2013, 11:46
|
|||
|---|---|---|---|
|
|||
DSRA8650W: Ошибка при закрытии дочернего заменителя JDBC |
|||
|
#18+
Semen Popov... При формировании этого отчета приложение вызывает хранимую процедуру. ... Наврал. Выполняется обычный select. Но почему он вводит в ступор приложение? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
01.03.2013, 12:11
|
|||
|---|---|---|---|
|
|||
DSRA8650W: Ошибка при закрытии дочернего заменителя JDBC |
|||
|
#18+
Semen Popov, 1. Непонятная версия драйвера JDBC. 3.50.152 - это от v9.5 FP0(GA). Т.е. ни 8.2, ни 9.7. Проверить, откуда он взялся и заменить. Желательно вообще пересоздать пул соединений на сервере приложений, задействовав драйвер от текущей версии. Если WAS и DB2 на одной машине, желательно настроить Type2 соединение. Отсутствующие пакеты JDBC-драйвера можно дополнить следующим образом: java -Duser.language=en -classpath db2jcc.jar com.ibm.db2.jcc.DB2Binder -url "jdbc:db2://<IP-сервера>:<порт>/<имя базы>" -user <имя пользователя> -password <пароль пользователя> -action replace Вторая странность, что понадобился пакет SYSLN303. По умолчанию (size=3) создаются пакеты SYSLN300, SYSLN301, SYSLN302. Обычно это означает, что открыто большое количество курсоров одновременно, что бывает при рекурсии, зацикливании или программной ошибке. Можно попробовать выполнить провязку пакетов JDBC указав больший размер (Напр. -size 5), если потребует пакет SYSLN305, то скорее всего это ошибка. Для WAS7 и выше рекомендую создать новый провайдер, используя провайдер "DB2 Using IBM JCC Driver". Указать в нем (переменные DB2_JCC_DRIVER_PATH и DB2_JCC_DRIVER_NATIVEPATH) пути к драйверу и двоичным библиотекам текущей версии. Пример: C:\IBM\SQLLIB\java и C:\IBM\SQLLIB\BIN. Сохранить провайдер и, на основе этого провайдера создать пул соединений, указав в параметрах тип 2 и имя нужной базы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
01.03.2013, 13:13
|
|||
|---|---|---|---|
|
|||
DSRA8650W: Ошибка при закрытии дочернего заменителя JDBC |
|||
|
#18+
Действительно, по пути AppServer\lib\ext лежали файлы устаревшего драйвера. Приложение и база разнесены по разным серверам. На обоих серверах установлена DB2 WSE 9.7.4. И когда я устанавливал приложение, то создал отдельный провайдер "DB2 Universal JDBC Driver Provider" (не тот, который вы рекомендуете), и проинициализировал нужные для провайдера переменные WSAS значением "C:\Program Files\IBM\SQLLIB\java". Почему использовался старый драйвер (из AppServer\lib\ext), когда были заданы конкретные пути - не знаю. Теперь вроде используется новый. И сейчас даже после ошибки в отчете могу дальше работать с другими режимами приложения. Но ошибка отчета осталась. Прикладываю все логи, чтобы картина была полнее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
01.03.2013, 13:17
|
|||
|---|---|---|---|
|
|||
DSRA8650W: Ошибка при закрытии дочернего заменителя JDBC |
|||
|
#18+
Логи забыл ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
01.03.2013, 13:51
|
|||
|---|---|---|---|
|
|||
DSRA8650W: Ошибка при закрытии дочернего заменителя JDBC |
|||
|
#18+
Евгений ХабаровОтсутствующие пакеты JDBC-драйвера можно дополнить следующим образом: java -Duser.language=en -classpath db2jcc.jar com.ibm.db2.jcc.DB2Binder -url "jdbc:db2://<IP-сервера>:<порт>/<имя базы>" -user <имя пользователя> -password <пароль пользователя> -action replace Попробовал выполнить и получил результат: Код: plaintext 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
01.03.2013, 14:11
|
|||
|---|---|---|---|
|
|||
DSRA8650W: Ошибка при закрытии дочернего заменителя JDBC |
|||
|
#18+
Semen Popov... Почему использовался старый драйвер (из AppServer\lib\ext), когда были заданы конкретные пути - не знаю. Теперь вроде используется новый. ... Кажется я догадываюсь, почему драйвер использовался из AppServer\lib\ext. Провайдер и источники данных созданы в области "Узел, Сервер", а переменные проинициализированы в области "Узел". Получается, что переменные не были видны. Я правильно понимаю, что и переменные надо было инициализировать в области "Узел, Сервер"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
01.03.2013, 15:29
|
|||
|---|---|---|---|
|
|||
DSRA8650W: Ошибка при закрытии дочернего заменителя JDBC |
|||
|
#18+
Semen PopovЕвгений ХабаровОтсутствующие пакеты JDBC-драйвера можно дополнить следующим образом: java -Duser.language=en -classpath db2jcc.jar com.ibm.db2.jcc.DB2Binder -url "jdbc:db2://<IP-сервера>:<порт>/<имя базы>" -user <имя пользователя> -password <пароль пользователя> -action replace Попробовал выполнить и получил результат: Код: plaintext 1. 2. 3. 4. 5. 6. Архив db2jcc.jar должен быть доступен в каталоге, из которого запускается команда, или же нужно указать полный путь к db2jcc.jar в опции -classpath ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
01.03.2013, 15:33
|
|||
|---|---|---|---|
|
|||
DSRA8650W: Ошибка при закрытии дочернего заменителя JDBC |
|||
|
#18+
Semen PopovSemen Popov... Почему использовался старый драйвер (из AppServer\lib\ext), когда были заданы конкретные пути - не знаю. Теперь вроде используется новый. ... Кажется я догадываюсь, почему драйвер использовался из AppServer\lib\ext. Провайдер и источники данных созданы в области "Узел, Сервер", а переменные проинициализированы в области "Узел". Получается, что переменные не были видны. Я правильно понимаю, что и переменные надо было инициализировать в области "Узел, Сервер"? lib\ext является более приоритетным (идет в classpath раньше), нежели пути, указанные в настройках провайдера. Это кроме случая, когда провайдер создается с собственным(изолированным) Classloader-ом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
01.03.2013, 16:38
|
|||
|---|---|---|---|
DSRA8650W: Ошибка при закрытии дочернего заменителя JDBC |
|||
|
#18+
SQLCODE -805 может свидетельствовать о том, что приложение держит слишком много открытых курсоров, например, не закрывает ResultSet или не вызывает фиксацию (commit) достаточно часто. Если вам реально нужно держать столько открытых курсоров, см. здесь (common problems, case 2) http://www.ibm.com/developerworks/data/library/techarticle/dm-0606chun/index.html#N10AB6 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
01.03.2013, 16:44
|
|||
|---|---|---|---|
|
|||
DSRA8650W: Ошибка при закрытии дочернего заменителя JDBC |
|||
|
#18+
Евгений ХабаровАрхив db2jcc.jar должен быть доступен в каталоге, из которого запускается команда, или же нужно указать полный путь к db2jcc.jar в опции -classpath Выдало для 49 пакетов: Код: plaintext Но SYSLN303 среди них не оказалось. Это нормально? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
01.03.2013, 16:48
|
|||
|---|---|---|---|
|
|||
DSRA8650W: Ошибка при закрытии дочернего заменителя JDBC |
|||
|
#18+
mustaccioSQLCODE -805 может свидетельствовать о том, что приложение держит слишком много открытых курсоров, например, не закрывает ResultSet или не вызывает фиксацию (commit) достаточно часто. ... Спасибо. Странно, но почему же на старом сервере этот отчет работает? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
01.03.2013, 16:58
|
|||
|---|---|---|---|
|
|||
DSRA8650W: Ошибка при закрытии дочернего заменителя JDBC |
|||
|
#18+
Semen PopovЕвгений ХабаровАрхив db2jcc.jar должен быть доступен в каталоге, из которого запускается команда, или же нужно указать полный путь к db2jcc.jar в опции -classpath Выдало для 49 пакетов: Код: plaintext Но SYSLN303 среди них не оказалось. Это нормально? Да, это нормально. Цитирую собственный абзац. Евгений ХабаровПо умолчанию (size=3) создаются пакеты SYSLN300, SYSLN301, SYSLN302. Обычно это означает, что открыто большое количество курсоров одновременно, что бывает при рекурсии, зацикливании или программной ошибке. Можно попробовать выполнить провязку пакетов JDBC, указав больший размер (Напр. -size 5), если потребует пакет SYSLN305, то скорее всего это ошибка. Т.е. если выполнить Binder с доп. ключем -size 5, то будут пакеты SYSLN300-SYSLN304. java -Duser.language=en -classpath db2jcc.jar com.ibm.db2.jcc.DB2Binder -url "jdbc:db2://<IP-сервера>:<порт>/<имя базы>" -user <имя пользователя> -password <пароль пользователя> -size 5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
04.03.2013, 09:50
|
|||
|---|---|---|---|
|
|||
DSRA8650W: Ошибка при закрытии дочернего заменителя JDBC |
|||
|
#18+
Евгений Хабаров, большое спасибо. Создание пакетов с ключом -size 5 не помогло. Теперь приложение просит SYSLN305. То есть получается, что это ошибка в приложении. Но еще раз хочу тогда спросить, почему же на WSAS 6 все работает? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
04.03.2013, 09:57
|
|||
|---|---|---|---|
|
|||
DSRA8650W: Ошибка при закрытии дочернего заменителя JDBC |
|||
|
#18+
Евгений ХабаровSemen Popovпропущено... Кажется я догадываюсь, почему драйвер использовался из AppServer\lib\ext. Провайдер и источники данных созданы в области "Узел, Сервер", а переменные проинициализированы в области "Узел". Получается, что переменные не были видны. Я правильно понимаю, что и переменные надо было инициализировать в области "Узел, Сервер"? lib\ext является более приоритетным (идет в classpath раньше), нежели пути, указанные в настройках провайдера. Это кроме случая, когда провайдер создается с собственным(изолированным) Classloader-ом. Спасибо. А не могли бы тогда пояснить, в чем отличие создания провайдера, источника данных, переменных WebSphere в различных областях? Я тут посмотрел у себя, как настроены различные приложения, и увидел, что провайдеры, источники, переменные настроены по-разному - в различных областях. Что следует учитывать, выбирая ту или иную область, создавая объекты в WebSphere? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
05.03.2013, 11:26
|
|||
|---|---|---|---|
|
|||
DSRA8650W: Ошибка при закрытии дочернего заменителя JDBC |
|||
|
#18+
Semen PopovЕвгений Хабаровпропущено... lib\ext является более приоритетным (идет в classpath раньше), нежели пути, указанные в настройках провайдера. Это кроме случая, когда провайдер создается с собственным(изолированным) Classloader-ом. Спасибо. А не могли бы тогда пояснить, в чем отличие создания провайдера, источника данных, переменных WebSphere в различных областях? Я тут посмотрел у себя, как настроены различные приложения, и увидел, что провайдеры, источники, переменные настроены по-разному - в различных областях. Что следует учитывать, выбирая ту или иную область, создавая объекты в WebSphere? Уровень, на котором определен ресурс или переменная имеет большое значение в конфигурации ND. Он определяет "область видимости" переменной или ресурса. При совпадении названий более "гранулярное" определение будет перекрывать более общее. Т.е. определение переменной или ресурса с одинаковым именем, заданное на уровне сервера(server), перекроет определение, заданное на уровне узла (node) или ячейки (cell). В конфигурации ND ресурс и пути к классам описываются на уровне ячейки или кластера (если ресурс должен быть общедоступным). Но, если на конкретном узле(сервере) пути будут другими, то для такого узла переменная "переопределяется" на уровне узла. Т.е. имеем описание ресурса в единственном экземпляре, но можем "подменить" параметры, заданные переменными, для конкретного узла или сервера. Для Standalone сервера уровень определения ресурса/переменной является менее критичным, но желательно ресурсы задавать на одном уровне, дабы не плодить сущности. В своих Stadalone конфигурациях обычно использую уровень узла, но не могу утверждать, что это является best practices. Подробнее описано по ссылкам: WebSphere variables Administrative console scope settings ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=43&mobile=1&tid=1601514]: |
0ms |
get settings: |
11ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
57ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
49ms |
get tp. blocked users: |
2ms |
| others: | 14ms |
| total: | 165ms |

| 0 / 0 |
