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

Andreas Veithen commented on AXIS2-4368:
----------------------------------------

I had a look at the code in ChunkedOutputStream and I believe it is impossible 
to get this exception unless one of the following is happening:

1. There is an exception on the underlying stream (i.e. the stream 
ChunkedOutputStream writes to) and this exception is swallowed somewhere in 
Axiom or Axis2. Indeed, an exception in the underlying stream may leave 
ChunkedOutputStream in an inconsistent state. If the ChunkedOutputStream is 
used after that, then it would be possible to get the 
ArrayIndexOutOfBoundsException.

2. There is a concurrency issue and the same ChunkedOutputStream instance is 
used concurrently by different threads. Indeed, ChunkedOutputStream has not 
been designed to be thread safe (because it should not be used concurrently).

Both conditions are not very probable, but can't be excluded. Note that 
assumption 2 would be compatible with the fact that you don't see the issue 
anymore in Java 1.6. Indeed there might be very subtle differences in the 
threading implementation between different JREs.

> ChunkedOutputStream is giving an OutOfBoundException:2048 with 
> MTOMAwareXMLSerializer
> -------------------------------------------------------------------------------------
>
>                 Key: AXIS2-4368
>                 URL: https://issues.apache.org/jira/browse/AXIS2-4368
>             Project: Axis 2.0 (Axis2)
>          Issue Type: Bug
>          Components: databinding
>    Affects Versions: 1.4.1
>         Environment: Sun Java 6, 
>            Reporter: Aiden Grandfield
>
> I am getting to following exception INTERMITTENTLY when attepmting to send an 
> MTOM attachment using a client stub generated from a WSDL2Java.
> The attachment is a zlib file about 4mb in size.
> The complex type I am using is a straight forward one....
> <complexType name="CompressedDataType">
> <sequence>
> <element name="file" type="xmime:base64Binary" minOccurs="1" maxOccurs="1" 
> nillable="true"/>
> <element name="sizeOfUncompressedData" type="xsd:unsignedInt" minOccurs="1" 
> maxOccurs="1"/>
> </sequence>
> </complexType>
> where xmime =  <import namespace="http://www.w3.org/2005/05/xmlmime"; 
> schemaLocation="http://www.w3.org/2005/05/xmlmime"/>
> Let me know if you need more information.
> I logged this as Major as I have no work around.
> java.lang.ArrayIndexOutOfBoundsException: 2048
>       at 
> org.apache.commons.httpclient.ChunkedOutputStream.write(ChunkedOutputStream.java:160)
>       at 
> com.sun.xml.internal.stream.writers.UTF8OutputStreamWriter.write(Unknown 
> Source)
>       at 
> com.sun.xml.internal.stream.writers.UTF8OutputStreamWriter.write(Unknown 
> Source)
>       at 
> com.sun.xml.internal.stream.writers.XMLStreamWriterImpl.writeXMLContent(Unknown
>  Source)
>       at 
> com.sun.xml.internal.stream.writers.XMLStreamWriterImpl.writeXMLContent(Unknown
>  Source)
>       at 
> com.sun.xml.internal.stream.writers.XMLStreamWriterImpl.writeCharacters(Unknown
>  Source)
>       at 
> org.apache.axiom.om.impl.MTOMXMLStreamWriter.writeCharacters(MTOMXMLStreamWriter.java:237)
>       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.axis2.databinding.utils.writer.MTOMAwareXMLSerializer.writeDataHandler(MTOMAwareXMLSerializer.java:172)
>       at 
> com.pilz.ie.se02.soap.ConfToolStub$Base64Binary.serialize(ConfToolStub.java:62888)
>       at 
> com.pilz.ie.se02.soap.ConfToolStub$Base64Binary.serialize(ConfToolStub.java:62825)
>       at 
> com.pilz.ie.se02.soap.ConfToolStub$CompressedDataType.serialize(ConfToolStub.java:19615)
>       at 
> com.pilz.ie.se02.soap.ConfToolStub$CompressedDataType.serialize(ConfToolStub.java:19535)
>       at 
> com.pilz.ie.se02.soap.ConfToolStub$SetProjectConfigToolXML.serialize(ConfToolStub.java:35343)
>       at 
> com.pilz.ie.se02.soap.ConfToolStub$SetProjectConfigToolXML.serialize(ConfToolStub.java:35287)
>       at 
> com.pilz.ie.se02.soap.ConfToolStub$SetProjectConfigToolXML$1.serialize(ConfToolStub.java:35275)
>       at 
> org.apache.axis2.databinding.ADBDataSource.serialize(ADBDataSource.java:93)
>       at 
> org.apache.axiom.om.impl.llom.OMSourcedElementImpl.internalSerializeAndConsume(OMSourcedElementImpl.java:664)
>       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.AxisRequestEntity.writeRequest(AxisRequestEntity.java:84)
>       at 
> org.apache.commons.httpclient.methods.EntityEnclosingMethod.writeRequestBody(EntityEnclosingMethod.java:499)
>       at 
> org.apache.commons.httpclient.HttpMethodBase.writeRequest(HttpMethodBase.java:2114)
>       at 
> org.apache.commons.httpclient.HttpMethodBase.execute(HttpMethodBase.java:1096)
>       at 
> org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:398)
>       at 
> org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:171)
>       at 
> org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:397)
>       at 
> org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:346)
>       at 
> org.apache.axis2.transport.http.AbstractHTTPSender.executeMethod(AbstractHTTPSender.java:542)
>       at 
> org.apache.axis2.transport.http.HTTPSender.sendViaPost(HTTPSender.java:189)
>       at org.apache.axis2.transport.http.HTTPSender.send(HTTPSender.java:75)
>       at 
> org.apache.axis2.transport.http.CommonsHTTPTransportSender.writeMessageWithCommons(CommonsHTTPTransportSender.java:371)
>       at 
> org.apache.axis2.transport.http.CommonsHTTPTransportSender.invoke(CommonsHTTPTransportSender.java:209)
>       at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:448)
>       at 
> org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:401)
>       at 
> org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:228)
>       at 
> org.apache.axis2.client.OperationClient.execute(OperationClient.java:163)
>       at 
> com.pilz.ie.se02.soap.ConfToolStub.setProjectConfigToolXML(ConfToolStub.java:7956)
>       at 
> com.pilz.ie.se02.model.device.soap.wrapper.ConfToolStubFacade.setProjectConfigToolXML(ConfToolStubFacade.java:1441)
>       at 
> com.pilz.ie.se02.model.device.soap.wrapper.ConfToolManager.setProjectConfigToolXML(ConfToolManager.java:1078)
>       at 
> com.pilz.ie.se02.services.io.network.tasks.DownloadProjectTask.downloadConfigToolData(DownloadProjectTask.java:177)
>       at 
> com.pilz.ie.se02.services.io.network.SeDownloadManager$PerformStepThread.run(SeDownloadManager.java:488)
>  

-- 
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