2009-12-03 231 views
4

我想使用MTOM和Spring WS將大型文件從服務器發送到客戶端。我意識到這不是這種類型的最佳方法,但這是一個要求。我設置了MTOM,它適用於50MB左右的小文件。我遇到大容量文件的內存不足錯誤,並且通過更改不同的堆空間大小,我可以發送稍大的文件,但沒有接近1gb的文件。 1GB是我的測試案例。如何將服務器上的MTOM服務流式傳輸到客戶端?我正在使用Java 6 update 17,Tomcat 6和Spring WS 1.5.7以及SaajSoapMessageFactory。Spring Web服務框架中的流式MTOM Web服務

我找到了一個使用jax-ws進行流式處理的例子,但我不確定如何將這個結合到Spring WS端點中。

Optimizing Binary Data Transmission Using MTOM/XOP

+0

有沒有這個運氣?我仍然在努力... – 2010-02-11 19:13:45

回答

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> 

一旦你在類路徑這種配置和公理班,春-WS自動使用臨時文件上捎帶大文件上傳。

+0

我用Axis2 1.5.1解決了我在客戶端的問題。我相信它也使用公理。 – 2010-09-29 13:33:16

+0

使用MTOM和spring和websphere進行大文件上傳的最佳組合/方法是什麼? SAAJ或AXIOM或JAX-WS或CXF或http客戶端?還是還有其他更好的?在性能,內存使用情況,上傳時間方面更好。 @DanPolites – AJJ 2016-07-13 03:44:45