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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Ошибка при десериализации объекта в сервлете 
V
    Опции темы
fixxer
Дата 19.6.2007, 15:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



В сервлет методом POST отсылается сериализованный c помощью XMLEncoder объект (ArrayList)

Тестовый сервлет, который десериализует, потом обратно сериализует и отправляет обратно работат нормально.

Код

    protected void doPost(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws ServletException, IOException {
        try {
            XMLDecoder xmlDecoder = new XMLDecoder(httpServletRequest.getInputStream());
            Object o = xmlDecoder.readObject();
            xmlDecoder.close();
            XMLEncoder encoder = new XMLEncoder(httpServletResponse.getOutputStream());
            encoder.writeObject(o);
            encoder.close();
        } catch (Exception e) {
            e.printStackTrace(httpServletResponse.getWriter());
        }
    }


В другом же сервлете вылетает exception при десериализации.

Код

XMLDecoder decoder = new XMLDecoder(new BufferedInputStream(request.getInputStream()));
Object o = decoder.readObject();


Код

16:25:42,836 ERROR [ChartFXServlet] Error during processing the request
java.util.NoSuchElementException
        at java.util.Vector.lastElement(Vector.java:461)
        at com.sun.beans.ObjectHandler.lastExp(ObjectHandler.java:132)
        at com.sun.beans.ObjectHandler.dequeueResult(ObjectHandler.java:136)
        at java.beans.XMLDecoder.readObject(XMLDecoder.java:218)
        at com.egar.tradingstation.server.ChartFXServlet.doPost(ChartFXServlet.j
ava:69)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl
icationFilterChain.java:252)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF
ilterChain.java:173)
        at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFi
lter.java:81)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl
icationFilterChain.java:202)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF
ilterChain.java:173)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperV
alve.java:213)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextV
alve.java:178)
        at org.jboss.web.tomcat.security.CustomPrincipalValve.invoke(CustomPrinc
ipalValve.java:39)
        at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(Securit
yAssociationValve.java:159)
        at org.apache.catalina.authenticator.AuthenticatorBase.invoke(Authentica
torBase.java:482)
        at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValv
e.java:59)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.j
ava:126)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.j
ava:105)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineVal
ve.java:107)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.jav
a:148)
        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java
:856)
        at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.proce
ssConnection(Http11Protocol.java:744)
        at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpo
int.java:527)
        at org.apache.tomcat.util.net.MasterSlaveWorkerThread.run(MasterSlaveWor
kerThread.java:112)
        at java.lang.Thread.run(Thread.java:595)


отличий я не заметил
проверял что приходит
Код

InputStream is = request.getInputStream();
Scanner s = new Scanner(is);
while (s.hasNext()) {
LOG.info(s.nextLine());
}


Вроде все нормально.

Код

16:13:22,699 INFO  [ChartFXServlet] <?xml version="1.0" encoding="UTF-8"?>
16:13:22,699 INFO  [ChartFXServlet] <java version="1.5.0" class="java.beans.XMLD
ecoder">
16:13:22,699 INFO  [ChartFXServlet]  <object class="java.util.ArrayList">
16:13:22,699 INFO  [ChartFXServlet]   <void method="add">
16:13:22,699 INFO  [ChartFXServlet]    <string>EUR/USD</string>
16:13:22,699 INFO  [ChartFXServlet]   </void>
16:13:22,699 INFO  [ChartFXServlet]   <void method="add">
16:13:22,699 INFO  [ChartFXServlet]    <int>15</int>
16:13:22,699 INFO  [ChartFXServlet]   </void>
16:13:22,699 INFO  [ChartFXServlet]   <void method="add">
16:13:22,699 INFO  [ChartFXServlet]    <long>1179663202481</long>
16:13:22,699 INFO  [ChartFXServlet]   </void>
16:13:22,699 INFO  [ChartFXServlet]   <void method="add">
16:13:22,699 INFO  [ChartFXServlet]    <long>1182255202481</long>
16:13:22,699 INFO  [ChartFXServlet]   </void>
16:13:22,699 INFO  [ChartFXServlet]  </object>
16:13:22,699 INFO  [ChartFXServlet] </java>


Что это может быть? Я уже всю голову поломал.:(


--------------------
user posted image
PM MAIL ICQ   Вверх
Tony
Дата 19.6.2007, 15:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1159
Регистрация: 3.3.2006
Где: Riga

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



Uberika new BufferedInputStream. 


--------------------
user posted image
user posted image
PM MAIL Skype   Вверх
fixxer
Дата 19.6.2007, 15:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата

Uberika new BufferedInputStream.  


Пофигу, пробовал по разному


--------------------
user posted image
PM MAIL ICQ   Вверх
Tony
Дата 19.6.2007, 16:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1159
Регистрация: 3.3.2006
Где: Riga

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



Stranno


Это сообщение отредактировал(а) Tony - 19.6.2007, 16:36


--------------------
user posted image
user posted image
PM MAIL Skype   Вверх
fixxer
Дата 20.6.2007, 09:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Так. Ситуация потихоньку проясняется. В логах до ексепшна найдено следующее:

Код

2007-06-20 10:27:56,505 INFO  [STDOUT] org.xml.sax.SAXParseException: XML declaration is not well-formed
2007-06-20 10:27:56,505 INFO  [STDOUT] Continuing ...


А что он там нашел not well-formed (см. конец первого поста)? И почему в одном случае этого не происходит, а в другом происходит при одинаковом содержании потока? Ужоснах :( У кого-нибудь будут идеи?


--------------------
user posted image
PM MAIL ICQ   Вверх
ekr
Дата 20.6.2007, 10:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


...и это пройдет...
**


Профиль
Группа: Участник
Сообщений: 359
Регистрация: 6.5.2007
Где: Moscow, RU

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



Попробуйте добавить или убрать (если есть) xml-пролог.
<?xml .....?>


--------------------
и это пройдет....

http://ekrs.blogspot.com
PM WWW   Вверх
fixxer
Дата 20.6.2007, 10:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Пролог есть. (см. конец первого поста) А как его убрать? Я же не руками формирую xml, а XMLEncoder'ом.


--------------------
user posted image
PM MAIL ICQ   Вверх
fixxer
Дата 20.6.2007, 11:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Ситуация проясняется дальше. В приложениях используются разные парсеры.

где работает

Код

2007-06-20 12:28:05,405 INFO  [ChartFXServlet] class org.apache.xerces.jaxp.SAXParserFactoryImpl
2007-06-20 12:28:05,405 INFO  [ChartFXServlet] class org.apache.xerces.jaxp.SAXParserImpl


где не работает

Код

2007-06-20 12:22:04,210 INFO  [ChartFXServlet] class com.bluecast.xml.JAXPSAXParserFactory
2007-06-20 12:22:04,210 INFO  [ChartFXServlet] class сom.bluecast.xml.JAXPSAXParserFactory$JAXPSAXParser


А теперь как мне эту ситуацию утилизировать? Дело в том что это большое ear приложение не мое и сильно развернуться я там не могу. Может как-то можно подменить парсер "на чуть-чуть"?


--------------------
user posted image
PM MAIL ICQ   Вверх
fixxer
Дата 20.6.2007, 14:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Проблема решилась так
Код

System.setProperty("javax.xml.parsers.SAXParserFactory", "org.apache.xerces.jaxp.SAXParserFactoryImpl");


Всем спасибо.


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

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

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


 




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


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

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