2013-03-18 8 views
14

SAAJ: SOAP с вложениями API для JavaВ чем разница между MTOM и функциями вложений, предоставляемыми SAAJ?

MTOM: SOAP Оптимизация передачи сообщений Механизм

Мой простое понимание: они имеют дело с приложениями SOAP, с MTOM быть более оптимизирован версию SAAJ , Это верно?

Это просто два разных способа сделать одно и то же? Или я пытаюсь сравнить яблоки и апельсины здесь?

Могу ли я использовать SAAJ и MTOM вместе?

ответ

30

Это немного сложнее. SAAJ - это старый API Java, используемый для управления конвертами SOAP, поэтому отправка двоичных вложений может производиться разумным образом (это не как закодированная BASE64 строка в теле сообщения). SAAJ - это своего рода интерфейс с низким уровнем, вам нужно создать SOAP-конверт «вручную» в своем коде и добавить в него вложения.

Если вам не нужно работать с устаревшим кодом, и вы хотите работать непосредственно с конвертами SOAP, посмотрите на JAX-WS Интерфейсы диспетчера и провайдера.

MTOM - еще один зверь. Это не полный API веб-сервисов - это специализированный способ отправки вложений. Он может использоваться любым «истинным» API веб-сервисов, например JAX-WS или SAAJ (если вам удастся заставить SAAJ работать таким образом).

MTOM (почти) всегда используется с XOP, более эффективным способом отправки двоичных данных по сравнению с BASE64 (который имеет большие накладные расходы). Вложение отправляется отдельно как MIME-вложение, и тип MIME обрабатывается должным образом (это было проблемой для взаимодействия технологий Java-Microsoft).

В настоящее время забудьте о SAAJ, используйте поддержку JAX-WS + MTOM, которая обеспечивается большинством реализаций JAX-WS.

+1

Хороший ответ. Это определенно стоит больше оборотов. – Hubert