我正在尝试找到在JAXWS webservice中传输文件的最佳方法。 MTOM或byte []是我找到的选项。有人可以告诉我哪种方法最好,为什么
答案 0 :(得分:1)
这不是传播文件的通用最佳方式。这取决于你的需求。
您应该将其称为Base64编码而不是char
(文件使用Base64编码作为文本发送,您将在Java代码中将其作为byte[]
处理)。这种方法很快,因为它只需要将数据编码为Base64文本并将其写入soap消息,但编码数据比原始文件大小大33%。
因此,仅建议小文件使用此方法。
这是较大文件的推荐方法,因为它不会增加文件大小,因为它不会将文件作为编码数据发送,而是作为MIME附件发送。这种方法涉及的不仅仅是对数据进行编码,还需要更多的处理时间,尽管差异可能不大。
大多数Web服务框架允许您指定阈值,指示使用MTOM所需的最小文件大小。如果文件未达到该大小,则数据将作为Base64编码文本发送。
JAX-WS中的示例:
byte[]
这意味着如果文件小于3 Mb,它将作为Base64文本发送,如果它更大,它将使用MTOM发送。这是一种非常常见的方法,它可能适合您的需求。
对于要小或大的文件,它取决于您的硬件,使用该服务的并发客户端等。