looking, see problem... > -----Original Message----- > From: Scott Nichol [mailto:[EMAIL PROTECTED]] > Sent: Wednesday, November 20, 2002 8:26 AM > To: [EMAIL PROTECTED] > Subject: Re: Using mime parts - huge drawbacks > > > 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]> -- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>