Question

Je voudrais envoyer des fichiers volumineux à partir du serveur au client en utilisant MMD et Spring WS. Je me rends compte que ce n'est pas la meilleure approche pour ce genre de chose, mais il est une exigence. J'ai MMD mis en place et il fonctionne très bien pour les petits fichiers autour de 50mb. Je rencontre des erreurs de mémoire pour des fichiers plus volumineux et en changeant différentes tailles d'espace de tas, je peux envoyer des fichiers un peu plus grandes, mais rien près de 1Go. 1 Go est mon cas de test pour cela. Comment puis-je diffuser ou morceau le service MMD du serveur au client? J'utilise Java 6 update 17, Tomcat 6 et Spring WS 1.5.7 avec le SaajSoapMessageFactory.

J'ai trouvé un exemple de flux avec JAX-WS, mais je ne suis pas sûr de savoir comment l'intégrer dans un point de terminaison Spring WS.

Optimisation de la transmission des données binaires à l'aide MTOM / XOP

Était-ce utile?

La solution

Hier, je suis le même problème avec le téléchargement de fichiers volumineux. Enfin, je suis en mesure de trouver la solution pour cela. Spring WS a une usine de message d'Axiom personnalisé appelé org.springframework.ws.soap.axiom.AxiomSoapMessageFactory qui peut utiliser le fichier au lieu de la mémoire lors du téléchargement de fichiers volumineux. Le seul changement à faire dans votre configuration est de définir la fève avec vos propriétés personnalisées.

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

Une fois que vous avez cette configuration et les classes Axiom disponibles dans classpath, Spring-ws utilise automatiquement les fichiers temporaires de ferroutage des transferts importants de documents.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top