Pergunta

Gostaria de enviar arquivos grandes a partir do servidor para o cliente usando MTOM e Spring WS. Sei que esta não é a melhor abordagem para este tipo de coisa, mas é uma exigência. Eu tenho MTOM configurar e ele funciona muito bem para arquivos pequenos em torno de 50MB. Estou enfrentando erros de memória para arquivos maiores e alterando diferentes tamanhos espaço de pilha, eu posso enviar arquivos um pouco maiores, mas nada perto de 1GB. 1GB é o meu caso de teste para isso. Como posso transmitir ou pedaço do serviço MTOM do servidor para o cliente? Eu estou usando Java 6 Update 17, Tomcat 6 e Primavera WS 1.5.7 com o SaajSoapMessageFactory.

Eu encontrei um exemplo de streaming com JAX-WS, mas não tenho certeza de como incorporar isso em um ponto de extremidade Primavera WS.

Otimizando Binário Transmissão de Dados Utilizando MTOM / XOP

Foi útil?

Solução

Ontem, eu estou tendo o mesmo problema com upload de arquivos grandes. Finalmente eu era capaz de encontrar a solução para isso. Primavera WS tem uma mensagem fábrica Axiom personalizado chamado org.springframework.ws.soap.axiom.AxiomSoapMessageFactory que pode usar o arquivo em vez de na memória ao carregar arquivos grandes. A única mudança que fazer em sua configuração é definir o feijão com suas propriedades personalizadas.

<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>

Depois de ter esta configuração e aulas Axiom disponível no classpath, Primavera-WS automaticamente usa arquivos temporários para piggy volta grandes envios de documentos.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top