В чем разница между MTOM и функциями прикрепления, предоставляемыми SAAJ?
SAAJ: SOAP с API вложения для Java
MTOM: механизм оптимизации передачи сообщений SOAP
Мое простое понимание: они имеют дело с приложениями SOAP, причем MTOM является более оптимизированной версией SAAJ. Это правильно?
Это просто 2 разных способа сделать одно и то же? Или я пытаюсь сравнить яблоки и апельсины здесь?
Могу ли я использовать SAAJ и MTOM вместе?
1 ответ
Это немного сложнее. SAAJ - это старый Java API, используемый для манипулирования конвертами SOAP, поэтому отправка двоичных вложений может выполняться в разумном порядке (это не кодируется строкой BASE64 в теле сообщения). SAAJ - это своего рода низкоуровневый интерфейс, вам нужно создать конверт SOAP "вручную" в своем коде и добавить в него вложения.
Если вам не нужно работать с унаследованным кодом и вы хотите работать непосредственно с конвертами SOAP, обратите внимание на интерфейсы диспетчера и провайдера JAX-WS.
МТОМ это еще один зверь. Это не полноценный API веб-сервиса - это специализированный способ отправки вложений. Он может использоваться любым "истинным" API веб-службы, таким как JAX-WS или SAAJ (если вам удастся заставить SAAJ работать таким образом).
MTOM (почти) всегда используется с XOP, более эффективным способом отправки двоичных данных, по сравнению с BASE64 (который имеет большие накладные расходы). Вложение отправляется отдельно как MIME-вложение, а тип MIME обрабатывается должным образом (это было проблемой для взаимодействия технологий Java-Microsoft).
В наши дни забудьте о SAAJ, используйте поддержку JAX-WS + MTOM, которая обеспечивается большинством реализаций JAX-WS.