Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> падает tomcat, ну очень часто 
V
    Опции темы
Zhenyusya
  Дата 16.6.2010, 13:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 58
Регистрация: 14.8.2008
Где: Барнаул

Репутация: нет
Всего: нет



Помогите, пожааалста!! В работе с томкатом я, мягко сказать, не гуру. Однако запустили в промышленную эксплуатацию ПК на нем (даже без опытной: сроки поджимают).
Две недели все работало нормально, ды были ошибки, но томкат не падал. А последние 3 дня кошмар какой-то. Над ошибками, конечно, работаем, но и у пользователей сроки поджимают.
Сегодня, например, томкат упал около 30 раз!! В логах я ничего супер криминального не вижу (раньше и с такими как-то работало).
Может ли вообще из-за одного exception'a упасть томкат??
Люди, ну очень нада!!  smile 
Вот мои логи. Мож кто раскроет мне глаза...


Присоединённый файл ( Кол-во скачиваний: 8 )
Присоединённый файл  logs.7z 71,91 Kb
PM MAIL ICQ   Вверх
eros2
Дата 16.6.2010, 22:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 50
Регистрация: 31.5.2010

Репутация: нет
Всего: нет



Ищите в каталоге томката файлы hs_err_pid*.log.
В них инфа о вылетах, видно в какой длл-ке умерло.
См. http://java.sun.com/javase/6/webnotes/trou...ml/crashes.html

Не используете ли для доступа к БД jdbc-odbc бридж? Это слабое звено.

Ну вопщем ищите hs_err_pid-ы и показывайте что у вас там.
PM MAIL WWW   Вверх
Zhenyusya
Дата 17.6.2010, 05:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 58
Регистрация: 14.8.2008
Где: Барнаул

Репутация: нет
Всего: нет



jdbc-odbc бридж действительно использую, но раньше никаких проблем с этим не возникало, и потом, без него совсем никак не получается: я раньше здесь просила хэлпа по поводу того, что драйвер db2java.jar работает в desctop и никак не хочет в web application. Ответа не нашлось.

А вот мои hs_err_pid*.log и пара классов, в которых возникают ошибки. В чем проблема тож не понему.

Во всех хз_ерр есть это:
C  [ntdll.dll+0x7eeb]
C  [ODBC32.dll+0x8b14]

Чего сделать, чтобы избавиться??  smile  smile 

Это сообщение отредактировал(а) Zhenyusya - 17.6.2010, 05:41

Присоединённый файл ( Кол-во скачиваний: 1 )
Присоединённый файл  errors.7z 98,43 Kb
PM MAIL ICQ   Вверх
dobrolub
Дата 17.6.2010, 06:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 385
Регистрация: 18.12.2009
Где: Vancouver, Canada

Репутация: 4
Всего: 16



используя 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)

PM   Вверх
Zhenyusya
Дата 17.6.2010, 08:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 58
Регистрация: 14.8.2008
Где: Барнаул

Репутация: нет
Всего: нет



Большое пасиба, использование данного драйвера и строки подключения помогло.  smile  smile 
Раньше не указывала имя сервера и порт, поэтому не арбайтало.
Но возникла другая проблема: при вызове процедуры 
Код

st_db2 = conn_db2.prepareCall("{call msk.get_pfr(" + codePfr + ", 0)}");
rs_db2 = st_db2.executeQuery();

возникает 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 строк, не очень целесообразно (мягко говоря),
СНОВА НУЖЕН ХЭЛП!!!!!
PM MAIL ICQ   Вверх
dobrolub
Дата 17.6.2010, 08:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 385
Регистрация: 18.12.2009
Где: Vancouver, Canada

Репутация: 4
Всего: 16



попробуй преобразовать так на одном, чтобы проверить: 

Код

st_db2 = conn_db2.prepareCall("{call msk.get_pfr(" + codePfr + ", 0)}");

conn_db2.executeUpdate();

rs_db2 = st_db2.getResultSet();


PM   Вверх
eros2
Дата 17.6.2010, 09:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 50
Регистрация: 31.5.2010

Репутация: нет
Всего: нет



Цитата(Zhenyusya @ 17.6.2010,  05:20)
C  [ODBC32.dll+0x8b14]

Ну вопщем вы видите что падает в ODBC. Что и ожидалось.

Выходы:

1. Использовать Type4 JDBC-драйвер как вам уже советуют. Это хороший и правильный способ.

2. Есть ещё плохой способ, его следует использовать только если нормального драйвера нет. Нужно взять VJDBC и настроить его на этой же машине (или на другой) отдельной программой в виде сервера, причём так, чтоб если он вылетит - запустился опять.
Т.е. тупо в батнике:
Код

