2009-12-03 9 views
4

Je voudrais envoyer des fichiers volumineux du serveur au client en utilisant MTOM et Spring WS. Je réalise que ce n'est pas la meilleure approche pour ce genre de chose, mais c'est une exigence. J'ai MTOM mis en place et cela fonctionne très bien pour les petits fichiers autour de 50mb. Je rencontre des erreurs de mémoire insuffisante pour les fichiers volumineux et en changeant différentes tailles d'espace de tas, je peux envoyer des fichiers légèrement plus gros, mais rien de près de 1gb. 1 Go est mon test pour cela. Comment puis-je diffuser ou tronquer le service MTOM du serveur vers le client? J'utilise Java 6 mise à jour 17, Tomcat 6 et Spring WS 1.5.7 avec SaajSoapMessageFactory.Services Web MTOM Stream dans Spring Web Services Framework

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

Optimizing Binary Data Transmission Using MTOM/XOP

+0

une chance avec celui-ci? Je suis encore aux prises avec celui-ci ... –

Répondre

5

Hier, je suis le même problème avec le téléchargement de fichiers volumineux. Finalement, j'ai été capable de trouver la solution pour cela. Spring WS dispose d'une fabrique de messages Axiom personnalisée, appelée org.springframework.ws.soap.axiom.AxiomSoapMessageFactory, qui peut utiliser un 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 le bean 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, printemps-ws utilise automatiquement les fichiers temporaires de ferroutage des transferts importants de documents.

+0

J'ai utilisé Axis2 1.5.1 pour résoudre mon problème côté client. Je crois qu'il utilise aussi l'axiome. –

+0

Quelle est la meilleure combinaison/approche pour le téléchargement de gros fichiers en utilisant MTOM et spring et websphere? SAAJ ou AXIOM ou JAX-WS ou CXF ou client http? ou y a-t-il un autre meilleur? Mieux est en termes de performance, l'utilisation de la mémoire, le temps pris pour télécharger. @DanPolites – AJJ