Hi, I am also facing serious performance issues with Axis. Currently, my webservices are hosted through WebLogic based web service framework, and it is behaving sanely. Whereas with Axis, I am getting JVM crashes and Out of Memory Errors.
Wanted to confirm whether the below mentioned way of changing Message.java and SoapPart.java in axis source helped solve the problem? Anybody has any clues or pointers towards performance issues of Axis? Thanks. -----Original Message----- From: Benedick Mark Chan [mailto:[EMAIL PROTECTED] Sent: Saturday, August 30, 2003 4:21 PM To: [EMAIL PROTECTED] Subject: Re: Out of Memory Hello, I'm sorry about my previous question with regards to the 500 internal server error, I have already fixed to problem - I wasn't able to jar my classes properly.. I have followed Sebastien's suggestion. But, still, it generates a broken pipe and an out of memory exception. =( For additional information, here's my service's code. Please help me. public Vector returnVector () { Vector v = new Vector (); for (int i=0; i < 1000000; i++) { v.add("Vector"); } System.out.println ("Done processing 1 million vector elements"); return v; } Thanks. ----- Original Message ----- From: "Benedick Mark Chan" <[EMAIL PROTECTED]> To: <[EMAIL PROTECTED]> Cc: <[EMAIL PROTECTED]> Sent: Wednesday, July 30, 2003 6:28 PM Subject: Re: Out of Memory > Hello Sebastien, > > Thanks for your reply. > > I have tried modifying the axis source code particularly Message.java and > SOAPPart.java, but I got a 500 Internal Server Error. > > Do you have any solution with regards to this problem? Any help will be > greatly appreciated. > > Best regards, > > Benedick > > ----- Original Message ----- > From: "Astie, Sebastien" <[EMAIL PROTECTED]> > To: <[EMAIL PROTECTED]> > Sent: Friday, August 29, 2003 1:57 AM > Subject: RE: Out of Memory > > > > I had a similar problem and I solved the problem by modifying > org.apache.axis.Message and org.apache.axis.SoapPart > > > > I hope it will solve your problem. > > > > > > What I have done is : > > > > modify the method writeTo in SoapPart : > > > > /** > > * Write the contents to the specified writer. > > */ > > public void writeTo(Writer writer) throws IOException { > > > > if ( currentForm == FORM_FAULT ) { > > AxisFault env = (AxisFault)currentMessage; > > try { > > env.output(new SerializationContextImpl(writer, > getMessage().getMessageContext())); > > } catch (Exception e) { > > log.error(Messages.getMessage("exception00"), e); > > throw env; > > } > > return; > > } else if ( currentForm == FORM_SOAPENVELOPE ) { > > > > > > SOAPEnvelope env = (SOAPEnvelope)currentMessage; > > try { > > env.output(new SerializationContextImpl(writer, > getMessage().getMessageContext())); > > } catch (Exception e) { > > throw AxisFault.makeFault(e); > > } > > return; > > } else { > > writer.write(this.getAsString()); > > } > > > > > > then in Message : > > > > add a constant : > > > > /** > > * This is the buffer size used to output xml contents. > > */ > > public static int DEFAULT_OUTPUT_BUFF_SIZE = 1000000; > > > > > > modify method getContentType > > > > public String getContentType(SOAPConstants sc) throws AxisFault { > > > > int sendType = Attachments.SEND_TYPE_NOTSET; > > if ((msgContext != null) && (msgContext.getService() != null)) { > > sendType = msgContext.getService().getSendType(); > > } > > > > /* > > if (sendType != Attachments.SEND_TYPE_NONE) { > > //Force serialization if it hasn't happend it. > > //Rick Rineholt fix this later. > > mSOAPPart.getAsBytes(); > > } */ > > > > String ret = sc.getContentType(); > > if (mAttachments != null && 0 != > mAttachments.getAttachmentCount()) { > > ret = mAttachments.getContentType(); > > } > > return ret; > > } > > > > > > > > modify method writeTo: > > > > public void writeTo(java.io.OutputStream os) throws SOAPException, > IOException { > > //Do it the old fashion way. > > if (mAttachments == null || 0 == > mAttachments.getAttachmentCount()) { > > try { > > Writer writer = new OutputStreamWriter(os,"UTF-8"); > > // writer = new BufferedWriter(writer); > > writer = new BufferedWriter(writer, > DEFAULT_OUTPUT_BUFF_SIZE); > > mSOAPPart.writeTo(writer); > > writer.flush(); > > } catch (java.io.IOException e) { > > log.error(Messages.getMessage("javaIOException00"), e); > > } > > } else { > > try { > > mAttachments.writeContentToStream(os); > > } catch (java.lang.Exception e) { > > log.error(Messages.getMessage("exception00"), e); > > } > > } > > } > > > > > > > > -----Original Message----- > > From: Ekbote, Niranjan [mailto:[EMAIL PROTECTED] > > Sent: Thursday, August 28, 2003 10:17 AM > > To: '[EMAIL PROTECTED]' > > Subject: RE: Out of Memory > > > > > > I am not sure if Axis supports streaming. I think that could solve your > > problem. > > > > Thanks! > > > > -- Niranjan. > > > > > > -----Original Message----- > > From: Benedick Mark Chan [mailto:[EMAIL PROTECTED] > > Sent: Thursday, August 28, 2003 1:08 PM > > To: [EMAIL PROTECTED] > > Subject: Re: Out of Memory > > > > > > Hello David, > > > > Thanks for your reply. > > > > I have tried increasing my heap size dramatically, but still it doesn't > > work. > > > > Is this a limitation of axis? If so, then I guess chopping to several > small > > chucks will be my last resort. =( > > > > Thanks. > > > > -Benedick > > > > ----- Original Message ----- > > From: "David You" <[EMAIL PROTECTED]> > > To: <[EMAIL PROTECTED]> > > Sent: Friday, August 29, 2003 1:03 AM > > Subject: RE: Out of Memory > > > > > > > 1. Are you sure WS is good solution for you? > > > 2. If you are sure, try to config VM with more heap size. > > > 3. still doesn't work? Try to chop it in several small chunk. > > > > > > David > > > > > > -----Original Message----- > > > From: Benedick Mark Chan [mailto:[EMAIL PROTECTED] > > > Sent: Thursday, August 28, 2003 9:48 AM > > > To: [EMAIL PROTECTED] > > > Subject: Out of Memory > > > > > > > > > Hello guys, > > > > > > I would like to ask a question with regards to the memory usage of > axis... > > > > > > I have tried populating 6 million strings to a vector, and return the > > vector > > > to the client. The server has successfully populated the vector with 6 > > > million > > > strings, but when the server send the vector to the client, the server > > > throws an > > > out of memory exception. Is there any way to solve this problem? Please > > help > > > me. > > > > > > Thanks. > > > > > > Sincerely Yours, > > > > > > Benedick > > > > > > >
