Domanda

Vorrei inviare file di grandi dimensioni dal server al client utilizzando MTOM e Spring WS. Mi rendo conto che questo non è l'approccio migliore per questo tipo di cosa, ma è un requisito. Ho MTOM istituito e funziona benissimo per file di piccole dimensioni in tutto 50mb. Sto vivendo fuori gli errori di memoria per i file più grandi e modificando diverse dimensioni spaziali mucchio, posso inviare file leggermente più grandi, ma niente vicino a 1Gb. 1 GB è il mio banco di prova per questo. Come posso streaming o pezzo il servizio MTOM dal server al client? Sto usando Java 6 Update 17, Tomcat 6, e WS primavera 1.5.7 con la SaajSoapMessageFactory.

Ho trovato un esempio di streaming con JAX-WS, ma non sono sicuro di come incorporare questo in un endpoint primavera WS.

Ottimizzazione dati binari della trasmissione con il MTOM / XOP

È stato utile?

Soluzione

Ieri, Sto avendo lo stesso problema con il caricamento di file di grandi dimensioni. Finalmente sono riuscito a trovare la soluzione per questo. Primavera WS ha un messaggio personalizzato Axiom fabbrica chiamato org.springframework.ws.soap.axiom.AxiomSoapMessageFactory che può utilizzare file anziché in memoria durante il caricamento di file di grandi dimensioni. L'unica modifica da fare nella configurazione è definire il fagiolo con le proprietà personalizzate.

<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 volta che hai questa configurazione e Axiom classi disponibili nel classpath, primavera-ws utilizza automaticamente i file temporanei di piggy back grandi caricamenti del documento.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top