Передача веб-сервисов MTOM в Spring Web Services Framework - PullRequest
5 голосов
/ 03 декабря 2009

Я хотел бы отправить большие файлы с сервера на клиент, используя MTOM и Spring WS. Я понимаю, что это не лучший подход для такого рода вещей, но это требование. У меня настроен MTOM, и он отлично работает для небольших файлов размером около 50 МБ. Я испытываю ошибки нехватки памяти для больших файлов и, изменяя различные размеры пространства кучи, я могу отправить файлы немного большего размера, но ничего не приближается к 1 ГБ 1ГБ - мой тестовый пример для этого. Как я могу транслировать или разделять сервис MTOM с сервера на клиент? Я использую Java 6 с обновлением 17, Tomcat 6 и Spring WS 1.5.7 с SaajSoapMessageFactory.

Я нашел пример потоковой передачи с помощью jax-ws, но я не уверен, как включить это в конечную точку Spring WS.

Оптимизация передачи двоичных данных с использованием MTOM / XOP

1 Ответ

5 голосов
/ 12 февраля 2010

Вчера у меня возникла такая же проблема с загрузкой больших файлов. Наконец я смог найти решение для этого. 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, доступные в classpath, Spring-ws автоматически использует временные файлы для добавления больших документов.

...