This makes the assumption that the servlet container will do HTTP chunking
for you.  I know Tomcat 3.2 does not.

Charles

-----Original Message-----
From: Blumenkrantz, Jason [mailto:[EMAIL PROTECTED]]
Sent: Wednesday, April 03, 2002 10:31 AM
To: Axis-Dev (E-mail)
Subject: Bug in attachment handling / MimeUtils


I'm having a problem returning Attachments via Axis using the
JAFDataHandlerSerializer and org.apache.axis.attachments.MimeUtils. The
DataHandler is being returned fine and added as an attachment, but the
content's mime part ends up empty. The problem seems to be in
MimeUtils.getContentLength(), where if the DataSouce is not a file
DataSource, the input stream is read in completely to determine the content
length. Since my service returns a live InputStream and not a File, the
stream is invalidated by the reading process.  So not only is the stream
read entirely into memory, but the attachment data is never being written
out to the client. The two possible solutions I see to this problem would be
to keep the in-memory buffer around and write that out instead of
incorrectly reusing the InputStream (which is suboptimal, since this
requires the entire stream to be read into memory), or in the case of MIME
attachments which are not file attachments, to not write back the content
length in the response at all. I've modified a copy of AxisServlet to never
write the content length in this case, and it seems to work fine with both
Axis and VS.NET clients. Anyone have ideas on the best way to fix the
current incorrect behavior?

Thanks,
Jason Blumenkrantz
[EMAIL PROTECTED]

This message may contain privileged and/or confidential information.  If you
have received this e-mail in error or are not the intended recipient, you
may not use, copy, disseminate or distribute it; do not open any
attachments, delete it immediately from your system and notify the sender
promptly by e-mail that you have done so.  Thank you.

Reply via email to