Pavel, I could not use patch on these patches, apparently because they are done against older CVS versions. I need the diffs against the current CVS sources. Also, please send diffs for all 5 files (SOAPContext, Call, TransportMessage, RPCJavaProvider, RPCRouterServlet).
Thanks. Scott Nichol ----- Original Message ----- From: "Pavel Ausianik" <[EMAIL PROTECTED]> To: <[EMAIL PROTECTED]> Sent: Wednesday, November 20, 2002 6:09 AM Subject: RE: Using mime parts - huge drawbacks > Scott, > > It seems like two bugs fixed. > > One is related to missed fillRootPart() in SOAPContext.writeTo() > Second is relates on how content type identified in case envelope is set > Attaching a patch against current cvs > > During mime test execution I had one error related to SOAP registry > > Generated fault: [Attributes={}] [faultCode=SOAP-ENV:Server] > [faultString=java.l > ang.IllegalArgumentException: No mapping found for 'java.lang.Object' using > enco > ding style 'http://schemas.xmlsoap.org/soap/encoding/'.] > [faultActorURI=/soap/se > rvlet/rpcrouter] [DetailEntries=] [FaultEntries=] > > This should not be related to Mime Part, and I'll look at this Friday (sorry > busy today-tomorrow) > > Best regards, > Pavel > > > > > -----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]> -- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>