MTOM与SAAJ提供的附件功能有什么区别?

Jop*_*ops 15 soap mtom jax-ws saaj

SAAJ: SOAP with Attachments API for Java

MTOM: SOAP消息传输优化机制

我的简单理解是:它们处理SOAP附件,MTOM是SAAJ 的更优化版本.它是否正确?

它们只是两种不同的方式来做同样的事情吗?或者我想在这里比较苹果和橘子?

我可以一起使用SAAJ和MTOM吗?

Pio*_*ski 34

这有点复杂.SAAJ是一个旧的Java API,用于操作SOAP信封,因此发送二进制附件可以以一种理智的方式完成(这不是消息体中的BASE64编码字符串).SAAJ是一种低级接口,您需要在代码中"手动"构造SOAP信封并为其添加附件.

如果您不需要使用遗留代码并且希望直接使用SOAP信封,那么请查看JAX-WS Dispatcher和Provider接口.

MTOM是另一个野兽.它不是一个完整的Web服务API - 它是发送附件的专门方式.它可以被任何"真正的"Web服务API(如JAX-WS或SAAJ)使用(如果您设法强制SAAJ以这种方式工作).

与BASE64(具有大量开销)相比,MTOM(几乎)总是与XOP一起使用,这是一种更有效的二进制数据发送方式.附件作为MIME附件单独发送,并且正确处理MIME类型(以前是Java-Microsoft技术交互的问题).

现在忘记了SAAJ,使用大多数JAX-WS实现提供的JAX-WS + MTOM支持.