Pregunta

Me gustaría enviar archivos de gran tamaño desde el servidor al cliente usando masa máxima de despegue y primavera WS. Soy consciente de que este no es el mejor enfoque para este tipo de cosas, pero es un requisito. Tengo masa máxima de despegue configurado y funciona muy bien para un pequeño archivo de alrededor de 50 MB. Estoy experimentando errores de falta de memoria para archivos más grandes y cambiando diferentes tamaños espacio de almacenamiento dinámico, puedo enviar archivos un poco más grandes, pero nada cercano a 1 GB. 1 GB es mi caso de prueba para esto. ¿Cómo puedo transmitir o trozo del servicio masa máxima de despegue desde el servidor al cliente? Estoy usando Java 6 Update 17, Tomcat 6, y WS Spring 1.5.7 con el SaajSoapMessageFactory.

He encontrado un ejemplo de transmisión con JAX-WS, pero no estoy seguro de cómo incorporar esto en un punto final de la primavera WS.

Optimización binaria de transmisión de datos Uso de MTOM / XOP

¿Fue útil?

Solución

Ayer, estoy teniendo el mismo problema con la carga de archivos de gran tamaño. Finalmente pude encontrar la solución para eso. Primavera WS tiene un mensaje axioma fábrica llamada org.springframework.ws.soap.axiom.AxiomSoapMessageFactory personalizado que puede utilizar el archivo en lugar de en la memoria al cargar archivos de gran tamaño. El único cambio que hacer en su configuración es definir el frijol con sus propiedades 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>

Una vez que tenga esta clase de configuración y Axiom disponibles en la ruta de clases, Primavera-WS utiliza automáticamente los archivos temporales que llevan a cuestas grandes envíos de documentos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top