powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Ошибка при десериализации объекта в сервлете
11 сообщений из 11, страница 1 из 1
Ошибка при десериализации объекта в сервлете
    #34605616
Фотография fixxer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В сервлет методом POST отсылается сериализованный c помощью XMLEncoder объект (ArrayList)

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

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
     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 при десериализации.

Код: plaintext
1.
2.
XMLDecoder decoder =  new  XMLDecoder( new  BufferedInputStream(request.getInputStream()));
Object o = decoder.readObject();

Код: 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.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
 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 )

отличий я не заметил
проверял что приходит
Код: plaintext
1.
2.
3.
4.
5.
InputStream is = request.getInputStream();
Scanner s =  new  Scanner(is);
 while  (s.hasNext()) {
LOG.info(s.nextLine());
}

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

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
 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>

Что это может быть? Я уже всю голову поломал.:(
...
Рейтинг: 0 / 0
Ошибка при десериализации объекта в сервлете
    #34606899
Фотография fixxer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так. Ситуация потихоньку проясняется. В логах до ексепшна найдено следующее:

Код: plaintext
1.
2.
 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 (см. конец первого поста)? И почему в одном случае этого не происходит, а в другом происходит при одинаковом содержании потока? Ужоснах :( У кого-нибудь будут идеи?
...
Рейтинг: 0 / 0
Ошибка при десериализации объекта в сервлете
    #34607084
Фотография Timm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"Другой сервлет" находится в том же окружении?
Возможно, используются разные парсеры?
...
Рейтинг: 0 / 0
Ошибка при десериализации объекта в сервлете
    #34607115
Фотография fixxer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Оба сервлета крутятся на одном JBoss на localhost. Единственное отличие в том, что первый сервлет (рабочий) продеплоен в отдельном war, а второй как часть большого ear приложения.
...
Рейтинг: 0 / 0
Ошибка при десериализации объекта в сервлете
    #34607125
Фотография Timm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fixxerОба сервлета крутятся на одном JBoss на localhost. Единственное отличие в том, что первый сервлет (рабочий) продеплоен в отдельном war, а второй как часть большого ear приложения.
Попробуй задеплоить оба сервлета в однаом war'е.
...
Рейтинг: 0 / 0
Ошибка при десериализации объекта в сервлете
    #34607216
Фотография fixxer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TimmПопробуй задеплоить оба сервлета в однаом war'е.
Да, работает. И куда копать? Как узнать почему не работает в другом приложении?
...
Рейтинг: 0 / 0
Ошибка при десериализации объекта в сервлете
    #34607225
Фотография Timm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
поглядел код декодера, по любому причина в парсере/том что к нему приходит.
можно еще декодеру передавать свой эксепшн листенер, чтобы хотя бы печатать стек трейс полностью.
...
Рейтинг: 0 / 0
Ошибка при десериализации объекта в сервлете
    #34607277
Фотография Timm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fixxer TimmПопробуй задеплоить оба сервлета в однаом war'е.
Да, работает. И куда копать? Как узнать почему не работает в другом приложении?
декодер:
Код: plaintext
1.
2.
3.
4.
        SAXParserFactory factory = SAXParserFactory.newInstance();
         try  {
           SAXParser saxParser = factory.newSAXParser();
//...
        } 
выполняй то же самое в двух сервлетах, только при этом печатай getClass().getName() у парсера.
...
Рейтинг: 0 / 0
Ошибка при десериализации объекта в сервлете
    #34607361
Фотография fixxer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, допетрил сам до этого. Действительно используются разные парсеры.

где работает
Код: plaintext
1.
2.
 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

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

Код: plaintext
1.
2.
 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 приложение не мое и сильно развернуться я там не могу. Может как-то можно подменить парсер "на чуть-чуть"?
...
Рейтинг: 0 / 0
Ошибка при десериализации объекта в сервлете
    #34607403
am_sasa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а еже ли так?
Код: plaintext
1.
2.
SAXParserFactory factory = 
 Class .forName("org.apache.xerces.jaxp.SAXParserFactoryImpl").newInstance()
...
Рейтинг: 0 / 0
Ошибка при десериализации объекта в сервлете
    #34607439
wessen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Ошибка при десериализации объекта в сервлете
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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