Отключить MTOM в ответе SOAP WS - PullRequest
0 голосов
/ 22 ноября 2018

У меня есть мыльный веб-сервис, разработанный на Java, который возвращает файл внутри тега ответа XML.Для тега установлено значение type = "xsd: base64Binary".Одно и то же программное обеспечение развернуто на двух разных серверах, один из которых работает на JBoss AS 7.1.1, а другой - на JBoss EAP 7.0.0.

При проверке ответа (например, с помощью Soap UI) AS возвращает Base64закодировать файл непосредственно внутри тега:

<originalDocument>JVBERi0xLj...</originalDocument>

EAP возвращает двоичный файл со ссылкой внутри тега (MTOM):

--uuid:6ec7448a-58a6-4045-9faf-2b8469edf8b5
Content-Type: application/xop+xml; charset=UTF-8; type="text/xml"
Content-Transfer-Encoding: binary
Content-ID: <root.message@cxf.apache.org>
....
<originalDocument>
   <xop:Include xmlns:xop="http://www.w3.org/2004/08/xop/include" href="cid:84d45c72-2b46-4d8c-9a4d-8bcc0c9206b5-13@cxf.apache.org"/>
</originalDocument>
....
--uuid:6ec7448a-58a6-4045-9faf-2b8469edf8b5
Content-Type: application/octet-stream
Content-Transfer-Encoding: binary
Content-ID: <84d45c72-2b46-4d8c-9a4d-8bcc0c9206b5-13@cxf.apache.org>
%PDF-1.4
...

Это конфигурацияJBoss?Или, может быть, конфигурация Apache?Как заставить AS использовать кодирование Base64?

Обратите внимание, что я имею в виду ответ конечной точки, а не запрос от клиента.И, пожалуйста, обратите внимание, что программное обеспечение одинаково.Я хотел бы иметь конфигурацию сервера, а не изменение программного обеспечения.

Спасибо.

Ответы [ 2 ]

0 голосов
/ 12 декабря 2018

Мое решение состояло в том, чтобы удалить xmime:expectedContentTypes="application/octet-stream" с узла XSD и удалить аннотацию @MTOM.Таким образом, вывод всегда base64.Я до сих пор не понял, почему на старом сервере приложений вывод был base64, даже с аннотацией @MTOM.

0 голосов
/ 10 декабря 2018

Я нашел решение, которое работает для меня.Аннотация соответствующих полей в моем типе ответа с помощью @XmlInlineBinaryData заставляет ответ быть встроенным:

public class MyResponseType {

    @XmlElement(required = true)
    protected String systemLink;

    protected Long fileSize;

    @XmlInlineBinaryData
    protected byte[] md5Hash;

Мой ответ теперь выглядит так:

<ns3:MyResponse>
     <systemLink>system://40278824</systemLink>
     <fileSize>3537</fileSize>
     <md5Hash>oY6Mq54Zgo76VYtxHeVH6w==</md5Hash>
....
...