| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java EE (J2EE) и Spring > падает tomcat |
| Автор: Zhenyusya 16.6.2010, 13:55 |
| Помогите, пожааалста!! В работе с томкатом я, мягко сказать, не гуру. Однако запустили в промышленную эксплуатацию ПК на нем (даже без опытной: сроки поджимают). Две недели все работало нормально, ды были ошибки, но томкат не падал. А последние 3 дня кошмар какой-то. Над ошибками, конечно, работаем, но и у пользователей сроки поджимают. Сегодня, например, томкат упал около 30 раз!! В логах я ничего супер криминального не вижу (раньше и с такими как-то работало). Может ли вообще из-за одного exception'a упасть томкат?? Люди, ну очень нада!! Вот мои логи. Мож кто раскроет мне глаза... |
| Автор: eros2 16.6.2010, 22:47 |
| Ищите в каталоге томката файлы hs_err_pid*.log. В них инфа о вылетах, видно в какой длл-ке умерло. См. http://java.sun.com/javase/6/webnotes/trouble/TSG-VM/html/crashes.html Не используете ли для доступа к БД jdbc-odbc бридж? Это слабое звено. Ну вопщем ищите hs_err_pid-ы и показывайте что у вас там. |
| Автор: Zhenyusya 17.6.2010, 05:20 |
| jdbc-odbc бридж действительно использую, но раньше никаких проблем с этим не возникало, и потом, без него совсем никак не получается: я раньше здесь просила хэлпа по поводу того, что драйвер db2java.jar работает в desctop и никак не хочет в web application. Ответа не нашлось. А вот мои hs_err_pid*.log и пара классов, в которых возникают ошибки. В чем проблема тож не понему. Во всех хз_ерр есть это: C [ntdll.dll+0x7eeb] C [ODBC32.dll+0x8b14] Чего сделать, чтобы избавиться?? |
| Автор: dobrolub 17.6.2010, 06:32 |
| используя JDBC Type 4 driver jar: db2jcc.jar, db2jcc_license_cu.jar driver-class: com.ibm.db2.jcc.DB2Driver url: jdbc:db2://server:port/database используя JDBC Type 2 Driver требует полной инсталляций DB2 Clienta на серверной машине (JDBC 4 – только нужны jars) |
| Автор: Zhenyusya 17.6.2010, 08:09 | ||
| Большое пасиба, использование данного драйвера и строки подключения помогло. Раньше не указывала имя сервера и порт, поэтому не арбайтало. Но возникла другая проблема: при вызове процедуры
возникает java.sql.Statement.executeQuery() was called but no result set was returned. Use java.sql.Statement.executeUpdate() for non-queries. Хотя результат 200% не пустой. А при выполнении обычного select'a работает нормально. В связи с тем, что у нас около 200 ХП переписывать на select'ы процедуры, порой длиной по 700 строк, не очень целесообразно (мягко говоря), СНОВА НУЖЕН ХЭЛП!!!!! |
| Автор: dobrolub 17.6.2010, 08:26 | ||
попробуй преобразовать так на одном, чтобы проверить:
|
| Автор: eros2 17.6.2010, 09:05 | ||||
Ну вопщем вы видите что падает в ODBC. Что и ожидалось. Выходы: 1. Использовать Type4 JDBC-драйвер как вам уже советуют. Это хороший и правильный способ. 2. Есть ещё плохой способ, его следует использовать только если нормального драйвера нет. Нужно взять http://vjdbc.sourceforge.net/ и настроить его на этой же машине (или на другой) отдельной программой в виде сервера, причём так, чтоб если он вылетит - запустился опять. Т.е. тупо в батнике:
И его же драйвер заюзать внутри томката как клиента. Тогда падать будет внешний процесс и благодаря батнику снова будет перезапускаться. Вопщем, некоторые запросы отрабатывать не будут, но зато сам томкат не упадёт. Но, повторюсь, это способ на крайний случай, нужно юзать нормальный драйвер, тогда и проблем не будет. |
| Автор: Zhenyusya 17.6.2010, 09:32 |
| Вот это st_db2.getResultSet(); возвращает null |
| Автор: eros2 17.6.2010, 09:44 | ||
| Если проблемы с драйвером - можно временно настроить VJDBC и по крайней мере избавиться от падений, а потом переделать программу чтоб она дружила с нормальным драйвером. Что касается невозвращаемого resultset - то, возможно, нужно регистрировать output параметры У нас, например (с ораклом) это примерно так:
|
| Автор: Zhenyusya 17.6.2010, 09:59 | ||||
Процедуры с out-параметрами работают нормально
а вот resultset никак не хочет
И через jdbc-odbc resultset возвращался как оно написано |
| Автор: eros2 17.6.2010, 10:05 | ||
Однако jdbc-odbc имеет свойство падать. |
| Автор: Zhenyusya 17.6.2010, 10:57 |
| Это-то да, только что сделать, чтобы resultset вернулся?? Я про "И через jdbc-odbc resultset возвращался как оно написано" к тому, что resultset не нужно регистрировать Лююди, ну поможите же кто-нибудь !!!!! |
| Автор: dobrolub 17.6.2010, 19:12 | ||||
Посмотри как процедуры задекларированы, возможно проблема в этом. В коде внизу, обрати внимание на строку 2.
В java, попробуй вот что:
|
| Автор: Zhenyusya 18.6.2010, 04:28 | ||
| Да, да, да!! Все дело было в
Странное дело, почему вызов процедуры в Центре управления DB2 и через ODBC-источник возвращает результат не null-иковский и без этого!? |