Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Истраченный набор результатов / 17 сообщений из 17, страница 1 из 1
28.03.2007, 08:49:12
    #34420214
cub
cub
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Истраченный набор результатов
Привет всем.

Вылетает ошибка если процедура вызывается многократно за кароткий промежуток времени на rset.getString(ii)- java.sql.SQLException Истраченный набор результатов.
Как ее можно отловить и почему while (rset.next()) не спасает?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
         try 	
        {
  	    rset = servlet.executeQuery(ls_query, params);
            xml_response = "<?xml version='1.0' encoding='windows-1251' ?><response><PAGE>"+p_pos+"</PAGE>"+
                           "<MAXPAGE>"+ls_max+"</MAXPAGE><COUNTREC>"+count_rec+"</COUNTREC>";
            String curr_val = "",curr_tag = "";
            ResultSetMetaData meta = rset.getMetaData();
             int  col_count = meta.getColumnCount();
             while  (rset.next())
            {
                 for (  int  ii =  1 ; ii<=col_count; ii++ )
                {
                   String name_col = meta.getColumnName(ii);
                   curr_val = rset.getString(ii);
                   curr_tag = curr_tag+"<"+name_col+">"+curr_val+"</"+name_col+">";
                }
            }
            rset.close();
            rset =  null ;

            xml_response = xml_response+curr_tag+"</response>";
        }// try
         catch (Exception e){e.printStackTrace();}
         finally 
        {
...
Рейтинг: 0 / 0
30.03.2007, 13:16:44
    #34427319
cub
cub
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Истраченный набор результатов
А если я медод doGet делаю synchronized , то все работает, а без него косяки..
Получается что неколько потоков используют 1 ResultSet?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
 synchronized   public   void  doGet(HttpServletRequest request, 
{
BGServlet servlet = (BGServlet) getServletContext().getAttribute(BGServlet.NAME);
...
rset = servlet.executeQuery(ls_query, params);
xml_response = "<?xml version='1.0' encoding='windows-1251' ?><response><PAGE>"+p_pos+"</PAGE>"+
                           "<MAXPAGE>"+ls_max+"</MAXPAGE><COUNTREC>"+count_rec+"</COUNTREC>";
            String curr_val = "",curr_tag = "";
            ResultSetMetaData meta = rset.getMetaData();
             int  col_count = meta.getColumnCount();
             while  (rset.next())
            {
                 for (  int  ii =  1 ; ii<=col_count; ii++ )
                {
                   String name_col = meta.getColumnName(ii);
                   curr_val = rset.getString(ii);

BGServlet
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
 public   class  BGServlet  extends  HttpServlet
{
....
 public  ResultSet executeQuery(String query, Vector params)
    {
        Connection con =  null ;
        PreparedStatement st =  null ;
        ResultSet rs =  null ;
        ...
        con = DriverManager.getConnection(ConnectionPoolManager.URL_PREFIX +POOL, prop);
        st = con.prepareStatement(query);
        ...
        st.execute();
        rs = st.getResultSet();
        st.close();
        con.close();
        ...
     return  rs;
  }
...
Рейтинг: 0 / 0
30.03.2007, 13:40:17
    #34427415
funikovyuri
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Истраченный набор результатов
Код: plaintext
rset = servlet.executeQuery(ls_query, params);

rset случаем не member variable?... Похоже, что-то из JDBC вы шарите между потоками
...
Рейтинг: 0 / 0
30.03.2007, 13:52:46
    #34427474
Leonidv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Истраченный набор результатов
Золотое правило новичка при разработке сервлетов - все переменные должны объявляться только внутри методов.
...
Рейтинг: 0 / 0
30.03.2007, 14:24:01
    #34427581
cub
cub
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Истраченный набор результатов
авторrset случаем не member variable?... Похоже, что-то из JDBC вы шарите между потоками
авторЗолотое правило новичка при разработке сервлетов - все переменные должны объявляться только внутри методов.
тото и оно, rset в doGet находится

Код: plaintext
1.
2.
3.
4.
5.
  public   void  doGet(HttpServletRequest request, 
{
  ResultSet rset =  null ;
  ...
  rset = servlet.executeQuery(ls_query, params);
  ...
...
Рейтинг: 0 / 0
30.03.2007, 14:25:23
    #34427585
zalexaka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Истраченный набор результатов
код покажите
Код: plaintext
servlet.executeQuery
...
Рейтинг: 0 / 0
30.03.2007, 14:26:05
    #34427589
zalexaka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Истраченный набор результатов
zalexakaкод покажите
Код: plaintext
servlet.executeQuery

сорри не заметил
...
Рейтинг: 0 / 0
30.03.2007, 14:27:33
    #34427596
zalexaka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Истраченный набор результатов
вот она собака-
Код: plaintext
1.
2.
3.
        rs = st.getResultSet();
        [color=red]st.close();[/color]
        [color=red]con.close();[/color]
...
Рейтинг: 0 / 0
30.03.2007, 16:19:53
    #34428030
cub
cub
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Истраченный набор результатов
zalexaka вот она собака-

rs = st.getResultSet();
st.close();
con.close();
А в чем здесь криминал?
...
Рейтинг: 0 / 0
30.03.2007, 16:24:02
    #34428042
Juga
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Истраченный набор результатов
ResultSet не кеширует данные он по сути курсор на таблицу коннект к которой вы закрыли
...
Рейтинг: 0 / 0
30.03.2007, 16:25:08
    #34428048
Juga
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Истраченный набор результатов
ResultSet не кеширует данные он по сути курсор на таблицу коннект к которой вы закрыли
...
Рейтинг: 0 / 0
30.03.2007, 17:04:31
    #34428201
cub
cub
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Истраченный набор результатов
Дык оно вобще не должно тогда работать, а оно не работает когда процедура вызывается несколько раз за кароткий промежуток времени.
Вообще это поиск по нажатию кнопок на клаве типа как в 1c(каждое нажатие - вызов процедуры (через AJAX)), и именно когда начинаешь очень быстро долбить по кнопкам вылезает ошибка, а если чуть медленее все работае норм.
...
Рейтинг: 0 / 0
02.04.2007, 05:14:40
    #34430234
cub
cub
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Истраченный набор результатов
zalexaka вот она собака-

rs = st.getResultSet();
st.close();
con.close();
Здесь используется ConnectionPool
...
Рейтинг: 0 / 0
02.04.2007, 05:59:16
    #34430240
cub
cub
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Истраченный набор результатов
Juga ResultSet не кеширует данные он по сути курсор на таблицу коннект к которой вы закрыли
con.close(); Здесь коннект возвращается в pool, он не закрыт
...
Рейтинг: 0 / 0
02.04.2007, 10:08:59
    #34430485
zalexaka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Истраченный набор результатов
полный стектрейс покажите
...
Рейтинг: 0 / 0
27.04.2007, 16:38:18
    #34493573
Kris-v
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Истраченный набор результатов
Привет!
У меня точно такая же ошибка с той же причиной что и у тебя. Ты не разобрался в чем дело? А то очень надо:(
...
Рейтинг: 0 / 0
10.05.2007, 17:41:30
    #34517187
Умаксуман
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Истраченный набор результатов
Всем привет

Только что сам столкнулся с такой же байдой :)
Оказалось не там поставил точку с запятой:

Код: plaintext
1.
2.
3.
4.
 while (rset2.next());
{
    out.println("v "+rset2.getString( 1 )+" "+rset2.getString( 2 )+" "+rset2.getString( 3 ));
}

while прокучивал курсор а я потом лез за данными :)
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Истраченный набор результатов / 17 сообщений из 17, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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