Pavel,

I applied these patches, but the mime sample does not work.  Please get
this sample working and submit a new patch.

Thanks.

Scott Nichol

----- Original Message -----
From: "Pavel Ausianik" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Friday, November 15, 2002 9:59 AM
Subject: RE: Using mime parts - huge drawbacks


>
>
> Hi,
>
> I think I managed make it compatible to existing code and yet still
mush
> faster (8-10 sec of 60 I had in the morning ). The Mime part will be
creates
> as soon as it requested, otherwise plain Envelope used
> Also I set up initial buffer in couple of classes...
>
> Please take a look
>
> Also, if comparing to yesterday's picture timeload, we have 4 big time
> consumers, which I suppose quite logical
>
> 1. DocumentBulder.parse
> 2. RPCMessage.extractFromEnvelope
> 3. EnvelopeMaprshall
> 4. InputStream.read
>
> Pavel
>
> > -----Original Message-----
> > From: Scott Nichol [mailto:[EMAIL PROTECTED]]
> > Sent: Thursday, November 14, 2002 6:54 PM
> > To: [EMAIL PROTECTED]
> > Subject: Re: Using mime parts - huge drawbacks
> >
> >
> > Thanks for yet another valuable contribution!  I've committed this
> > patch.  Your others will have to wait a little while since I have to
> > earn some money today (instead of working on Apache SOAP).
> >
> > I have some questions.
> >
> > 1. What do you use to do this profile?  I have very little
experience
> > with profilers, mainly with JInsight, but that was over a year ago.
> >
> > 2. What is "ComplexRequest"?
> >
> > 3. Do you know what version of JavaMail you are using?
> >
> > Something very interesting that I had not noticed before is that
> > provider.invoke gets on the request and response contexts, so
> > that even
> > "plain" RPCs have their SOAP envelope put into SOAPContext and
> > subsequently extracted.  I am thinking that the SOAPContext
> > should gain
> > the ability to hold a SOAP envelope other than simply as the root
part
> > to avoid the expense of extracting it.  In fact, SOAPContext should
be
> > able to keep track of whether there are any attachments versus just
an
> > evelope to optimize the situation where there is only an envelope.
We
> > would use lazy evaluation to stuff it into the root part if the root
> > part is requested, but otherwise provide shortcuts to just access
the
> > envelope.
> >
> > Scott Nichol
> >
> > ----- Original Message -----
> > From: "Pavel Ausianik" <[EMAIL PROTECTED]>
> > To: <[EMAIL PROTECTED]>
> > Sent: Thursday, November 14, 2002 9:04 AM
> > Subject: RE: Using mime parts - huge drawbacks
> >
> >
> > > Scott,
> > >
> > > Here is server time picture taken on the Tomcat server ,
processing
> > > ComplexRequest.
> > > The red ellipses show that MimePart  initialization takes 10-15%
of
> > CPU
> > > load.
> > > The blue ellipses show that ContentType is also quite expensive
for
> > benefits
> > > it provide. I prepared patch for caching ContentType...
> > >
> > > Pavel
> > >
> > > > -----Original Message-----
> > > > From: Scott Nichol [mailto:[EMAIL PROTECTED]]
> > > > Sent: Wednesday, November 13, 2002 5:48 PM
> > > > To: [EMAIL PROTECTED]
> > > > Subject: Re: Using mime parts - huge drawbacks
> > > >
> > > >
> > > > Pavel,
> > > >
> > > > Yes, this is a good observation.  In the case where there are no
> > > > attachments, the process could be streamlined by serializing
> > directly.
> > > > I am still actively working on this part of the code
> > > > (TransportMessage,
> > > > SOAPContext, Call) and will look at sidestepping some of the
> > activity
> > > > where there are no attachments, just a SOAP envelope, which
> > > > as you point
> > > > out is the typical scenario.
> > > >
> > > > Scott Nichol
> > > >
> > > > ----- Original Message -----
> > > > From: "Pavel Ausianik" <[EMAIL PROTECTED]>
> > > > To: <[EMAIL PROTECTED]>
> > > > Sent: Wednesday, November 13, 2002 9:04 AM
> > > > Subject: Using mime parts - huge drawbacks
> > > >
> > > >
> > > > > Hello,
> > > > >
> > > > > thinking more on the current code I have found interesting
> > > > thing. Most
> > > > > requests we have a simple, straight SOAP envelopes, without
any
> > > > attachments.
> > > > > Looking how it is processed I have found following (traced
from
> > > > > httpconnection):
> > > > >
> > > > > In SOAPHTTPConnection.send() we call TransportMessage.save().
> > > > > Let's look into it (see my comment how I understand it:
> > > > >
> > > > >         String rootContentType = null;
> > > > >
> > > > > // Root Part is Not set for Simple Envelope !
> > > > >
> > > > >         if (ctx.isRootPartSet()) {
> > > > > //... Not in use for simple case
> > > > >         }
> > > > >
> > > > >         if (rootContentType == null)
> > > > >             rootContentType =
> > Constants.HEADERVAL_CONTENT_TYPE_UTF8;
> > > > >         if (getEnvelope() != null) {
> > > > >
> > > > > // Now really create root part - how important it is if we
> > > > now how to
> > > > write
> > > > > this Envelope without involving Mime !!!
> > > > >
> > > > >             ctx.setRootPart(envelope, rootContentType);
> > > > >         } else {
> > > > > //... Not in use for simple case
> > > > >         }
> > > > >
> > > > >         // Print the whole response to a byte array.
> > > > > // Tracing into this code we'll found that all it will do it
add
> > > > > unnecessary header to envelope
> > > > > // The headers include Content-Type - we know which is,
> > > > > // Content-id  - do we need it? Even if yes we can create any
id
> > > > > // Content-Transfer-Encoding - not for HTTp, anyway we
> > force it to
> > 8
> > > > bit
> > > > > // Content-Lenght - easy to calculate
> > > > >
> > > > >         ByteArrayOutputStream payload =
> > > > >             new ByteArrayOutputStream(1024);
> > > > >         ctx.writeTo(payload);
> > > > >         bytes = payload.toByteArray();
> > > > >
> > > > >         // Now strip off the headers. (Grmbl, get rid
> > of JavaMail
> > > > >         // for MIME support). Just intercept the Content-Type
> > > > > // Remove headers which created right now....
> > > > >
> > > > > ....
> > > > >
> > > > >         // TODO: should not send for HTTP response
> > > > >         headers.put("Accept-Encoding", "x-gzip");
> > > > >         if (Boolean.TRUE.equals(ctx.getGzip())) {
> > > > >             // Deflate
> > > > >             ByteArrayOutputStream baos =
> > > > >                                new
> > > > ByteArrayOutputStream(bytes.length
> > > > * 2);
> > > > >             GZIPOutputStream gzos = new
GZIPOutputStream(baos);
> > > > >             gzos.write(bytes, offset, bytes.length - offset);
> > > > >             gzos.close();
> > > > >             baos.close();
> > > > >             bytes = baos.toByteArray();
> > > > >             offset = 0;
> > > > >
> > > > >             headers.put("Content-Encoding", "x-gzip");
> > > > >         }
> > > > >
> > > > > Seems like we are doing wonderful job of running a lot
> > unnecessary
> > > > > operations,  involving a lot of memory allocations... It
> > > > could be most
> > > > > advanced improvement we ever done!
> > > > >
> > > > > Best regards,
> > > > > Pavel
> > > > >
> > > > >
> > > > >
> > > > > --
> > > > > To unsubscribe, e-mail:
> > > <mailto:[EMAIL PROTECTED]>
> > > > For additional commands, e-mail:
> > <mailto:[EMAIL PROTECTED]>
> > > >
> > > >
> > >
> > >
> > > --
> > > To unsubscribe, e-mail:
> > <mailto:[EMAIL PROTECTED]>
> > > For additional commands, e-mail:
> > <mailto:[EMAIL PROTECTED]>
> > >
> > >
> >
> >
> > --------------------------------------------------------------
> > ----------
> > --------
> >
> >
> > > --
> > > To unsubscribe, e-mail:
> > <mailto:[EMAIL PROTECTED]>
> > > For additional commands, e-mail:
> > <mailto:[EMAIL PROTECTED]>
> >
> >
> > --
> > To unsubscribe, e-mail:
<mailto:[EMAIL PROTECTED]>
> > For additional commands, e-mail:
<mailto:[EMAIL PROTECTED]>
> >
>
>


------------------------------------------------------------------------
--------


> --
> To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>


--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to