Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / ArrayIndexOutOfBoundsException / 9 сообщений из 9, страница 1 из 1
28.04.2006, 10:38
    #33696525
wnoise
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ArrayIndexOutOfBoundsException
Уважаемые, может подскажет кто, как может произойти следующее исключение:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
java.lang.ArrayIndexOutOfBoundsException:  8731 
        at java.util.LinkedList.toArray(LinkedList.java: 657 )
        at com.aamsystems.css.objectstorage.ObjectDBAdaptorExtensionBase.getAllObjectLinks(ObjectDBAdaptorExtensionBase.java: 940 )
        at com.aamsystems.css.objectstorage.TObjectStorageImpl.addLink(TObjectStorageImpl.java: 1375 )
        at com.aamsystems.css.objectstorage.TObjectStoragePOA._invoke(TObjectStoragePOA.java: 434 )
        at com.aamsystems.css.objectstorage.TObjectStoragePOA._invoke(TObjectStoragePOA.java: 91 )
        at com.inprise.vbroker.poa.POAImpl.invoke(POAImpl.java: 2874 )
        at com.inprise.vbroker.poa.ActivationRecord.invoke(ActivationRecord.java: 187 )
        at com.inprise.vbroker.poa.ServerInterceptorManager$ARWrapper.invoke(ServerInterceptorManager.java: 115 )
        at com.inprise.vbroker.GIOP.GiopProtocolAdapter.doRequest(GiopProtocolAdapter.java: 857 )
        at com.inprise.vbroker.IIOP.ServerProtocolAdapter.doRequest(ServerProtocolAdapter.java: 68 )
        at com.inprise.vbroker.GIOP.GiopProtocolAdapter.dispatchMessage(GiopProtocolAdapter.java: 1141 )
        at com.inprise.vbroker.orb.TPDispatcherImpl$TPDispatcher.run(TPDispatcherImpl.java: 102 )
        at com.inprise.vbroker.orb.ThreadPool$PoolWorker.run(ThreadPool.java: 80 )

код следующий:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
         
    LinkedList retList =  new  LinkedList();
    // заполнение листа
     while  (rs.next())
    {
      TLinkInfo linkItem =  new  TLinkInfo();
      linkItem.Name = rs.getString("FName");
      linkItem.Type = rs.getString("FType");
      linkItem.SrcObject = rs.getString("FSrcObject");
      linkItem.DestObject = rs.getString("FDestObject");
      retList.add(linkItem);
    }
    ret =  new  TLinkInfo[retList.size()];
    retList.toArray(ret);

исключение кидается при выполнении последней строчки (retList.toArray(ret);)
...
Рейтинг: 0 / 0
28.04.2006, 10:57
    #33696614
zalexaka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ArrayIndexOutOfBoundsException
а если так
Код: plaintext
TLinkInfo[]ret = retList.toArray( new  TLinkInfo[ 0 ]);
...
Рейтинг: 0 / 0
28.04.2006, 11:03
    #33696645
wnoise
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ArrayIndexOutOfBoundsException
ошибка нестабильно повторяется, поэтому не могу сразу проверить, но я почему то был уверен, что в данном случае все равно как писать по первому варианту или по второму
...
Рейтинг: 0 / 0
28.04.2006, 11:10
    #33696679
pretender
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ArrayIndexOutOfBoundsException
Тут что-то говорится, про то что, возможно это баг: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4877288 в реализации LinkedList.toArray(Object[]). Трудно в это поверить, но почему бы нет. А еще вот тут можн опосмотреть: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4987749.
...
Рейтинг: 0 / 0
28.04.2006, 11:21
    #33696745
wessen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ArrayIndexOutOfBoundsException
а у вас однопоточное приложение? Массив ret(если он глобальный конечно же) никто поменять не может во время выполнения метода retList.toArray(ret); ?
...
Рейтинг: 0 / 0
28.04.2006, 11:25
    #33696771
wnoise
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ArrayIndexOutOfBoundsException
Приложение конечно многопоточное, но ret объявлется локально в методе
...
Рейтинг: 0 / 0
28.04.2006, 11:30
    #33696805
wnoise
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ArrayIndexOutOfBoundsException
2pretender

насколько я понял из http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4987749:
Код: plaintext
1.
STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
Have multiple threads operate on local LinkedList variables USING the toArray method

бага проявляется при вызове метода toArray в одно время на разные(!) LinkedList'ы и для решения этой проблемы надо засинхронизовать вызовы toArray на Linkdelist'ы во всем процессе?
...
Рейтинг: 0 / 0
29.04.2006, 11:04
    #33698886
pretender
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ArrayIndexOutOfBoundsException
wnoiseбага проявляется при вызове метода toArray в одно время на разные(!) LinkedList'ы и для решения этой проблемы надо засинхронизовать вызовы toArray на Linkdelist'ы во всем процессе?

Если честно, то мне тяжело сказать поможет ли это? Думаю, что да, но надо попробовать. С другой стороны, стоит ли заниматься этим (синхронизацией вызова toArray для всех LinkeList в Вашей системе)? Если com.aamsystems.css.objectstorage – это Ваш пакет, то, пожалуй, можно и попробовать, но если это библиотека стороннего разработчика, то не знаю.

Мне кажется, вам стоит обратить внимание на то, что данный баг был пофиксен. Возможно, стоит посмотреть, как ведет себя Ваше приложение на том релизе jdk, в котором эта проблема устранена? Хотя я не знаю, насколько в Вашем случае это приемлемо.

Если это Ваш пакет, и Вы предполагаете, что Ваше приложение должно работать на максимально большом количестве версий jdk, то тогда вариантов нет и надо как-то решать эту проблему.
...
Рейтинг: 0 / 0
19.05.2006, 15:19
    #33738998
wnoise
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ArrayIndexOutOfBoundsException
перевел на ArrayList'ы - вроде нормально.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / ArrayIndexOutOfBoundsException / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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