[
http://issues.apache.org/jira/browse/AXIS-2084?page=comments#action_12315758 ]
Brian Husted commented on AXIS-2084:
------------------------------------
Unfortunutely, I have run into some difficulties regarding streaming
attachments using DIME with the Axis patch. It works fine when submitting
attachments from the Axis server to the Axis client. However, when I attempt
to submit an attachment from the Axis client to the Axis server running the Web
Services it has problems. I am using Axis version 1.2.1, running the client
in Java JDK 1.4.2_05 and server running Weblogic 7 on JDK 1.3.1.
Below is the server side stack trace:
java.io.IOException: End of physical stream detected when 11 more bytes
expected.
at
org.apache.axis.attachments.DimeDelimitedInputStream._read(DimeDelimitedInputStream.java:273)
at
org.apache.axis.attachments.DimeDelimitedInputStream.read(DimeDelimitedInputStream.java:201)
at
org.apache.axis.attachments.DimeDelimitedInputStream.read(DimeDelimitedInputStream.java:445)
at
org.apache.axis.attachments.ManagedMemoryDataSource.<init>(ManagedMemoryDataSource.java:146)
at
org.apache.axis.attachments.MultiPartDimeInputStream.readTillFound(MultiPartDimeInputStream.java:163)
at
org.apache.axis.attachments.MultiPartDimeInputStream.readAll(MultiPartDimeInputStream.java:100)
at
org.apache.axis.attachments.MultiPartDimeInputStream.getAttachments(MultiPartDimeInputStream.java:108)
at
org.apache.axis.attachments.AttachmentsImpl.mergeinAttachments(AttachmentsImpl.java:156)
at
org.apache.axis.attachments.AttachmentsImpl.getAttachmentCount(AttachmentsImpl.java:515)
> Dime attachements: Type_Length of the final record chunk must be zero
> ---------------------------------------------------------------------
>
> Key: AXIS-2084
> URL: http://issues.apache.org/jira/browse/AXIS-2084
> Project: Apache Axis
> Type: Bug
> Components: Serialization/Deserialization
> Versions: 1.2, 1.2.1
> Environment: Microsoft XP
> Reporter: Coralia Silvana Popa
>
> Large files sent as DIME attachments are not correct serialized. Seems that
> the
> When reading a series of chunked records, the parser assumes that the first
> record without the CF flag is the final record in the chunk; in this case,
> it's the last record in my sample. The record type is specified only in the
> first record chunk, and all remaining chunks must have the TYPE_T field and
> all remaining header fields (except for the DATA_LENGTH field) set to zero.
> Seems that Type_Length (and maybe other header fields) is not set to 0 for
> the last chunk. The code work correct when there is only one chunck.
> The problem is in class: org.apache.axis.attachments.DimeBodyPart, in method
> void send(java.io.OutputStream os, byte position, DynamicContentDataHandler
> dh, final long maxchunk)
> I suggest the following code the fix this problem:
> void send(java.io.OutputStream os, byte position, DynamicContentDataHandler
> dh,
> final long maxchunk)
> throws java.io.IOException {
>
> BufferedInputStream in = new
> BufferedInputStream(dh.getInputStream());
>
> final int myChunkSize = dh.getChunkSize();
>
> byte[] buffer1 = new byte[myChunkSize];
> byte[] buffer2 = new byte[myChunkSize];
>
> int bytesRead1 = 0 , bytesRead2 = 0;
> bytesRead1 = in.read(buffer1);
>
> if(bytesRead1 < 0) {
> sendHeader(os, position, 0, (byte) 0);
> os.write(pad, 0, dimePadding(0));
> return;
> }
> byte chunknext = 0;
> do {
> bytesRead2 = in.read(buffer2);
>
> if(bytesRead2 < 0) {
> //last record...do not set the chunk bit.
> //buffer1 contains the last chunked record!
> sendChunk(os, position, buffer1, 0, bytesRead1,
> chunknext);
> break;
> }
>
> sendChunk(os, position, buffer1, 0, bytesRead1,(byte)
> (CHUNK | chunknext) );
> chunknext = CHUNK_NEXT;
> //now that we have written out buffer1, copy buffer2
> into to buffer1
> System.arraycopy(buffer2,0,buffer1,0,myChunkSize);
> bytesRead1 = bytesRead2;
>
> }while(bytesRead2 > 0);
> }
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira