Здравствуйте, tavr, Вы писали:
T>Вы уперлись в ограничения, которые в первую очередь связаны с использованием SOAP.
T>Я бы задумался о переезде на бинарный формат.
T>Пересылка больших вложений также подразумевает другой механизм, переход на потоковую и асинхронную модель закачки-докачки-валидации.
Увы, но необходимо использовать именно SOAP.
Пытаюсь все-таки реализовать работу с MTOM. Нашел
топик
Добавил флаг <property name="mtomEnabled" value="true"/> в маршаллер:
<bean id="smevMarshaller" class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
<property name="contextPath" value="smev.ws.beans"/>
<property name="mtomEnabled" value="true"/>
</bean>
<sws:annotation-driven marshaller="smevMarshaller" unmarshaller="smevMarshaller"/>
В SoapUI настроил передачу через MTOM, кинул себе запрос, вот фрагмент:
<rev:AppDocument>
<rev:RequestCode>req_6d423abf-2fbc-418e-971c-2de10288533f</rev:RequestCode>
<rev:BinaryData><inc:Include href="cid:req_6d423abf-2fbc-418e-971c-2de10288533f.zip" xmlns:inc="http://www.w3.org/2004/08/xop/include"/></rev:BinaryData>
</rev:AppDocument>
Вот класс:
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "AppDocumentType", namespace = "http://smev.gosuslugi.ru/rev120315", propOrder = {
"requestCode",
"binaryData"
})
public class AppDocumentType {
@XmlElementRef(name = "RequestCode", namespace = "http://smev.gosuslugi.ru/rev120315", type = JAXBElement.class)
protected JAXBElement<String> requestCode;
@XmlElementRef(name = "BinaryData", namespace = "http://smev.gosuslugi.ru/rev120315", type = JAXBElement.class)
protected JAXBElement<byte[]> binaryData;
...
}
Однако после анмаршаллинга поле binaryData пустое. Что я делаю не так?