users@jax-rpc.java.net

Problem sending large String

From: Baltz, Kenneth <Kbaltz_at_FIRSTAM.COM>
Date: Wed, 05 Feb 2003 16:30:50 -0800

I ran into serialization issues today caused by passing a large String
(>100,000 bytes). Changing the interface to take a byte[] instead of a
String fixed the problem. In other words, passing a 100KB byte[] worked,
but a 100KB String caused Deserialization errors with a root cause of
ArrayIndexOutOfBounds. The String contained XML data including some
<![CDATA[ ]]> sections, but I haven't had trouble passing that before.

Here's the related trace.

XML parsing error: com.sun.xml.rpc.sp.ParseException:391:
java.lang.ArrayIndexOutOfBoundsException
  at com.sun.xml.rpc.streaming.XMLReaderImpl.next(XMLReaderImpl.java:110)
  at
com.sun.xml.rpc.encoding.SimpleTypeSerializer.deserialize(SimpleTypeSerializ
er.java:108)
  at
com.sun.xml.rpc.encoding.AttachmentSerializer.deserialize(AttachmentSerializ
er.java:138)
  at
com.sun.xml.rpc.encoding.ReferenceableSerializerImpl.deserialize(Referenceab
leSerializerImpl.java:115)
  at
com.firstam.Profiler.CpwsIF_SaveLookupTables_RequestStruct__cpws__SOAPSerial
izer.doDeserialize(CpwsIF_SaveLookupTables_RequestSt
  at
com.sun.xml.rpc.encoding.ObjectSerializerBase.deserialize(ObjectSerializerBa
se.java:165)
  at
com.sun.xml.rpc.encoding.ReferenceableSerializerImpl.deserialize(Referenceab
leSerializerImpl.java:115)
  at
com.firstam.Profiler.CpwsIF_Tie.deserialize_saveLookupTables(CpwsIF_Tie.java
:4622)
  at
com.firstam.Profiler.CpwsIF_Tie.readFirstBodyElement(CpwsIF_Tie.java:3729)
  at
com.sun.xml.rpc.server.StreamingHandler.handle(StreamingHandler.java:164)
  at
com.sun.xml.rpc.server.http.JAXRPCServletDelegate.doPost(JAXRPCServletDelega
te.java:280)
  at com.sun.xml.rpc.server.http.JAXRPCServlet.doPost(JAXRPCServlet.java:69)
  at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
  at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
  at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Application
FilterChain.java:247)
  at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterCh
ain.java:193)
  at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.ja
va:260)
  at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invok
eNext(StandardPipeline.java:646)
  at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:483)
  at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
  at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.ja
va:191)
  at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invok
eNext(StandardPipeline.java:646)
  at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:483)
  at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
  at
org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2349)
  at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180
)
  at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invok
eNext(StandardPipeline.java:646)
  at
org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.
java:170)
  at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invok
eNext(StandardPipeline.java:644)
  at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:171
)
  at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invok
eNext(StandardPipeline.java:644)
  at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:483)
  at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
  at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java
:174)
  at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invok
eNext(StandardPipeline.java:646)
  at
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:469)
  at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invok
eNext(StandardPipeline.java:644)
  at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:483)
  at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
  at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:223)
  at
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:405)
  at
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConne
ction(Http11Protocol.java:376)
  at
org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:508)
  at
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.jav
a:518)
  at java.lang.Thread.run(Thread.java:536)


K.C.