[ https://issues.apache.org/jira/browse/AXIS2-5301?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13262627#comment-13262627 ]
Sridhar Ratna commented on AXIS2-5301: -------------------------------------- I got the same error while working with axis2 1.6.1 and axis2 1.6.2. This stack is generated from Axiom 1.2.12. Given a look at the BAAOutputStream.java and it is storing the 4K size of buffers to arraylist which is causing the problem. the following is get called repeated ly. private void addBuffer() { currBuffer = new byte[BUFFER_SIZE]; data.add(currBuffer); index = 0; } I didn't understand when the Inputstream is available why populating into Byte[] > Axis2 MTOM client outof memory error when downloading file from service > ----------------------------------------------------------------------- > > Key: AXIS2-5301 > URL: https://issues.apache.org/jira/browse/AXIS2-5301 > Project: Axis2 > Issue Type: Bug > Components: adb, databinding > Affects Versions: 1.6.1 > Environment: Windows XP , Axis2 1.6.1, JDK 1.5 > Reporter: Sridhar Ratna > Labels: file_download_service, large_file_download, > webservice_download_client > Attachments: SampleService.zip, SampleServiceClient.zip > > > I am trying to upload and download large binary files with axis2 using MTOM. > I am able to upload upto 2GB file without any memory issue either at server > side or client side. But when downloading file from server to client, client > is getting out of memory, though the server is sending a stream. > When the response received at client side, javax.activation.Datahandler is > embedded in the response which is a pointer to InputStream. Ideallly it > should not give out of memory. And this is the same mechanism while > uploading, and there is no problem at that end. > Seems to be a bug at client side handling of large documents in response > stream. > WSDL is > <?xml version="1.0" encoding="UTF-8"?> > <wsdl:definitions targetNamespace="http://sample.com/sample/SampleService" > xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" > xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" > xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" > xmlns:ns1="http://org.apache.axis2/xsd" > xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" > xmlns:ax21="http://sample.com/sample/SampleService/xsd" > xmlns:ns="http://sample.com/sample/SampleService" > xmlns:xs="http://www.w3.org/2001/XMLSchema" > xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" > xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"> > <wsdl:documentation> > Please Type your service description here > </wsdl:documentation> > <wsdl:types> > <xs:schema elementFormDefault="qualified" > targetNamespace="http://sample.com/sample/SampleService"> > > <xs:complexType name="SampleRequestType"> > <xs:sequence> > <xs:element maxOccurs="1" minOccurs="1" > name="fileName" type="xs:string"/> > <xs:element maxOccurs="1" minOccurs="0" > name="contentType" type="xs:string"/> > </xs:sequence> > </xs:complexType> > <xs:complexType name="SampleResponseType"> > <xs:sequence> > <xs:element maxOccurs="1" minOccurs="1" name="fileName" > type="xs:string"/> > <xs:element maxOccurs="1" minOccurs="0" name="content" > type="xs:base64Binary"/> > </xs:sequence> > </xs:complexType> > > <xs:element name="SampleRequest" > type="ns:SampleRequestType"/> > <xs:element name="SampleResponse" > type="ns:SampleResponseType"/> > </xs:schema> > </wsdl:types> > <wsdl:message name="SampleResponse"> > <wsdl:part name="parameters" element="ns:SampleResponse"> > </wsdl:part> > </wsdl:message> > <wsdl:message name="SampleRequest"> > <wsdl:part name="parameters" element="ns:SampleRequest"> > </wsdl:part> > </wsdl:message> > <wsdl:portType name="SampleServicePortType"> > <wsdl:operation name="SampleRequest"> > <wsdl:input message="ns:SampleRequest" wsaw:Action="urn:SampleRequest"> > </wsdl:input> > <wsdl:output message="ns:SampleResponse" > wsaw:Action="urn:SampleResponse"> > </wsdl:output> > </wsdl:operation> > </wsdl:portType> > <wsdl:binding name="SampleServiceHttpBinding" > type="ns:SampleServicePortType"> > <http:binding verb="POST"/> > <wsdl:operation name="SampleRequest"> > <http:operation location="SampleRequest"/> > <wsdl:input> > <mime:content part="parameters" type="text/xml"/> > </wsdl:input> > <wsdl:output> > <mime:content part="parameters" type="text/xml"/> > </wsdl:output> > </wsdl:operation> > </wsdl:binding> > <wsdl:binding name="SampleServiceSoap12Binding" > type="ns:SampleServicePortType"> > <soap12:binding style="document" > transport="http://schemas.xmlsoap.org/soap/http"/> > <wsdl:operation name="SampleRequest"> > <soap12:operation soapAction="urn:SampleRequest" style="document"/> > <wsdl:input> > <soap12:body use="literal"/> > </wsdl:input> > <wsdl:output> > <soap12:body use="literal"/> > </wsdl:output> > </wsdl:operation> > </wsdl:binding> > <wsdl:binding name="SampleServiceSoap11Binding" > type="ns:SampleServicePortType"> > <soap:binding style="document" > transport="http://schemas.xmlsoap.org/soap/http"/> > <wsdl:operation name="SampleRequest"> > <soap:operation soapAction="urn:SampleRequest" style="document"/> > <wsdl:input> > <soap:body use="literal"/> > </wsdl:input> > <wsdl:output> > <soap:body use="literal"/> > </wsdl:output> > </wsdl:operation> > </wsdl:binding> > <wsdl:service name="SampleService"> > <wsdl:port name="SampleServiceHttpSoap12Endpoint" > binding="ns:SampleServiceSoap12Binding"> > <soap12:address > location="http://localhost:8080/SampleService/services/SampleService.SampleServiceHttpSoap12Endpoint/"/> > </wsdl:port> > <wsdl:port name="SampleServiceHttpSoap11Endpoint" > binding="ns:SampleServiceSoap11Binding"> > <soap:address > location="http://localhost:8080/SampleService/services/SampleService.SampleServiceHttpSoap11Endpoint/"/> > </wsdl:port> > <wsdl:port name="SampleServiceHttpEndpoint" > binding="ns:SampleServiceHttpBinding"> > <http:address > location="http://localhost:8080/SampleService/services/SampleService.SampleServiceHttpEndpoint/"/> > </wsdl:port> > </wsdl:service> > </wsdl:definitions> > and the service class > public class SampleService implements SampleServiceSkeletonInterface { > public SampleResponse sampleRequest(SampleRequest req) { > try { > SampleResponse response = new SampleResponse(); > SampleResponseType type = new SampleResponseType(); > FileInputStream fis = new > FileInputStream("c:/tmp/"+req.getSampleRequest().getFileName()); > DataHandler dh = new DataHandler(new > StreamDataSource(fis, req.getSampleRequest().getContentType())); > type.setContent(dh); > type.setFileName(req.getSampleRequest().getFileName()); > response.setSampleResponse(type); > return response; > } catch (FileNotFoundException e) { > e.printStackTrace(); > } > > return null; > } > } > And the client code > public static void main(String[] args) throws Exception{ > SampleServiceStub stub = new SampleServiceStub(); > > > stub._getServiceClient().getOptions().setProperty(Constants.Configuration.ENABLE_MTOM, > Constants.VALUE_TRUE); > > //stub._getServiceClient().getOptions().setProperty(Constants.Configuration.ENABLE_SWA, > Constants.VALUE_TRUE); > > stub._getServiceClient().getOptions().setTimeOutInMilliSeconds(1000*60*10 ); > > > //stub._getServiceClient().getOptions().setProperty(Constants.Configuration.CACHE_ATTACHMENTS, > Constants.VALUE_TRUE); > > //stub._getServiceClient().getOptions().setProperty(Constants.Configuration.ATTACHMENT_TEMP_DIR, > "c:/tmp"); > > //stub._getServiceClient().getOptions().setProperty(Constants.Configuration.FILE_SIZE_THRESHOLD, > "4000"); > SampleRequestType type = new SampleRequestType(); > type.setFileName("server.log"); > type.setContentType("text/plain"); > SampleRequest request = new SampleRequest(); > request.setSampleRequest(type); > SampleResponse response = stub.sampleRequest(request); > > } -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa For more information on JIRA, see: http://www.atlassian.com/software/jira --------------------------------------------------------------------- To unsubscribe, e-mail: java-dev-unsubscr...@axis.apache.org For additional commands, e-mail: java-dev-h...@axis.apache.org