Потоковая передача веб-служб MTOM в Spring Web Services Framework

StackOverflow https://stackoverflow.com/questions/1842843

  •  12-09-2019
  •  | 
  •  

Вопрос

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

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

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

Это было полезно?

Решение

Вчера у меня возникла та же проблема с загрузкой больших файлов.Наконец я смог найти решение этой проблемы.Spring WS имеет настроенную фабрику сообщений Axiom под названием org.springframework.ws.soap.axiom.AxiomSoapMessageFactory который может использовать файл вместо памяти при загрузке больших файлов.Единственное изменение, которое необходимо внести в вашу конфигурацию, — это определить компонент с вашими пользовательскими свойствами.

<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 автоматически использует временные файлы для загрузки больших документов.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top