axis-c-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Doug Price <Doug.Pr...@presagis.com>
Subject RE: soap message limits - resolved one issue
Date Mon, 16 Aug 2010 18:47:06 GMT
This fixed it!  I tried testing w/ a .NET client and it worked, so I knew it had to be something
on the Axis2c side.  Your fixed saved me a ton of time.  Thanks so much.


--
Doug Price
Research Director | Presagis

T. +1 972 943.2400 X2433 F. +1 469 467.4564 C. +1 469 867.8399

DISCLAIMER: This e-mail message is for the sole use of the intended recipient(s) and may contain
confidential and/or proprietary information. Do not read, copy, or disseminate this message
unless you are the addressee. Any unauthorized review, use, disclosure or distribution is
strictly prohibited. If you have received this message in error, please contact the sender
by reply e-mail and delete the original and any copies from your system.

From: Steven Zhang [mailto:szhang@altigen.com]
Sent: Monday, August 16, 2010 12:45 PM
To: Apache AXIS C User List
Subject: Re: soap message limits - resolved one issue

I faced the same issue last week. The problem is my Axis2c client cannot receive response
> 400K. When I run Axis2c client with Axis2c web service there is no problem, but my customer's
web service is made by .Net, whose response structure is different from mine.

The reason is found by debugging into Axis2c sources. The problem is in guththila_xml_parser.c
(Guththila.dll).

Suppose maximum size of each socket packet is 16K, to receive a 400K data it needs to receive
25 packets. For each packet Guththila.dll will allocate a memory with doubled size. At the
15th time, the packet size increased 2 ^ 15 = 32768 times, the new memory size will be 16K
* 32768 = 524M, allocation failed here. When the problem happen, I do find the program eats
up to 1G memory.

To resolve it, increase new memory size only when data_size * 2 > buffer_size, so the new
memory will keep less than 1 to 2 M. I tested it with 400K and  800K response, it all worked.
It even works with 2M response. The modified file is attached.

For Axis2c web service, the response is in XML format. Whenever guththila_xml_parser.c find
a '<' sign, it will create a new node for the element. But for .Net web service, the response
is a single string, all '<' signs are replaced with "&lt;". The function has to allocate
new memory to hold all 400K or more data. This is the reason why the problem occurs to .Net
web service only.

Hope it's useful to you.

Steven Zhang

----- Original Message -----
From: Doug Price<mailto:Doug.Price@presagis.com>
To: c-user@axis.apache.org<mailto:c-user@axis.apache.org>
Sent: Friday, August 13, 2010 10:40 AM
Subject: soap message limits

I'm using Axis2c to send base 64 binary encoded data via SOAP and this works fine as long
as my data is small enough.  For example, it works on a 6KB file, but when I try to use this
for a 183KB file it fails.  Is there an internal limit in Axis2c for SOAP messages or base
64 binary data?  If so, are there any values I can change in the source to increase these
limits?


--
Doug Price
Research Director | Presagis

T. +1 972 943.2400 X2433 F. +1 469 467.4564 C. +1 469 867.8399

DISCLAIMER: This e-mail message is for the sole use of the intended recipient(s) and may contain
confidential and/or proprietary information. Do not read, copy, or disseminate this message
unless you are the addressee. Any unauthorized review, use, disclosure or distribution is
strictly prohibited. If you have received this message in error, please contact the sender
by reply e-mail and delete the original and any copies from your system.



Mime
View raw message