hi Linus, thanks for the link! after doing some reading, I'm still not sure which category this service falls under. I've attached an edited (identifying info replaced by 'xxxx' and 'yyyy') version of the WSDL for this service.
For reference, I have -Xmx1024m set in the JVM. Have you had any luck with the attachment streaming? I can't figure out how to enable or configure Axis to use it. This is my first time working with Axis, so needless to say I'm fumbling in the dark a little bit. This codebase is larger than any I've worked in the past for a web service, as well. I'm going to continue to investigate and research - I'll post what I find, and hope you'll keep me posted to your progress. cheers, - Jared On 2/2/06, Linus Kamb <[EMAIL PROTECTED]> wrote: > Hi, Jared. > > doc/lit wrapped is the web service "style". There are various styles: > primarily RPC-encoded, document/literal, and "wrapped" which is a variation > on document/literal. Much information available about that. The following > is probably not the best introductory information, but I happened to see it > this morning: > > http://www-128.ibm.com/developerworks/webservices/library/ws-whichwsdl/ > > I guess I was just wondering if your web service was trying to parse the > SOAP msg XML into a DOM Element. > > I haven't tried mulitple simultaneous submits. I suppose my service might > run out of memory too. > > I have my java startup params set to -Xmx768m, and I currently reject > messages over 2MB (rather than trying to parse the XML.) > > I suppose this isn't going to help your situation. I'm going to look into > the attachment streaming that Dims mentioned for my app. > > Linus > > > > Jared Klett wrote: > hi Linus, > > I can send a single request at a time of the required size, and it > will succeed. However, when I start more simultaneous requests beyond > the first one, they invariably fail with OutOfMemoryErrors. The OOM > occurs somewhere inside of Axis. > > The web service works like this: it runs inside Tomcat, and passes > through a couple of Tomcat filters before reaching the AxisServlet. > I've monitored the logging, and all simultaneous requests make it > through the filters with no problem. Once the flow passes into the > AxisServlet, and subsequently to SOAPMonitor, the OOM's start to > occur. > > I attached a debug log snippet to the initial message in this thread. > > Also, what do you mean by "doc/lit wrapped"? > > cheers, > > - Jared > > On 2/2/06, Linus Kamb <[EMAIL PROTECTED]> wrote: > > > What "style" of web service are you using? > > I have successfully sent attachments of > 200MB using doc/lit wrapped, > and I'm sure I could send larger ones. > The trouble I run into is when I try to parse the attachments (they are > XML,) but that is outside of Axis/SOAP. > > > Jared Klett wrote: > > > > greetings all, > > I've taken a contract job to improve the performance of a Java Web > Service based on Axis. The service is required to handle multiple > simultaneous SOAP requests that can be anywhere from two to 100 MB in > size. So far, the service fails with an OutOfMemoryError when I submit > any more than one simultaneous request at a time. > > I participated in a previous thread entitled "Status w/r/t memory > leaks..." started by Jesse Sightler. I've tried the Axis 1.3 final > release, as well as a version built from the trunk of the latest (as > of yesterday) SVN source tree. > > The SOAP requests have a number of attachments in the form of > base64-encoded data, which look something like this: > > <data sid="data_5"> > <filename>spacer.gif</filename> > <mimedata>R0lGODlhAQABAIAAAAAAAAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==</mimedata> > </data> > > The content inside the <mimedata> tag can be extremely large - as I > mentioned, these requests can be upwards of 100 MB in size. > > I've tweaked the JVM parameters, setting the max and initial heap > sizes, the perm gen heap size, as well as trying several different > options to change the behavior of the garbage collector - all to no > avail. > > I've narrowed down the problem down to the point where I'm sure it's > happening somewhere inside of Axis - the request is submitted to > AxisServlet, then passed to SOAPMonitor via an invoke() call. > > Here is a snippet of the debug log output before the OOM happens: > > [] [2006-01-30 15:45:23,404] SAXOutputter - SAXOutputter.endElement > ['' reporterCcc] > [] [2006-01-30 15:45:23,404] ProjectResourceBundle - > org.apache.axis.i18n.resource::handleGetObject(endElem00) > [] [2006-01-30 15:45:23,404] SerializationContext - End element reporterCcc > [] [2006-01-30 15:45:23,404] NSStack - NSPop (32) > [] [2006-01-30 15:45:23,404] SAXOutputter - SAXOutputter.endElement > ['http://xxxxxxxx.yyyyyyy.com' fileTestSubmission] > [] [2006-01-30 15:45:23,404] ProjectResourceBundle - > org.apache.axis.i18n.resource::handleGetObject(endElem00) > [] [2006-01-30 15:45:23,404] SerializationContext - End element > q1:fileTestSubmission > [] [2006-01-30 15:45:23,404] NSStack - NSPop (32) > [] [2006-01-30 15:45:23,404] SAXOutputter - SAXOutputter.endElement > ['http://schemas.xmlsoap.org/soap/envelope/' Body] > [] [2006-01-30 15:45:23,404] ProjectResourceBundle - > org.apache.axis.i18n.resource::handleGetObject(endElem00) > [] [2006-01-30 15:45:23,404] SerializationContext - End element soap:Body > [] [2006-01-30 15:45:23,404] NSStack - NSPop (32) > [] [2006-01-30 15:45:23,404] SAXOutputter - SAXOutputter.endElement > ['http://schemas.xmlsoap.org/soap/envelope/' Envelope] > [] [2006-01-30 15:45:23,404] ProjectResourceBundle - > org.apache.axis.i18n.resource::handleGetObject(endElem00) > [] [2006-01-30 15:45:23,404] SerializationContext - End element > soap:Envelope > [] [2006-01-30 15:45:23,404] ProjectResourceBundle - > org.apache.axis.i18n.resource::handleGetObject(empty00) > [] [2006-01-30 15:45:23,405] NSStack - NSPop (empty) > [] [2006-01-30 15:45:23,405] SAXOutputter - SAXOutputter.endDocument > [] [2006-01-30 15:45:38,782] ProjectResourceBundle - > org.apache.axis.i18n.resource::handleGetObject(exception00) > [] [2006-01-30 15:45:38,782] EXCEPTIONS - Exception: > java.lang.OutOfMemoryError: Java heap space > > I have been looking at the source code to Axis, and I note that in > SOAPPart, around line 444, data is loaded via an InputStream into a > memory-resident byte array. So far that's the only place I can find > that might actually be causing the problem. > > It seems logical that a large SOAP request that is separated into > attachments should be written to disk, and then parsed inside of a > buffer. Here is a link to an article with such a code example (under > "Receive and process a SOAP message with SAAJ", a little more than > halfway down the page): > > http://www.javaworld.com/javaworld/jw-09-2003/jw-0912-webservices-p2.html > > I've read the archives of this mailing list, so I know I'm not the > first one to run into this issue. So far, I have not found any > proposed solutions. > > I'm going to continue to investigate, but I would really appreciate > some help or insights from the list. Thanks very much! > > cheers, > > - Jared > > > > > >
<?xml version="1.0" encoding="UTF-8"?> <wsdl:definitions targetNamespace="http://xxxx.yyyy.com/services/Filing" xmlns:apachesoap="http://xml.apache.org/xml-soap" xmlns:impl="http://xxxx.yyyy.com/services/Filing" xmlns:intf="http://xxxx.yyyy.com/services/Filing" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tns1="http://xxxx.yyyy.com" xmlns:tns2="http://lang.java" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <!--WSDL created by Apache Axis version: 1.4 Built on Feb 02, 2006 (11:36:46 EST)--> <wsdl:types> <schema targetNamespace="http://xxxx.yyyy.com" xmlns="http://www.w3.org/2001/XMLSchema"> <import namespace="http://lang.java"/> <import namespace="http://schemas.xmlsoap.org/soap/encoding/"/> <complexType name="PublishingEngineException"> <sequence> <element name="cause" nillable="true" type="xsd:anyType"/> <element name="message" nillable="true" type="soapenc:string"/> </sequence> </complexType> </schema> </wsdl:types> <wsdl:message name="getTransferStatusRequest"> <wsdl:part name="dataSize" type="xsd:int"/> </wsdl:message> <wsdl:message name="fileTestSubmissionRequest"> <wsdl:part name="xfdl" type="soapenc:string"/> <wsdl:part name="reporterCik" type="soapenc:string"/> <wsdl:part name="reporterCcc" type="soapenc:string"/> </wsdl:message> <wsdl:message name="getFilingNotificationRequest"> <wsdl:part name="accessionNumber" type="soapenc:string"/> <wsdl:part name="reporterCik" type="soapenc:string"/> <wsdl:part name="reporterCcc" type="soapenc:string"/> </wsdl:message> <wsdl:message name="getGenerateStatusRequest"> <wsdl:part name="id" type="xsd:int"/> </wsdl:message> <wsdl:message name="fileTestSubmissionResponse"> <wsdl:part name="fileTestSubmissionReturn" type="soapenc:string"/> </wsdl:message> <wsdl:message name="getFilingNotificationResponse"> <wsdl:part name="getFilingNotificationReturn" type="soapenc:string"/> </wsdl:message> <wsdl:message name="getDocumentRequest"> <wsdl:part name="id" type="xsd:int"/> </wsdl:message> <wsdl:message name="generateSubmissionRequest"> <wsdl:part name="xml" type="soapenc:string"/> </wsdl:message> <wsdl:message name="getFilingStatusRequest"> <wsdl:part name="accessionNumber" type="soapenc:string"/> <wsdl:part name="reporterCik" type="soapenc:string"/> <wsdl:part name="reporterCcc" type="soapenc:string"/> </wsdl:message> <wsdl:message name="getFilingStatusResponse"> <wsdl:part name="getFilingStatusReturn" type="soapenc:string"/> </wsdl:message> <wsdl:message name="welcomeResponse"> <wsdl:part name="welcomeReturn" type="soapenc:string"/> </wsdl:message> <wsdl:message name="getGenerateStatusResponse"> <wsdl:part name="getGenerateStatusReturn" type="xsd:int"/> </wsdl:message> <wsdl:message name="fileLiveSubmissionRequest"> <wsdl:part name="xfdl" type="soapenc:string"/> <wsdl:part name="reporterCik" type="soapenc:string"/> <wsdl:part name="reporterCcc" type="soapenc:string"/> </wsdl:message> <wsdl:message name="PublishingEngineException"> <wsdl:part name="fault" type="tns1:PublishingEngineException"/> </wsdl:message> <wsdl:message name="getTransferStatusResponse"> <wsdl:part name="getTransferStatusReturn" type="soapenc:string"/> </wsdl:message> <wsdl:message name="welcomeRequest"> </wsdl:message> <wsdl:message name="fileLiveSubmissionResponse"> <wsdl:part name="fileLiveSubmissionReturn" type="soapenc:string"/> </wsdl:message> <wsdl:message name="generateSubmissionResponse"> <wsdl:part name="generateSubmissionReturn" type="xsd:int"/> </wsdl:message> <wsdl:message name="getDocumentResponse"> <wsdl:part name="getDocumentReturn" type="soapenc:string"/> </wsdl:message> <wsdl:portType name="FilingServices"> <wsdl:operation name="getDocument" parameterOrder="id"> <wsdl:input message="impl:getDocumentRequest" name="getDocumentRequest"/> <wsdl:output message="impl:getDocumentResponse" name="getDocumentResponse"/> <wsdl:fault message="impl:PublishingEngineException" name="PublishingEngineException"/> </wsdl:operation> <wsdl:operation name="generateSubmission" parameterOrder="xml"> <wsdl:input message="impl:generateSubmissionRequest" name="generateSubmissionRequest"/> <wsdl:output message="impl:generateSubmissionResponse" name="generateSubmissionResponse"/> <wsdl:fault message="impl:PublishingEngineException" name="PublishingEngineException"/> </wsdl:operation> <wsdl:operation name="welcome"> <wsdl:input message="impl:welcomeRequest" name="welcomeRequest"/> <wsdl:output message="impl:welcomeResponse" name="welcomeResponse"/> </wsdl:operation> <wsdl:operation name="getFilingStatus" parameterOrder="accessionNumber reporterCik reporterCcc"> <wsdl:input message="impl:getFilingStatusRequest" name="getFilingStatusRequest"/> <wsdl:output message="impl:getFilingStatusResponse" name="getFilingStatusResponse"/> <wsdl:fault message="impl:PublishingEngineException" name="PublishingEngineException"/> </wsdl:operation> <wsdl:operation name="getGenerateStatus" parameterOrder="id"> <wsdl:input message="impl:getGenerateStatusRequest" name="getGenerateStatusRequest"/> <wsdl:output message="impl:getGenerateStatusResponse" name="getGenerateStatusResponse"/> <wsdl:fault message="impl:PublishingEngineException" name="PublishingEngineException"/> </wsdl:operation> <wsdl:operation name="fileTestSubmission" parameterOrder="xfdl reporterCik reporterCcc"> <wsdl:input message="impl:fileTestSubmissionRequest" name="fileTestSubmissionRequest"/> <wsdl:output message="impl:fileTestSubmissionResponse" name="fileTestSubmissionResponse"/> <wsdl:fault message="impl:PublishingEngineException" name="PublishingEngineException"/> </wsdl:operation> <wsdl:operation name="fileLiveSubmission" parameterOrder="xfdl reporterCik reporterCcc"> <wsdl:input message="impl:fileLiveSubmissionRequest" name="fileLiveSubmissionRequest"/> <wsdl:output message="impl:fileLiveSubmissionResponse" name="fileLiveSubmissionResponse"/> <wsdl:fault message="impl:PublishingEngineException" name="PublishingEngineException"/> </wsdl:operation> <wsdl:operation name="getFilingNotification" parameterOrder="accessionNumber reporterCik reporterCcc"> <wsdl:input message="impl:getFilingNotificationRequest" name="getFilingNotificationRequest"/> <wsdl:output message="impl:getFilingNotificationResponse" name="getFilingNotificationResponse"/> <wsdl:fault message="impl:PublishingEngineException" name="PublishingEngineException"/> </wsdl:operation> <wsdl:operation name="getTransferStatus" parameterOrder="dataSize"> <wsdl:input message="impl:getTransferStatusRequest" name="getTransferStatusRequest"/> <wsdl:output message="impl:getTransferStatusResponse" name="getTransferStatusResponse"/> <wsdl:fault message="impl:PublishingEngineException" name="PublishingEngineException"/> </wsdl:operation> </wsdl:portType> <wsdl:binding name="FilingSoapBinding" type="impl:FilingServices"> <wsdlsoap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/> <wsdl:operation name="getDocument"> <wsdlsoap:operation soapAction=""/> <wsdl:input name="getDocumentRequest"> <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://webservices.yyyy.com" use="encoded"/> </wsdl:input> <wsdl:output name="getDocumentResponse"> <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://xxxx.yyyy.com/services/Filing" use="encoded"/> </wsdl:output> <wsdl:fault name="PublishingEngineException"> <wsdlsoap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="PublishingEngineException" namespace="http://xxxx.yyyy.com/services/Filing" use="encoded"/> </wsdl:fault> </wsdl:operation> <wsdl:operation name="generateSubmission"> <wsdlsoap:operation soapAction=""/> <wsdl:input name="generateSubmissionRequest"> <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://webservices.yyyy.com" use="encoded"/> </wsdl:input> <wsdl:output name="generateSubmissionResponse"> <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://xxxx.yyyy.com/services/Filing" use="encoded"/> </wsdl:output> <wsdl:fault name="PublishingEngineException"> <wsdlsoap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="PublishingEngineException" namespace="http://xxxx.yyyy.com/services/Filing" use="encoded"/> </wsdl:fault> </wsdl:operation> <wsdl:operation name="welcome"> <wsdlsoap:operation soapAction=""/> <wsdl:input name="welcomeRequest"> <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://webservices.yyyy.com" use="encoded"/> </wsdl:input> <wsdl:output name="welcomeResponse"> <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://xxxx.yyyy.com/services/Filing" use="encoded"/> </wsdl:output> </wsdl:operation> <wsdl:operation name="getFilingStatus"> <wsdlsoap:operation soapAction=""/> <wsdl:input name="getFilingStatusRequest"> <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://webservices.yyyy.com" use="encoded"/> </wsdl:input> <wsdl:output name="getFilingStatusResponse"> <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://xxxx.yyyy.com/services/Filing" use="encoded"/> </wsdl:output> <wsdl:fault name="PublishingEngineException"> <wsdlsoap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="PublishingEngineException" namespace="http://xxxx.yyyy.com/services/Filing" use="encoded"/> </wsdl:fault> </wsdl:operation> <wsdl:operation name="getGenerateStatus"> <wsdlsoap:operation soapAction=""/> <wsdl:input name="getGenerateStatusRequest"> <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://webservices.yyyy.com" use="encoded"/> </wsdl:input> <wsdl:output name="getGenerateStatusResponse"> <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://xxxx.yyyy.com/services/Filing" use="encoded"/> </wsdl:output> <wsdl:fault name="PublishingEngineException"> <wsdlsoap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="PublishingEngineException" namespace="http://xxxx.yyyy.com/services/Filing" use="encoded"/> </wsdl:fault> </wsdl:operation> <wsdl:operation name="fileTestSubmission"> <wsdlsoap:operation soapAction=""/> <wsdl:input name="fileTestSubmissionRequest"> <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://webservices.yyyy.com" use="encoded"/> </wsdl:input> <wsdl:output name="fileTestSubmissionResponse"> <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://xxxx.yyyy.com/services/Filing" use="encoded"/> </wsdl:output> <wsdl:fault name="PublishingEngineException"> <wsdlsoap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="PublishingEngineException" namespace="http://xxxx.yyyy.com/services/Filing" use="encoded"/> </wsdl:fault> </wsdl:operation> <wsdl:operation name="fileLiveSubmission"> <wsdlsoap:operation soapAction=""/> <wsdl:input name="fileLiveSubmissionRequest"> <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://webservices.yyyy.com" use="encoded"/> </wsdl:input> <wsdl:output name="fileLiveSubmissionResponse"> <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://xxxx.yyyy.com/services/Filing" use="encoded"/> </wsdl:output> <wsdl:fault name="PublishingEngineException"> <wsdlsoap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="PublishingEngineException" namespace="http://xxxx.yyyy.com/services/Filing" use="encoded"/> </wsdl:fault> </wsdl:operation> <wsdl:operation name="getFilingNotification"> <wsdlsoap:operation soapAction=""/> <wsdl:input name="getFilingNotificationRequest"> <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://webservices.yyyy.com" use="encoded"/> </wsdl:input> <wsdl:output name="getFilingNotificationResponse"> <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://xxxx.yyyy.com/services/Filing" use="encoded"/> </wsdl:output> <wsdl:fault name="PublishingEngineException"> <wsdlsoap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="PublishingEngineException" namespace="http://xxxx.yyyy.com/services/Filing" use="encoded"/> </wsdl:fault> </wsdl:operation> <wsdl:operation name="getTransferStatus"> <wsdlsoap:operation soapAction=""/> <wsdl:input name="getTransferStatusRequest"> <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://webservices.yyyy.com" use="encoded"/> </wsdl:input> <wsdl:output name="getTransferStatusResponse"> <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://xxxx.yyyy.com/services/Filing" use="encoded"/> </wsdl:output> <wsdl:fault name="PublishingEngineException"> <wsdlsoap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="PublishingEngineException" namespace="http://xxxx.yyyy.com/services/Filing" use="encoded"/> </wsdl:fault> </wsdl:operation> </wsdl:binding> <wsdl:service name="FilingServicesService"> <wsdl:port binding="impl:FilingSoapBinding" name="Filing"> <wsdlsoap:address location="http://xxxx.yyyy.com/services/Filing"/> </wsdl:port> </wsdl:service> </wsdl:definitions>
