Это немного сложнее. 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.
Хороший ответ. Это определенно стоит больше оборотов. – Hubert