5

我想使用 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 优化二进制数据传输

4

1 回答 1

5

昨天,我在上传大文件时遇到了同样的问题。最后,我能够找到解决方案。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 会自动使用临时文件来搭载大型文档上传。

于 2010-02-12T14:35:26.160 回答