XMLDecoder выдает исключение ArrayIndexOutOfBoundsException - PullRequest
0 голосов
/ 17 декабря 2011

Об этом мне сообщили на производственной площадке. У нас есть таблица базы данных для сообщений, и объекты внутри хранятся в виде XML с использованием стандартного Java XMLEncoder. Когда мы обрабатываем сообщение, мы декодируем объекты из поля в базе данных.

Иногда клиент регистрирует эту ошибку.

ERROR Dec 15 17:19:49 services.ScheduleRunner - 0 occurred processing
message 4183439 java.lang.ArrayIndexOutOfBoundsException: 0
                at com.sun.beans.ObjectHandler.dequeueResult(Unknown Source)
                at java.beans.XMLDecoder.readObject(Unknown Source)
                at com.hl7.services.ScheduleRunner.run(ScheduleRunner.java:116)
                at java.util.TimerThread.mainLoop(Unknown Source)
                at java.util.TimerThread.run(Unknown Source)

Они отправили мне XML, и я попробовал его сам, и он работает для меня. Есть идеи, почему это не получится? В настоящее время они используют Java 6_22, а у меня Java 6_26.

Также странно, что он показывает «Неизвестный источник». Разве источник Java не разворачивается вместе со средой выполнения? Другая странная вещь в том, что в моем исходном файле ничего нет в строке 116.

1010 * ТИА *

Ответы [ 2 ]

2 голосов
/ 16 мая 2012

Вероятно, причина специальных символов.

&lt; < 
&gt; >
&amp; & 
&apos; '
&quot; "
1 голос
/ 27 марта 2013

Используйте encoder = new XMLDecoder( org.apache.commons.io.IOUtils.toInputStream(stringfromdatabase)); для создания InputStream из базы данных.

...