В сервлет методом 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>
|
Что это может быть? Я уже всю голову поломал.:( |