users@jax-rpc.java.net

Re: Problem sending large String

From: Baltz, Kenneth <Kbaltz_at_FIRSTAM.COM>
Date: Thu, 06 Feb 2003 14:50:54 -0800

OK, I tested sending a 100KB string with nothing but 'A's and it worked.
Using all ']'s cause the exception. Bug verified.

K.C.

-----Original Message-----
From: Doug Kohlert [mailto:doug.kohlert_at_SUN.COM]
Sent: Wednesday, February 05, 2003 5:16 PM
To: JAXRPC-INTEREST_at_JAVA.SUN.COM
Subject: Re: Problem sending large String


K.C.
This bug occurs when a ']' character in a large SOAP message appears
near the end of on input buffer that we parse from. So as long as your
strings do not contain any ']' characters you should not encounter
this problem.

If you encounter this error with a sting that does not have
this ']' character, please let me know.

Thank you

Baltz, Kenneth wrote:
> So you're saying that the bug you know of involves large strings with
> XML data? I.e. small strings with XML work, and large strings without
> XML work, but not the combination? I want to know before I set up the
test.
>
> K.C.
>
> -----Original Message-----
> From: Doug Kohlert [mailto:doug.kohlert_at_SUN.COM]
> Sent: Wednesday, February 05, 2003 4:35 PM
> To: JAXRPC-INTEREST_at_JAVA.SUN.COM
> Subject: Re: Problem sending large String
>
>
> K.C.
> I believe you have encountered a known bug that will be fixed in the
> jwsdp 1.1 release due out in a few weeks. Would you mind trying to see
> if you can pass large strings that do not contain XML data and let me
> know if you have any problems?
>
> Thank you for using JAXRPC RI.
>
> Baltz, Kenneth wrote:
> > 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.
> >
>
>
> --
> Doug Kohlert
> Java Software Division
> Sun Microsystems, Inc.
> phone: 503 345-9806
>


--
Doug Kohlert
Java Software Division
Sun Microsystems, Inc.
phone: 503 345-9806