代码之家  ›  专栏  ›  技术社区  ›  Dan Polites

SpringWeb服务框架中的流式MTOMWeb服务

  •  4
  • Dan Polites  · 技术社区  · 15 年前

    我想使用MTOM和SpringWS将大型文件从服务器发送到客户端。我意识到这不是解决这类问题的最佳方法,但这是一个要求。我已经设置了MTOM,它对于50mb左右的小文件非常有效。我遇到了较大文件的内存不足错误,通过更改不同的堆空间大小,我可以发送稍大的文件,但没有接近1gb的文件。1GB是我的测试用例。如何将MTOM服务从服务器流式传输或分块到客户端?我在SaajSoapMessageFactory中使用Java6Update17、Tomcat6和SpringWS1.5.7。

    Optimizing Binary Data Transmission Using MTOM/XOP

    1 回复  |  直到 15 年前
        1
  •  5
  •   Teja Kantamneni    15 年前

    昨天,我上传大文件时遇到了同样的问题。我终于找到了解决办法。SpringWS有一个定制的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类,SpringWS就会自动使用临时文件来承载大型文档上传。