我想使用MTOM和Spring WS将大文件从服务器发送到客户端。我知道对于这类事情,这不是最好的方法,但这是必需的。我已经设置了MTOM,它适用于50mb左右的小文件。对于较大的文件,我遇到了内存不足错误,通过更改不同的堆空间大小,我可以发送稍微大一点的文件,但不能接近1 1gb。1 1GB是我的测试用例。如何将MTOM服务从服务器流式传输或分块到客户端?我在SaajSoapMessageFactory上使用Java6update17、Tomcat6和Spring WS 1.5.7。
我发现了一个使用jax-ws进行流式传输的示例,但我不确定如何将其合并到Spring WS端点中。
Optimizing Binary Data Transmission Using MTOM/XOP
发布于 2010-02-12 22:35:26
昨天,我在上传大文件时遇到了同样的问题。最后,我终于找到了解决方案。Spring WS有一个自定义的Axiom消息工厂,名为org.springframework.ws.soap.axiom.AxiomSoapMessageFactory,它可以在上传大文件时使用文件而不是存储在内存中。在您的配置中要做的唯一更改是使用您的自定义属性定义bean。
<bean id="messageFactory" class="org.springframework.ws.soap.axiom.AxiomSoapMessageFactory">
<property name="payloadCaching" value="false" />
<property name="attachmentCaching" value="true" />
<property name="attachmentCacheThreshold" value="1024"/>
</bean>一旦在类路径中有了这个配置和Axiom类,Spring-ws就会自动使用临时文件来打包大型文档上传。
https://stackoverflow.com/questions/1842843
复制相似问题