@echo off
SET CLASSPATH=vjdbc.jar;
SET CLASSPATH=%CLASSPATH%vjdbc_server.jar;
SET CLASSPATH=%CLASSPATH%commons-beanutils-core.jar;
SET CLASSPATH=%CLASSPATH%commons-collections-3.2.jar;
SET CLASSPATH=%CLASSPATH%commons-dbcp-1.2.1.jar;
SET CLASSPATH=%CLASSPATH%commons-digester-1.7.jar;
SET CLASSPATH=%CLASSPATH%commons-logging-1.1.jar;
SET CLASSPATH=%CLASSPATH%commons-pool-1.3.jar;
SET CLASSPATH=%CLASSPATH%jakarta-oro-2.0.8.jar;
:loop
java de.simplicit.vjdbc.server.rmi.ConnectionServer vjdbc_jdbcodbc.xml
goto loop

И его же драйвер заюзать внутри томката как клиента. Тогда падать будет внешний процесс и благодаря батнику снова будет перезапускаться. Вопщем, некоторые запросы отрабатывать не будут, но зато сам томкат не упадёт.

Но, повторюсь, это способ на крайний случай, нужно юзать нормальный драйвер, тогда и проблем не будет.
PM MAIL WWW   Вверх
Zhenyusya
Дата 17.6.2010, 09:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 58
Регистрация: 14.8.2008
Где: Барнаул

Репутация: нет
Всего: нет



Вот это st_db2.getResultSet(); возвращает null
PM MAIL ICQ   Вверх
eros2
Дата 17.6.2010, 09:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 50
Регистрация: 31.5.2010

Репутация: нет
Всего: нет



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

Что касается невозвращаемого resultset - то, возможно, нужно регистрировать output параметры

У нас, например (с ораклом) это примерно так:

Код

CallableStatement stmt = con.prepareCall("BEGIN  PKG_CARD.getProductParamValueByTemplate(:pItemId, :presult); END;");
stmt.setInt("pItemId", pItemId);
stmt.registerOutParameter("presult", OracleTypes.CURSOR); //REF CURSOR
stmt.execute();
ResultSet rs = (ResultSet)stmt.getObject("presult");

PM MAIL WWW   Вверх
Zhenyusya
Дата 17.6.2010, 09:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 58
Регистрация: 14.8.2008
Где: Барнаул

Репутация: нет
Всего: нет



Процедуры с out-параметрами работают нормально
Код

st_db2 = conn_db2.prepareCall("{call MSK.Get_Next_Num(?, 1)}");
st_db2.registerOutParameter(1, java.sql.Types.BIGINT);
st_db2.setLong(1, 1);

а вот resultset никак не хочет
Код

st_db2 = conn_db2.prepareCall("{call msk.get_pfr(" + codePfr + ", 0)}");
rs_db2 = st_db2.executeQuery();

И через jdbc-odbc resultset возвращался как оно написано
PM MAIL ICQ   Вверх
eros2
Дата 17.6.2010, 10:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 50
Регистрация: 31.5.2010

Репутация: нет
Всего: нет



Цитата(Zhenyusya @ 17.6.2010,  09:59)
И через jdbc-odbc resultset возвращался как оно написано

Однако jdbc-odbc имеет свойство падать.
PM MAIL WWW   Вверх
Zhenyusya
Дата 17.6.2010, 10:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 58
Регистрация: 14.8.2008
Где: Барнаул

Репутация: нет
Всего: нет



Это-то да, только что сделать, чтобы resultset вернулся??
Я про "И через jdbc-odbc resultset возвращался как оно написано" к тому, что resultset не нужно регистрировать

Лююди, ну поможите же кто-нибудь !!!!!  smile  smile 

Это сообщение отредактировал(а) Zhenyusya - 17.6.2010, 12:52
PM MAIL ICQ   Вверх
dobrolub
Дата 17.6.2010, 19:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 385
Регистрация: 18.12.2009
Где: Vancouver, Canada

Репутация: 4
Всего: 16



Посмотри как процедуры задекларированы, возможно проблема в этом. В коде внизу, обрати внимание на строку 2.
Код

CREATE PROCEDURE prod.resset () LANGUAGE SQL 
 DYNAMIC RESULT SETS 1 
 BEGIN 
 DECLARE C1 CURSOR FOR SELECT * FROM QIWS.QCUSTCDT;
 OPEN C1;
 RETURN; 
 END 



 В java, попробуй вот что:

Код

st_db2 = conn_db2.prepareCall("{call msk.get_pfr(" + codePfr + ", 0)}");
conn_db2.execute(); //executeUpdate();
rs_db2 = st_db2.getResultSet();

PM   Вверх
Zhenyusya
Дата 18.6.2010, 04:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 58
Регистрация: 14.8.2008
Где: Барнаул

Репутация: нет
Всего: нет



Да, да, да!!  smile Получилось!! Ааагромное пасиба!!
Все дело было в 
Код

DYNAMIC RESULT SETS 1

Странное дело, почему вызов процедуры в Центре управления DB2 и через ODBC-источник возвращает результат не null-иковский и без этого!?

Это сообщение отредактировал(а) Zhenyusya - 18.6.2010, 04:31
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема »


 




[ Время генерации скрипта: 0.1299 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.