Yes, the rpcrouter does parse the entire message into DOM.  I believe that
it uses the DocumentBuilder.  Could it be parsing your XML String into DOM
and then converting it back to String to pass to your SOAP Service?  This
would be unnecessary overhead.

Do you think that it would be worth seeing how the system performs when the
Xerces DocumentBuilder parses the entire SOAP message?  

You can set up this test and check it out.  Also, you could substitute '<'
characters with some other char (like pipe '|') that you know isn't in the
payload and then replace back at the soap service level.  This is quirky and
I wouldn't do it, but I figured that I would through it out there. 


Good Luck..
Craig

-----Original Message-----
From: Hashimoto, Mike [mailto:[EMAIL PROTECTED]]
Sent: Friday, November 30, 2001 5:41 PM
To: Soap (E-mail)
Subject: RE: XML Payload Performance


Craig (& others),

When my method finally gets called on the Soap server side, I timestamp it
and write the string to a file.  The XML 'file' on the server side matches
exactly what the client is sending (so that's good).  But I am passing the
XML payload as a string, not a DOM element.  On the server side I then parse
the payload in SAX.

Here's a brief snippet of the TCPTunnelGui output:

<ns1:postUpdate xmlns:ns1="urn:xmlpayloadserver-service"
SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/";>
<newPayload
xsi:type="xsd:string">&lt;UpdateObject&gt;&lt;ServerName&gt;RN2KPRO&lt;/Serv
erName&gt;&lt;TimeStamp/&gt;&lt;ESticket/&gt;&lt;EMSticket/&gt;&lt;Device&gt
;&lt;IPAdress&gt;166.154.24.154:B9B9&lt;/IPAdress&gt;&lt;Name&gt;Jill&lt;/Na
me&gt;&lt;Location&gt;Lab2&lt;/Location&gt;&lt;Contact&gt;Contact Name
Here&lt;/Contact&gt;&lt;MACAddress&gt;771018019&lt;/MACAddress&gt;&lt;Device
Type&gt;IR5000-E82&lt;/DeviceType&gt;&lt;DeviceInfo/&gt;&lt;BillingCounter&g
t;&lt;LogName&gt;category_document__print_job_service__print_job_service&lt;
/LogName&gt;&lt;Record&gt;&lt;RecordNumber&gt;46&lt;/RecordNumber&gt;

etc, etc, etc.

So the payload is getting 'escaped' to make it an innocuous string while
Soap handles it.  The delay I'm experiencing is the time the client makes
the call until the time the server receives the call (and the XML payload
'string').    From an application standpoint, I haven't done anything with
the data at this point.  As I noted earlier, when I just ship a 300K non-XML
string, everything occurs in < 1 sec.  So it has to be the
marshalling/unmarshalling.  But why so long and is there anything
configuration-wise that can be done to speed this up.

My concern is interoperability with a .NET client and Apache Soap 2.2
server.

The server is Win2000 with 500MB memory and perfmon shows memory is not an
issue.  The CPU is railed at 100%, so Soap is thinking hard.

Is it possible Soap internally takes the XML and converts it to a DOM
document in this transformation process?  There must be some kind of
overhead like this in addition to the char transform going on.

Any insight appreciated.

tks,
  mh

-----Original Message-----
From: Wilkins, Craig [mailto:[EMAIL PROTECTED]]
Sent: Friday, November 30, 2001 12:48 PM
To: '[EMAIL PROTECTED]'
Subject: RE: XML Payload Performance


Have you tried modifying your SOAP service to print out the input String to
sdtout and comparing the performance differences? 

I am just trying to make sure that the additional performance hit isn't your
SOAP Service parsing the XML string into some sort of XML object..


-----Original Message-----
From: Hashimoto, Mike [mailto:[EMAIL PROTECTED]]
Sent: Friday, November 30, 2001 12:46 PM
To: '[EMAIL PROTECTED]'
Subject: RE: XML Payload Performance


With an XML payload string, all of the '<' char's are transformed (escaped)
into "&lt;", likewise for '>'.  I'm not sure of all the char's that are
escaped.  I know apostrophe is another.  

It certainly adds to the overall size and I suppose this is why it is not
recommended for larger payloads.  But still, to me, 300K is not that large a
payload.  There must be something in Apache Soap that is incredibly
inefficient during these transforms that makes the overall processing
sssoooo slow.

  mh

-----Original Message-----
From: Wilkins, Craig [mailto:[EMAIL PROTECTED]]
Sent: Thursday, November 29, 2001 7:46 PM
To: '[EMAIL PROTECTED]'
Subject: RE: XML Payload Performance



Compare the SOAP message payload of the 300K string to the payload of the
String that is XML?  There has to be something different.  What does your
soap service method do with the input string?  Is there a performance issue
as it parses it into DOM, etc?  What if you just print it out, do you see
the same performance issue?

  



-----Original Message-----
From: Hashimoto, Mike [mailto:[EMAIL PROTECTED]]
Sent: Thursday, November 29, 2001 7:06 PM
To: Soap (E-mail)
Subject: XML Payload Performance


Hello All,

Problem: Shipping an XML string, ~300K in length.  When Apache Soap 2.2
receives, it takes about 35+ sec's before the actual method on the server
side gets dispatched!  There are many tags and the marshalling/unmarshalling
of the XML data is causing the extreme delay.  The server CPU is railed at
100% during this time.  Moreover, a network monitor was used to monitor the
packet and acknowledgements to verify the issue.

Questions:  We are using a .NET client and Apache Soap 2.2 server (currently
on Win2000 with Tomcat 3.2.3).  I've seen here (on the mailing list) that
there is no support for MIME mail attachments yet in .NET.  I know I could
opt for doing my own marshalling within the Soap envelope.

  Are there any other suitable options at this time?
  Anyone know the timeframe for .NET support of attachments?

I was also under the impression that LITERAL XML encoding was not yet
supported in .NET (i.e. XML string was the "lowest common denominator").

As an aside, also sent ~300K non-XML string data and it gets sent in < 1
sec.

Any advice much appreciated.

Regards,
  mh

Reply via email to