17

SAAJ:带有 Java 附件 API 的 SOAP

MTOM: SOAP消息传输优化机制

我的简单理解:它们处理 SOAP 附件,MTOM 是 SAAJ 的更优化版本。这个对吗?

他们只是做同一件事的两种不同方式吗?还是我想在这里比较苹果和橘子?

我可以同时使用 SAAJ 和 MTOM 吗?

4

1 回答 1

36

这有点复杂。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 支持。

于 2013-03-18T22:50:27.593 回答