5

MTOM と Spring WS を使用して、サーバーからクライアントに大きなファイルを送信したいと考えています。これがこの種のことに対する最善のアプローチではないことは理解していますが、それは要件です。私は MTOM をセットアップしており、50MB 前後の小さなファイルに最適です。大きなファイルでメモリ不足エラーが発生し、さまざまなヒープ領域サイズを変更することで、わずかに大きなファイルを送信できますが、1 GB に近いものはありません。1GB は、これに対する私のテスト ケースです。サーバーからクライアントに MTOM サービスをストリーミングまたはチャンクするにはどうすればよいですか? SaajSoapMessageFactory で Java 6 update 17、Tomcat 6、Spring WS 1.5.7 を使用しています。

jax-ws でのストリーミングの例を見つけたのですが、これを Spring WS エンドポイントに組み込む方法がわかりません。

MTOM/XOP を使用したバイナリ データ転送の最適化

4

1 に答える 1

5

昨日、大きなファイルのアップロードで同じ問題が発生しました。最後に、その解決策を見つけることができました。org.springframework.ws.soap.axiom.AxiomSoapMessageFactorySpring WS には、大きなファイルをアップロードする際にメモリ内ではなくファイルを使用できる、カスタマイズされた Axiom メッセージ ファクトリがあります。構成で行う唯一の変更は、カスタム プロパティで 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 に答える