On Tue, Dec 1, 2009 at 6:51 PM, vasu ts <[email protected]> wrote:
> Hi all,
>
>  Binding: XML beans
>  Axis2 : 1.4.1 and 1.5.1
>
>   My web service returns two attachments when an operation is executed. I am
> able to read the first attachment but when I try to read the second
> attachment its throwing "Attempted read on closed stream" exception. I
> looked at wireshark's logs and I see all the binary data for the attachments
> is being transferred correctly from the web service server to the client
>
> I looked through the user list archives and also tried several ways of
> reading the attachments but every time I see the same issue. Below is the
> sample code
>
>             stub._getServiceClient().getOptions().setProperty(
> Constants.Configuration.ENABLE_MTOM, Constants.VALUE_TRUE );
>
>             MessageContext messageContext =
> stub._getServiceClient().getLastOperationContext().getMessageContext(
> WSDL2Constants.MESSAGE_LABEL_IN );
>
>  Attachments attachments = messageContext.getAttachmentMap();
>             if ( attachments != null )
>             {
>                 String[] contentIds = attachments.getAllContentIDs();
>                 for ( int i = 0; i < contentIds.length; i++ )
>                 {
>                     DataHandler dataHandler = messageContext.getAttachment(
> contentIds[i] );
>                     String filePath = m_temp + contentIds[i];
>                     try
>                     {
>                         FileOutputStream fos = new FileOutputStream(
> filePath );
>                         dataHandler.writeTo( fos );
>                         fos.flush();
>                         fos.close();
>                     }
>                     catch ( IOException ioe )
>                     {
>                         ioe.printStackTrace();
>                     }
>                 }
>             }
>
> any ideas on how I can resolve this issues?
>
> _______________

Just a quick thought that may be way off: Not sure if
messageContext.getAttachmentMap() works with xmlbeans. Might be ADB
only. In fact, looking at the docs and from previous experience, I'm
pretty sure SWA - you don't mention what you are using - is ADB only.
Not sure about the jaxws stuff.

Anyways, if you control the client, I'd just send the attachment as a
String and accept the 30% bigger payload as unimportant if possible -
often its not worth worrying about. Or switch to ADB on the server
side. Or implement SWA or whatever for xmlbeans :-) .

- R

Reply via email to