[ 
https://issues.apache.org/jira/browse/WSCOMMONS-165?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12472677
 ] 

Thilina Gunarathne commented on WSCOMMONS-165:
----------------------------------------------

You can create a patch using svn diff and attach it to this JIRA using the 
"attach file" link.. Make sure to tick the "grant license .. " radio button 
when attaching the patch..

> org.apache.axiom.om.impl.MIMEOutputUtils complete method does not flush 
> output Stream.  End MIMEBoundary is not flushed to output stream.
> -----------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: WSCOMMONS-165
>                 URL: https://issues.apache.org/jira/browse/WSCOMMONS-165
>             Project: WS-Commons
>          Issue Type: Bug
>          Components: AXIOM
>         Environment: JDK 1.5.0_09, Resin 3.0.21 or Tomcat 5.5, axis2-1.1.1, 
> windows
>            Reporter: Rob Sutter
>            Priority: Blocker
>
> The bug occurs while running a MTOM example that delivers MTOM attachments to 
> the client.   The client calls the service and the service returns an 
> attachment via MTOM.  The code worked correctly using axis2server but when 
> deployed on either Tomcat or Resin the response would exclude the END 
> MIMEBoundary (--MIMEBoundary--).    This would cause various kinds of 
> unwanted behaviors like adding random bytes to the attachment, cached 
> attachments would grow without limit etc.
> It appears the problem occurs because the complete method in MIMEOutputUtils 
> never flushes the output stream causing the END MIMEBoundary to get 
> truncated.  Note the END MIME Boundary is written to the stream it just never 
> gets flushed.   Adding flush to either the complete method as seen below 
> fixes the problem.
> public static void complete(OutputStream outStream,
>                                 StringWriter writer, LinkedList 
> binaryNodeList,
>                                 String boundary, String contentId, String 
> charSetEncoding,String SOAPContentType) {
>         try {
>             startWritingMime(outStream, boundary);
>             javax.activation.DataHandler dh = new 
> javax.activation.DataHandler(writer.toString(),
>                     "text/xml; charset=" + charSetEncoding);
>             MimeBodyPart rootMimeBodyPart = new MimeBodyPart();
>             rootMimeBodyPart.setDataHandler(dh);
>             rootMimeBodyPart.addHeader("content-type",
>                     "application/xop+xml; charset=" + charSetEncoding +
>                     "; type=\""+SOAPContentType+"\";");
>             rootMimeBodyPart.addHeader("content-transfer-encoding", "binary");
>             rootMimeBodyPart.addHeader("content-id","<"+contentId+">");
>             writeBodyPart(outStream, rootMimeBodyPart, boundary);
>             Iterator binaryNodeIterator = binaryNodeList.iterator();
>             while (binaryNodeIterator.hasNext()) {
>                               OMText binaryNode = (OMText) 
> binaryNodeIterator.next();
>                               writeBodyPart(outStream, 
> createMimeBodyPart(binaryNode
>                                               .getContentID(), (DataHandler) 
> binaryNode
>                                               .getDataHandler()), boundary);
>                       }
>             
>                       finishWritingMime(outStream);
>                                                                 //ADDED FLUSH 
> HERE TO FLUSH OUTSTREAM
>                       outStream.flush();
>         } catch (IOException e) {
>             throw new OMException("Error while writing to the OutputStream.", 
> e);
>         } catch (MessagingException e) {
>             throw new OMException("Problem writing Mime Parts.", e);
>         }
>     }
> NOTE: I did not verify why it works correctly on axis2server but I suspect it 
> is because it DOES NOT use the AxisServlet that is used when the axis2 is 
> deployed on a real servlet container.

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


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to