【问题标题】:JAXWS - Best Way to transfer file is byte[] or MTOMJAXWS - 传输文件的最佳方式是 byte[] 或 MTOM
【发布时间】:2015-12-16 17:50:49
【问题描述】:

我正在尝试寻找在 JAXWS 网络服务中传输文件的最佳方式。 MTOM 或 byte[] 是我找到的选项。谁能告诉我哪个是最好的方法以及为什么

【问题讨论】:

    标签: bytearray jax-ws mtom


    【解决方案1】:

    没有通用的最佳文件传输方式。这取决于您的需求。

    作为字节数组(Base64)

    您应该将其称为 Base64 编码而不是 byte[](文件以使用 Base64 编码的文本形式发送,您将在 java 代码中将其作为 byte[] 处理)。这种方法速度很快,因为它只需要将数据编码为Base64文本并将其写入soap消息,但编码后的数据比原始文件大小大33%。 所以这个方法只推荐用于small文件。

    使用 MTOM

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

    两全其美

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

    JAX-WS 中的示例:

    @WebService
    @MTOM(threshold = 3072)
    public class MyWebService {
    }
    

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

    文件的大小取决于您的硬件、使用服务的并发客户端等。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-11
      • 2010-10-06
      • 2015-10-14
      • 2018-10-04
      • 1970-01-01
      • 2016-06-28
      • 1970-01-01
      • 2021-01-05
      相关资源
      最近更新 更多