JAXWS - 传输文件的最佳方式是byte []或MTOM

时间:2015-11-30 13:58:47

标签: bytearray jax-ws mtom

我正在尝试找到在JAXWS webservice中传输文件的最佳方法。 MTOM或byte []是我找到的选项。有人可以告诉我哪种方法最好,为什么

1 个答案:

答案 0 :(得分:1)

这不是传播文件的通用最佳方式。这取决于你的需求。

作为字节数组(Base64)

您应该将其称为Base64编码而不是char(文件使用Base64编码作为文本发送,您将在Java代码中将其作为byte[]处理)。这种方法很快,因为它只需要将数据编码为Base64文本并将其写入soap消息,但编码数据比原始文件大小大33%。 因此,仅建议文件使用此方法。

使用MTOM

这是较大文件的推荐方法,因为它不会增加文件大小,因为它不会将文件作为编码数据发送,而是作为MIME附件发送。这种方法涉及的不仅仅是对数据进行编码,还需要更多的处理时间,尽管差异可能不大。

两全其美

大多数Web服务框架允许您指定阈值,指示使用MTOM所需的最小文件大小。如果文件未达到该大小,则数据将作为Base64编码文本发送。

JAX-WS中的示例:

byte[]

这意味着如果文件小于3 Mb,它将作为Base64文本发送,如果它更大,它将使用MTOM发送。这是一种非常常见的方法,它可能适合您的需求。

对于要小或大的文件,它取决于您的硬件,使用该服务的并发客户端等。