Ответ 1
Это немного сложнее. 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.