2010-04-12 20 views
7

Sto cercando di fare una semplice web-service, che esegue le seguenti operazioni:Come funziona MTOM + esempio di codice

  1. Il cliente colpisce il servizio web che richiede un file.
  2. del servizio web classe di servizio interroga una tabella hash, che ha la chiave (query di ricerca) e il valore come il valore base64encoded di un file (ad esempio un pdf)
  3. Ora, ho bisogno di usare MTOM per restituire il valore base64encoded memorizzato nella tabella hash al client.

Spetta al client decodificarlo e convertirlo in pdf.

Così, qui sono le mie domande:

  1. ho capito che codificare i file a Base64 per la trasmissione tramite il servizio web, ma dove e come si fa MTOM entrano in foto ci sono?

  2. Qualcuno può fornirmi un metodo semplice che utilizza MTOM e restituisce i dati. È necessario specificare qualcosa anche nel WSDL? o un semplice tipo di restituzione String sarebbe sufficiente? Perché perché no?

Grazie

Ho visto questo code. Usa molte annotazioni, ho solo bisogno di un semplice codice java che usi MTOM. Nuovo per J2EE QUI :)

UPDATE 1

dignitoso abbastanza spiegazione here, ora ho bisogno di capire dal livello di implementazione. Buone informazioni here, ma per .Net

UPDATE 2

Quale dovrebbe essere il tipo di ritorno del metodo "createMTOM (int id)" ??

risposta

7

Sembra che si confondano implementazione e protocollo.

Le specifiche per MTOM sono here. La pagina This contiene messaggi di esempio.

Se si utilizza un ambiente JAX-WS, si utilizza sicuramente Annotations per attivarlo. Se si stanno facendo scorrere i messaggi di sapone a mano, si scrive qualsiasi codice Java che è necessario scrivere per produrlo. Essenzialmente, MTOM significa che il contenuto dei dati si sposta su un allegato, che è una parte MIME separata del messaggio, e viene fatto riferimento attraverso un elemento xop: Include con un href alla parte MIME.

Lo schema deve dire base64Binary come tipo di elemento, ma gli attributi aggiuntivi forniscono suggerimenti sull'interpretazione dei byte: xmime: contentType e xmime: expectedContentType. Nella mia esperienza, l'implementazione di riferimento JAX-B ha alcune limitazioni sull'uso di questi. Ad esempio, non puoi farlo convertire automaticamente il testo avanti e indietro in byte. In un tipico kit come CXF o Glassfish, si mettono i dati in un DataHandler e il kit lo trasforma in allegato.

0

C'è un utile articolo che descrive here MTOM e come attivarla con CXF. L'articolo include anche il codice sorgente per un esempio funzionante.