Возможно, к настоящему моменту уже найден ответ, но для всех остальных ключом является то, что прокси-сервер службы может быть приведен к javax.xml.ws.Binding
, а затем вы можете получить ResponseContext
(карту) и вложения с помощью клавиши org.apache.cxf.message.Message.ATTACHMENTS
:
import javax.activation.DataHandler;
import javax.xml.ws.BindingProvider;
import org.apache.cxf.message.Attachment;
import org.apache.cxf.message.Message;
import org.apache.commons.io.IOUtils;
...
Collection<Attachment> attachments = (Collection<Attachment>)
((BindingProvider)yourServiceProxy).getResponseContext()
.get(Message.ATTACHMENTS);
for (Attachment attachment : attachments) {
// ID is in attachment.getId();
// Data is in attachment.getDataHandler();
// Eg:
DataHandler data = attachment.getDataHandler();
InputStream is = data.getInputStream();
File dataFile = new File(data.getName());
System.out.println("Writing data to:\n\t" +
dataFile.toString());
FileOutputStream fos = new FileOutputStream(dataFile);
IOUtils.copy(is, fos);
fos.close();
}