在Spring Web Services Framework中流式传输MTOM Web服务

我想使用MTOM和Spring WS将大文件从服务器发送到客户端。 我意识到这不是这类事情的最佳方法,但这是一项要求。 我有MTOM设置,它适用于50mb左右的小文件。 我遇到较大文件的内存不足错误,并通过更改不同的堆空间大小,我可以发送稍大的文件,但没有接近1GB。 1GB是我的测试用例。 如何将MTOM服务从服务器流式传输或分块到客户端? 我正在使用Java 6更新17,Tomcat 6和Spring WS 1.5.7以及SaajSoapMessageFactory。

我找到了使用jax-ws进行流式传输的示例,但我不确定如何将其合并到Spring WS端点中。

使用MTOM / XOP优化二进制数据传输

昨天,我在上传大文件时遇到了同样的问题。 最后我能够找到解决方案。 Spring WS有一个名为org.springframework.ws.soap.axiom.AxiomSoapMessageFactory的定制Axiom消息工厂,它可以在上传大文件时使用文件而不是内存。 要在配置中进行的唯一更改是使用自定义属性定义bean。

      

一旦你在类路径中有了这个配置和Axiom类,Spring-ws就会自动使用临时文件来备份大型文档上传。