[
https://issues.apache.org/jira/browse/CXF-5496?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Daniel Kulp resolved CXF-5496.
------------------------------
Resolution: Won't Fix
Fix Version/s: Invalid
Assignee: Daniel Kulp
This is working as designed. CXF is designed to stream as much stuff as
possible and not pull things off the stream and cache them someplace locally
unless specifically required or requested.
In this case, the writeTo is consuming the data from the stream as it writes
the attachments out. The SAAJ+JAX-WS specs mandates that the writeTo does
that within the SOAPHandler.
If you need this changed, you can add an interceptor modeled off of:
http://svn.apache.org/repos/asf/cxf/trunk/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/attachment/JAXBAttachmentSchemaValidationHack.java
that would cache the attachments and lock them down, however it's not something
we'd do by default due to the performance impact that would cause in the normal
cases where that isn't needed.
> INBOUND_MESSAGE_ATTACHMENTS after soapMessage.writeTo(outputStream)
> -------------------------------------------------------------------
>
> Key: CXF-5496
> URL: https://issues.apache.org/jira/browse/CXF-5496
> Project: CXF
> Issue Type: Bug
> Affects Versions: 2.7.7
> Reporter: Frank Cornelis
> Assignee: Daniel Kulp
> Fix For: Invalid
>
>
> In a client I receive SOAP attachments.
> Retrieving them within a SOAPHandler via
> {code}
> context.get(MessageContext.INBOUND_MESSAGE_ATTACHMENTS)
> {code}
> works, but if I first do (for logging purposes)
> {code}
> SOAPMessage soapMessage = context.getMessage();
> ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
> soapMessage.writeTo(outputStream);
> {code}
> and afterwards try to retrieve the SOAP attachments via:
> {code}
> context.get(MessageContext.INBOUND_MESSAGE_ATTACHMENTS)
> {code}
> the DataHandler gives me an empty byte array.
--
This message was sent by Atlassian JIRA
(v6.1.5#6160)