Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Ошибка при десериализации объекта в сервлете / 11 сообщений из 11, страница 1 из 1
19.06.2007, 17:01:01
    #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
20.06.2007, 10:48:30
    #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
20.06.2007, 11:35:38
    #34607084
Timm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при десериализации объекта в сервлете
"Другой сервлет" находится в том же окружении?
Возможно, используются разные парсеры?
...
Рейтинг: 0 / 0
20.06.2007, 11:42:13
    #34607115
fixxer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при десериализации объекта в сервлете
Оба сервлета крутятся на одном JBoss на localhost. Единственное отличие в том, что первый сервлет (рабочий) продеплоен в отдельном war, а второй как часть большого ear приложения.
...
Рейтинг: 0 / 0
20.06.2007, 11:44:15
    #34607125
Timm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при десериализации объекта в сервлете
fixxerОба сервлета крутятся на одном JBoss на localhost. Единственное отличие в том, что первый сервлет (рабочий) продеплоен в отдельном war, а второй как часть большого ear приложения.
Попробуй задеплоить оба сервлета в однаом war'е.
...
Рейтинг: 0 / 0
20.06.2007, 12:01:37
    #34607216
fixxer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при десериализации объекта в сервлете
TimmПопробуй задеплоить оба сервлета в однаом war'е.
Да, работает. И куда копать? Как узнать почему не работает в другом приложении?
...
Рейтинг: 0 / 0
20.06.2007, 12:03:05
    #34607225
Timm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при десериализации объекта в сервлете
поглядел код декодера, по любому причина в парсере/том что к нему приходит.
можно еще декодеру передавать свой эксепшн листенер, чтобы хотя бы печатать стек трейс полностью.
...
Рейтинг: 0 / 0
20.06.2007, 12:18:44
    #34607277
Timm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при десериализации объекта в сервлете
fixxer TimmПопробуй задеплоить оба сервлета в однаом war'е.
Да, работает. И куда копать? Как узнать почему не работает в другом приложении?
декодер:
Код: plaintext
1.
2.
3.
4.
        SAXParserFactory factory = SAXParserFactory.newInstance();
         try  {
           SAXParser saxParser = factory.newSAXParser();
//...
        } 
выполняй то же самое в двух сервлетах, только при этом печатай getClass().getName() у парсера.
...
Рейтинг: 0 / 0
20.06.2007, 12:37:19
    #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
20.06.2007, 12:45:55
    #34607403
am_sasa
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при десериализации объекта в сервлете
а еже ли так?
Код: plaintext
1.
2.
SAXParserFactory factory = 
 Class .forName("org.apache.xerces.jaxp.SAXParserFactoryImpl").newInstance()
...
Рейтинг: 0 / 0
20.06.2007, 12:52:00
    #34607439
wessen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при десериализации объекта в сервлете
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Ошибка при десериализации объекта в сервлете / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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