Вопрос

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

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

Клиент должен декодировать его и преобразовать в PDF.

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

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

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

Спасибо

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

ОБНОВЛЕНИЕ 1

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

ОБНОВЛЕНИЕ 2

Каким должен быть тип возвращаемого значения метода createMTOM(int id)??

Это было полезно?

Решение

Кажется, вы путаете реализацию и протокол.

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

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

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

Другие советы

Хороший подробный пример / обсуждение предоставляется в IBM Redbood: Разработка приложений Web Services, см. Стр. 64-74

http://www.redbooks.ibm.com/redpapers/pdfs/redp4884.pdf.

Есть полезная статья здесь Это описывает MTOM и как включить его с CXF. В статье также входит исходный код для рабочего примера.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top