Для проекта я реализую службу SOAP с использованием Apache Axis2 1.6.2. У меня есть служба, которой нужно получить файл с помощью MTOM. Но, к сожалению, у меня продолжают возникать проблемы с получением вложенного файла MTOM. Я продолжаю получать исключение:
org.apache.axiom.om.OMException: A data handler was not found for content id cid:491414508823
....
Я пытался найти ответ в Интернете, но безуспешно. Я надеюсь, что кто-то может получить меня в правильном направлении. Мой wsdl содержит следующий фрагмент:
...
<xs:element minOccurs="0" name="PDF_Attachment">
<xs:complexType>
<xs:all>
<xs:element minOccurs="0" name="PDF_AttachmentName" type="xs:string"/>
<xs:element name="PDF_AttachmentContent" type="xs:base64Binary"/>
</xs:all>
</xs:complexType>
</xs:element>
...
Я использую SoapUI для создания запроса и установил для свойства «использовать MTOM» значение true.
Может кто сталкивался с такой проблемой или знает как решить. Помощь будет принята с благодарностью!
Ричард
ОБНОВЛЕНИЕ
Думаю, я разобрался с проблемой. Проблема заключалась в моих определениях xsd/wsdl. Я использовал jaxb для преобразования своих бизнес-объектов, определенных во внешних xsd, в POJO с аннотациями JAXB. Но xs:base64Binary был преобразован как byte[]. Изменение xsd с помощью:
<xs:schema ... xmlns:xmime="http://www.w3.org/2005/05/xmlmime"> ...
И изменив элемент на:
<xs:element name="PDF_AttachmentContent" minOccurs="1" maxOccurs="1" type="xs:base64Binary" xmime:expectedContentTypes="application/octet-stream">
JAXB теперь создал DataHandler как возвращаемый тип в getPDF_AttatchmentContent. Единственная проблема, которую мне нужно решить, — разрешить SOAPUI отправлять вложения MTOM. Каким-то образом созданный мной тестовый клиент работает отлично, но SOAPUI не отправляет вложение...
Источник решения выше: http://cxf.apache.org/docs/mtom-attachments-with-jaxb.html
ОБНОВЛЕНИЕ 2: http://ssagara.blogspot.nl/2012/03/test-axis2-jax-ws-mtom-service-using.html решил мои проблемы SOAPUI с MTOM. Я не отредактировал правильный cid в своем мыльном сообщении. Я предполагал, что SOAPUI поможет мне в этом, но это не так.