SAAJ:带有 Java 附件 API 的 SOAP
MTOM: SOAP消息传输优化机制
我的简单理解:它们处理 SOAP 附件,MTOM 是 SAAJ 的更优化版本。这个对吗?
他们只是做同一件事的两种不同方式吗?还是我想在这里比较苹果和橘子?
我可以同时使用 SAAJ 和 MTOM 吗?
这有点复杂。SAAJ是一个用于操作 SOAP 信封的旧 Java API,因此可以以合理的方式发送二进制附件(即不是作为消息正文中的 BASE64 编码字符串)。SAAJ 是一种低级接口,您需要在代码中“手动”构建 SOAP 信封并向其添加附件。
如果您不需要使用遗留代码并且希望直接使用 SOAP 信封,请查看JAX-WS Dispatcher 和 Provider 接口。
MTOM是另一种野兽。它不是一个完整的 Web 服务 API - 它是发送附件的特殊方式。它可以被任何“真正的”Web 服务 API 使用,例如 JAX-WS 或 SAAJ(如果您设法强制 SAAJ 以这种方式工作)。
MTOM(几乎)总是与 XOP 一起使用,这是一种发送二进制数据的更有效方式,与 BASE64(开销很大)相比。附件作为 MIME 附件单独发送,并且正确处理了 MIME 类型(这曾经是 Java-Microsoft 技术交互的问题)。
现在忘记 SAAJ,使用大多数 JAX-WS 实现提供的 JAX-WS + MTOM 支持。