SAAJ: Java用の添付ファイルAPIを備えたSOAP
MTOM: SOAPメッセージ送信最適化メカニズム
私の簡単な理解:それらはSOAP添付ファイルを処理し、MTOMはSAAJのより最適化されたバージョンです。これは正しいです?
彼らは単に同じことをする2つの異なる方法ですか?それとも、ここでリンゴとオレンジを比較しようとしていますか?
SAAJとMTOMを一緒に使用できますか?
もう少し複雑です。SAAJは、SOAPエンベロープを操作するために使用される古いJava APIであるため、バイナリ添付ファイルの送信は適切な方法で実行できます(メッセージ本文のBASE64エンコード文字列としてではありません)。SAAJは一種の低レベルのインターフェースであり、コードで「手動で」SOAPエンベロープを作成し、それに添付ファイルを追加する必要があります。
レガシーコードを操作する必要がなく、SOAPエンベロープを直接操作する場合は、JAX-WSディスパッチャーとプロバイダーのインターフェイスを確認してください。
MTOMは別の獣です。これは完全なWebサービスAPIではありません-添付ファイルを送信するための特殊な方法です。これは、JAX-WSやSAAJなどの「真の」WebサービスAPIで使用できます(SAAJをそのように動作させることができた場合)。
MTOMは(ほとんど)常にXOPで使用されます。これは、BASE64(オーバーヘッドが大きい)と比較して、バイナリデータを送信するためのより効率的な方法です。添付ファイルはMIME添付ファイルとして個別に送信され、MIMEタイプは適切に処理されます(これは、JavaとMicrosoftテクノロジの相互作用の問題でした)。
今日ではSAAJを忘れて、ほとんどのJAX-WS実装によって提供されるJAX-WS+MTOMサポートを使用してください。