[ 
https://issues.apache.org/jira/browse/AXIS2-3872?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12660797#action_12660797
 ] 

Andreas Veithen commented on AXIS2-3872:
----------------------------------------

There are two things here:

1) For some reason (related to the enableSwA/enableMTOM settings) Axiom tries 
to inline the data (as Base64 encoded text). I'm not sure exactly why this is 
so. Maybe Thilina may help here.

2) OMTextImpl.writeOutput doesn't do a good job when converting the DataHandler 
to Base64: it calls OMTextImpl.getText, which means that Axiom will construct a 
single String from the complete DataHandler content. For large contents this 
will inevitably lead to out of memory errors. The correct strategy is to do the 
conversion in chunks. This is an Axiom issue and I can have a look at this.

> MTOM Issues
> -----------
>
>                 Key: AXIS2-3872
>                 URL: https://issues.apache.org/jira/browse/AXIS2-3872
>             Project: Axis 2.0 (Axis2)
>          Issue Type: Bug
>    Affects Versions: 1.4
>         Environment: Tomcat 5.5 on Windows XP Pro SP2
>            Reporter: Renjith C
>            Assignee: Thilina Gunarathne
>
> 1) 
> When axis2.xml property,
> <parameter name="enableMTOM">true</parameter> is set to true, even though the 
> caching is enabled the file is not getting saved on to the disk.
> 2)
> Exception thrown when a 470M file is send over using MTOM.
> [ERROR] Java heap space
> java.lang.OutOfMemoryError: Java heap space
>       at java.util.Arrays.copyOf(Unknown Source)
>       at java.lang.AbstractStringBuilder.expandCapacity(Unknown Source)
>       at java.lang.AbstractStringBuilder.append(Unknown Source)
>       at java.lang.StringBuffer.append(Unknown Source)
>       at org.apache.axiom.om.util.Base64.encode(Base64.java:250)
>       at org.apache.axiom.om.util.TextHelper.toString(TextHelper.java:33)
>       at org.apache.axiom.om.impl.llom.OMTextImpl.getText(OMTextImpl.java:269)
>       at 
> org.apache.axiom.om.impl.llom.OMTextImpl.writeOutput(OMTextImpl.java:255)
>       at 
> org.apache.axiom.om.impl.llom.OMTextImpl.internalSerializeLocal(OMTextImpl.java:433)
>       at 
> org.apache.axiom.om.impl.llom.OMTextImpl.internalSerializeAndConsume(OMTextImpl.java:408)
>       at 
> org.apache.axiom.om.impl.llom.OMElementImpl.internalSerialize(OMElementImpl.java:918)
>       at 
> org.apache.axiom.om.impl.llom.OMElementImpl.internalSerializeAndConsume(OMElementImpl.java:947)
>       at 
> org.apache.axiom.om.impl.llom.OMElementImpl.internalSerialize(OMElementImpl.java:918)
>       at 
> org.apache.axiom.om.impl.llom.OMElementImpl.internalSerializeAndConsume(OMElementImpl.java:947)
>       at 
> org.apache.axiom.soap.impl.llom.SOAPEnvelopeImpl.serializeInternally(SOAPEnvelopeImpl.java:240)
>       at 
> org.apache.axiom.soap.impl.llom.SOAPEnvelopeImpl.internalSerialize(SOAPEnvelopeImpl.java:228)
>       at 
> org.apache.axiom.om.impl.llom.OMElementImpl.internalSerializeAndConsume(OMElementImpl.java:947)
>       at 
> org.apache.axiom.om.impl.llom.OMNodeImpl.serializeAndConsume(OMNodeImpl.java:471)
>       at 
> org.apache.axis2.transport.http.SOAPMessageFormatter.writeTo(SOAPMessageFormatter.java:79)
>       at 
> org.apache.axis2.transport.http.CommonsHTTPTransportSender.sendUsingOutputStream(CommonsHTTPTransportSender.java:330)
>       at 
> org.apache.axis2.transport.http.CommonsHTTPTransportSender.invoke(CommonsHTTPTransportSender.java:213)
>       at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:448)
>       at 
> org.apache.axis2.receivers.AbstractInOutSyncMessageReceiver.invokeBusinessLogic(AbstractInOutSyncMessageReceiver.java:45)
>       at 
> org.apache.axis2.receivers.AbstractMessageReceiver.receive(AbstractMessageReceiver.java:100)
>       at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:176)
>       at 
> org.apache.axis2.transport.http.HTTPTransportUtils.processHTTPPostRequest(HTTPTransportUtils.java:275)
>       at 
> org.apache.axis2.transport.http.AxisServlet.doPost(AxisServlet.java:131)
>       at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
>       at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
>       at 
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
>       at 
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
>       at 
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to