Как MTOM работает + пример кода

Я пытаюсь сделать очень простой веб-сервис, который делает следующее:

  1. Клиент поражает веб-сервис, запрашивающий файл.
  2. Класс обслуживания веб-сервиса запрашивает хеш-таблицу, которая имеет ключ (поисковый запрос), и значение как base64encoded значение файла (скажите что PDF),
  3. Теперь, я должен использовать MTOM для возвращения base64encoded значения, сохраненного в хеш-таблице клиенту.

Это до клиента, чтобы декодировать его и преобразовать его в PDF.

Так, вот мои вопросы:

  1. Я понимаю, что мы кодируем файлы к base64 для передачи через веб-сервис, но где и как MTOM входит в изображение там?

  2. Может кто-то предоставлять мне простой метод, который использует MTOM и передает данные обратно. Мы должны указать что-то в WSDL также? или тип возврата простой строки был бы достаточен? Почему/Почему нет?

Спасибо

Я видел этот код. Это использует много аннотаций, мне просто нужен простой код Java с помощью MTOM. В новинку для J2EE ЗДЕСЬ :)

ОБНОВЛЕНИЕ 1

Достаточно достойное объяснение здесь, теперь я должен понять это от уровня реализации. Хорошая информация здесь, но для .NET

ОБНОВЛЕНИЕ 2

Каков должен быть тип возврата метода "createMTOM (международный идентификатор)"??

7
задан Community 23 May 2017 в 12:16
поделиться

1 ответ

Похоже, вы путаете реализацию и протокол.

Спецификация MTOM здесь . На этой странице есть образцы сообщений.

Если вы используете среду JAX-WS, вы наверняка используете Аннотации , чтобы включить ее. Если вы накручиваете мыльные сообщения вручную, вы пишете любой код Java, который вам нужно написать для его создания. По сути, MTOM означает, что содержимое данных перемещается во вложение, которое является отдельной частью MIME сообщения, и на него ссылается элемент xop: Include с href для части MIME.

Схема должна указывать base64Binary в качестве типа элемента, но дополнительные атрибуты дают подсказки относительно интерпретации байтов: xmime: contentType и xmime: expectedContentType.По моему опыту, эталонная реализация JAX-B имеет некоторые ограничения на их использование. Например, вы не можете заставить его автоматически преобразовывать текст в байты и обратно. В типичном наборе, таком как CXF или Glassfish, вы помещаете данные в DataHandler, а набор превращает их во вложение.

7
ответ дан 7 December 2019 в 07:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: