我想使用 MTOM 和 Spring WS 将大文件从服务器发送到客户端。我意识到这不是处理此类事情的最佳方法,但这是一个要求。我设置了 MTOM,它非常适合 50mb 左右的小文件。我遇到较大文件的内存不足错误,通过更改不同的堆空间大小,我可以发送稍大的文件,但不能发送接近 1GB 的文件。 1GB 是我的测试用例。如何将 MTOM 服务从服务器流式传输或分块到客户端?我使用 Java 6 update 17、Tomcat 6 和 Spring WS 1.5.7 以及 SaajSoapMessageFactory。
我找到了一个使用 jax-ws 进行流式传输的示例,但我不确定如何将其合并到 Spring WS 端点中。
使用 MTOM/XOP 优化二进制数据传输 http://download.oracle.com/docs/cd/E12840_01/wls/docs103/webserv_adv/mtom.html
昨天,我在上传大文件时遇到了同样的问题。最后我找到了解决方案。 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 就会自动使用临时文件来承载大型文档上传。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)