I just recalled that Strings in a SOAP request are sent as element text and not embedded in a CDATA section. Since my String is actually an XML document, this means i've got around 50,000 tags with < and > that are all being escaped into entities. My guess is that this is too much work for the XML parser on the client side- processing the element text may be what is causing the OutOfMemoryException.
Why are SOAP parameters not embedded inside CDATA sections? Is there some way to force this to happen?


Brian W. Young wrote:

I would agree with this- I do not think this is a stack size problem. So, this being the case, what is the deal here? Does Axis not support parameters that have this large of a value? I'm clearly not doing anything in my client to cause a memory issue, since in this case the client is a frame with a button that uses the example code to make a SOAP request.

James Carman wrote:

However, String parameters are actually object reference parameters. So,
the contents of the string are not copied onto the stack, only the value of
the reference (basically the address of the string on the heap). ALL
objects live on the heap in Java.
----- Original Message -----
From: "Daleiden, Mike" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Monday, January 13, 2003 4:18 PM
Subject: RE: Axis client, OutOfMemoryException


You're probably overrunning your stack, not heap. Try increasing stack
size on the client VM. When arguments are passed in a method call, they
are placed on the stack, not the heap.

-----Original Message-----
From: Brian W. Young [mailto:[EMAIL PROTECTED]]
Sent: Monday, January 13, 2003 4:15 PM
To: [EMAIL PROTECTED]
Subject: Axis client, OutOfMemoryException


Hello,

I have a simple Axis client, just a few lines borrowed from the included

examples. My call returns String, and in this case the String is the
contents of a 2 meg XML file that I will be parsing into a Document once

it has been received.

However, I can't get that far. With a 128 meg heap I get an
OutOfMemoryException on the client apparently during call.invoke().
Everything works fine if I use a smaller String.

Whats going on here? I'm not sure how 2 meg of data is blowing out a
128 meg heap. Any ideas?










Reply via email to