2013-03-18 18 views
14

SAAJ: SOAP con allegati API per JavaQual è la differenza tra MTOM e le funzionalità di allegato fornite da SAAJ?

MTOM: SOAP Message Transmission Optimization Mechanism

mia comprensione semplice: hanno a che fare con allegati SOAP, con MTOM essendo il più ottimizzato versione di SAAJ . È corretto?

Sono semplicemente 2 modi diversi di fare la stessa cosa? O sto cercando di confrontare mele e arance qui?

Posso utilizzare SAAJ e MTOM insieme?

risposta

30

È un po 'più complicato. SAAJ è una vecchia API Java utilizzata per manipolare gli inviluppi SOAP, pertanto l'invio di allegati binari può essere eseguito in modo corretto (ovvero non è una stringa codificata BASE64 nel corpo del messaggio). SAAJ è una sorta di interfaccia di basso livello, è necessario costruire la busta SOAP "a mano" nel codice e aggiungere allegati ad essa.

Se non è necessario utilizzare il codice precedente e si desidera lavorare direttamente con buste SOAP, consultare le interfacce JAX-WS Dispatcher e Provider.

MTOM è un altro animale. Non è un'API di servizio web completo, è un modo specializzato per inviare allegati. Può essere utilizzato da qualsiasi "vera" API di servizi Web come JAX-WS o SAAJ (se riesci a forzare SAAJ a funzionare in questo modo).

MTOM è (quasi) sempre utilizzato con XOP, un modo più efficiente di inviare dati binari, rispetto a BASE64 (che ha un grande overhead). L'allegato viene inviato separatamente come allegato MIME e il tipo MIME viene gestito correttamente (che era un problema per le interazioni con le tecnologie Java-Microsoft).

Oggigiorno dimenticare SAAJ, utilizzare il supporto JAX-WS + MTOM fornito dalla maggior parte delle implementazioni JAX-WS.

+1

Bella risposta. Vale sicuramente la pena di più upvotes. – Hubert