最近在系统交互时,尝试了webservice传输。标准的spring + cxf,没有什么可说的,网上搬运工一大堆。
一下解决方案均来源网络,非原创。
主要提一下 restful不适用于大文件上传,建议改用soap报文发送。
MTOM 中提到改标准可以减少base64Binary 带来的33%的文件容量变化,但是其本身需要为 MIME 花费同比例的开销,所以不建议在多个大文件的场景下使用。
原文如下:
MTOM is efficient, in the sense that it doesn't have the 33% size increase penalty that xs:base64Binary has. It is interoperable, in the sense that it is a W3C standard. However, MIME multipart incurs a small cost proportional to the number of attachments, so it is not suitable for a large number of tiny attachments.
另外cxf 需要在服务端申明soap接口并开启mtom,clinet同样需要开启。
参考 Optimizing Binary Data Transmission Using MTOM/XOP
建议注释
@SOAPBinding(style = SOAPBinding.Style.RPC)
@MTOM
<jaxws:properties>
<entry key="mtom-enabled" value="true"/>
</jaxws:properties>