Handling large SOAP payloads is something Apache SOAP is known to do slowly, but there is no major improvement planned. Several places, the code works with the payload in DOM form. Changing to something that would be faster and require less memory (e.g. using a SAX or pull parser) would require too much work. Axis, the next generation of Apache SOAP, does *not* use a DOM parser.
Scott Nichol Do not send e-mail directly to this e-mail address, because it is filtered to accept only mail from specific mail lists. ----- Original Message ----- From: "Tudor, Liviu @Cimage" <[EMAIL PROTECTED]> To: "Scott Nichol" <[EMAIL PROTECTED]> Sent: Wednesday, February 04, 2004 6:13 AM Subject: RE: Long delays experienced with Apache SOAP due to the HTTPUtils.post method Hi Scott, thanks for the reply! Nagling didn't improve the speed too much, however, out of a sudden I think actually the problem relies on the IIS/.NET side -- due to the way the system is configured it looks like .NET takes a while to load/start/run the webservice itself, hence the initial delay. Still, there is the problem of very long XML responses which of course are read in a memory-buffer on Apache SOAP's side, but I suppose this cannot be improved/avoided in any way -- or .. can it? :O Thanks anyway for the response, and sorry for not having checked more thoroughly in the first place! Regards, Liviu Tudor Cimage Novasoft Limited www.cimagenovasoft.com [EMAIL PROTECTED] Fax: +44 (0)1344 767701 Direct Line: +44 (0)1344 767759 Centennial Court, Easthampstead Road, Bracknell, BERKS, RG12 1JZ Real programmers don't comment their code. If it was hard to write, it should be hard to understand. -----Original Message----- From: Scott Nichol [mailto:[EMAIL PROTECTED] Sent: Tuesday, February 03, 2004 5:31 PM To: [EMAIL PROTECTED]; Tudor, Liviu @Cimage Subject: Re: Long delays experienced with Apache SOAP due to the HTTPUtils.post method The parsing itself does not take a second. The delay is presumably in reading data being returned, or even in sending the data, although 1 second is still a very long time. The first suggestion is to disable Nagling. This is done by calling setTcpNoDelay() on the SOAPHTTPConneciton class. Scott Nichol Do not send e-mail directly to this e-mail address, because it is filtered to accept only mail from specific mail lists. ----- Original Message ----- From: "Tudor, Liviu @Cimage" <[EMAIL PROTECTED]> To: <[EMAIL PROTECTED]> Sent: Tuesday, February 03, 2004 12:03 PM Subject: Long delays experienced with Apache SOAP due to the HTTPUtils.post method Hi everyone! I am currently using Apache SOAP 2.3.1 together with JDK 1.4 and Xerces-J 2.0.0; I have written some proxy classes to access a few webservices written in .NET and it worked fine; however at some point I came across some delays during the synchronuous calls made from my proxies to the .NET side. I've added extra logging in my classes and it transpired that the actual delay occurs in the Message.send function. Further refinements of my searches showed in the end that the "bottleneck" is actually in the HTTPUtils function in the function send, in between the following lines: BufferedInputStream bInStream = new BufferedInputStream(inStream); /* Read the response status line. */ int statusCode = 0; String statusString = null; StringBuffer linebuf = new StringBuffer(); int b = 0; while (b != '\n' && b != -1) { b = bInStream.read(); if (b != '\n' && b != '\r' && b != -1) linebuf.append((char)b); } String line = linebuf.toString(); try { StringTokenizer st = new StringTokenizer(line); st.nextToken(); // ignore version part statusCode = Integer.parseInt (st.nextToken()); StringBuffer sb = new StringBuffer(); while (st.hasMoreTokens()) { sb.append (st.nextToken()); if (st.hasMoreTokens()) { sb.append(" "); } } statusString = sb.toString(); } catch (Exception e) { throw new IllegalArgumentException( "Error parsing HTTP status line \"" + line + "\": " + e); } It seem that the actual parsing of the status line takes over a second, on a "normal" PIII 800 MHz with 512 MB of RAM, which is quite a delay. Also, the same problem seems to appear in one of our customers' site, who's running BEA WebLogic on a Sparc quad-processor machine with 2 Gb of RAM. Has anyone encountered this before and is there a way to bypass it? Regards, Liviu Tudor Cimage Novasoft Limited www.cimagenovasoft.com [EMAIL PROTECTED] Fax: +44 (0)1344 767701 Direct Line: +44 (0)1344 767759 *Centennial Court, Easthampstead Road, Bracknell, BERKS, RG12 1JZ Real programmers don't comment their code. If it was hard to write, it should be hard to understand.