Sunday 19 November 2017

Cxf Content Transfer Encoding Binario Options


La gestione dei dati binario con Axis2 (MTOMSwA) Introduzione Nonostante la flessibilità, interoperabilità, e l'accettazione globale di XML, ci sono momenti in cui la serializzazione dei dati in XML non ha senso. utenti dei servizi Web potrebbero voler trasmettere allegati binari di vario tipo come immagini, disegni, documenti XML, ecc insieme a un messaggio SOAP. Tali dati sono spesso in un particolare formato binario. Tradizionalmente, due tecniche sono state utilizzate nel trattamento dei dati opachi in XML Invio dati binari valore è ottenuto inserendo opaco dati (naturalmente dopo qualche forma di codifica) come elemento o attributo contenuto del componente XML dei dati. Il vantaggio principale di questa tecnica è che dà applicazioni la capacità di elaborare e descrivere i dati, basati esclusivamente sulla componente XML dei dati. XML supporta opaco dati come contenuti attraverso l'uso di uno o Base64 codifica del testo esadecimale. Entrambe le tecniche gonfiare la dimensione dei dati. Per UTF-8 codifica di testo sottostante, codifica base64 aumenta la dimensione dei dati binari di un fattore 1.33x delle dimensioni originali, mentre codifica esadecimale espande i dati di un fattore 2x. I fattori di cui sopra saranno raddoppiati se si utilizza la codifica del testo UTF-16. Anche di preoccupazione è l'overhead dei costi di lavorazione (reali o percepite) per questi formati, soprattutto quando la decodifica di nuovo in binario non elaborato. L'invio di dati binari di riferimento è ottenuta collegando dati binari puri come entità non analizzate generali esterne al di fuori del documento XML e quindi l'incorporamento URI di riferimento per quelle entità come elementi o valori degli attributi. Ciò impedisce il gonfiore inutili di dati e spreco di potenza di elaborazione. L'ostacolo principale per l'utilizzo di queste entità non analizzate è il loro forte dipendenza DTD, che impedisce la modularità, così come l'uso di namespace XML. Ci sono state diverse specifiche introdotte nel mondo dei servizi Web per affrontare questo problema allegato binario utilizzando la tecnica referencequot quotby. SOAP con allegati è un esempio. Dal momento che SOAP vieta dichiarazioni DTD (Document Type) nei messaggi, questo porta al problema della non rappresentazione dei dati come parte del infoset messaggio, quindi la creazione di due modelli di dati. Questo scenario è come l'invio di allegati con un messaggio di posta elettronica. Anche se tali allegati sono correlate al contenuto del messaggio non sono all'interno del messaggio. Questo fa sì che le tecnologie che elaborano e descrivono i dati basati sulla componente XML dei dati di un malfunzionamento. Un esempio è WS-Security. Da dove viene MTOM Come In MTOM (SOAP Message Transmission Optimization Mechanism) è un'altra specifica che si concentra sulla soluzione del problema quotAttachmentsquot. MTOM cerca di sfruttare i vantaggi di queste due tecniche, cercando di unire le due tecniche. MTOM è in realtà un metodo quotby referencequot. Il filo formato di un messaggio MTOM ottimizzato è lo stesso del SOAP con il messaggio allegate, che rende anche compatibile con gli endpoint SWA. La caratteristica più notevole di MTOM è l'uso del XOP: Include elemento, che è definito nella specifica Packaging Binary XML ottimizzato (XOP) per fare riferimento gli allegati binari (entità generali unparsed esterni) del messaggio. Con l'uso di questo elemento esclusiva, il contenuto binario divisoria diventa logicamente in linea (in valore) con il documento SOAP anche se è effettivamente collegato separatamente. Questo unisce i due mondi, rendendo possibile lavorare solo con un modello di dati. Questo permette alle applicazioni di elaborare e descrivere da solo guardando la parte XML, rendendo la dipendenza da DTD obsoleto. Su una nota più leggera, MTOM ha standardizzato il meccanismo riferimento di SWA. Quanto segue è un estratto dalla specifica XOP. A livello concettuale, questi dati binari possono essere pensati come essere codifica Base64 nel documento XML. Poiché questa forma concettuale potrebbe essere necessario durante alcune elaborazioni del documento XML (ad esempio per la firma del documento XML), è necessario avere una corrispondenza uno-a-uno tra Infoset XML e Pacchetti XOP. Pertanto, la rappresentazione concettuale di tali dati binari è come se fosse con codifica Base64, utilizzando il modulo lessicale canonica del tipo di dati XML Schema base64Binary (vedi XML Schema Part 2: Datatypes Second Edition 3.2.16 base64Binary). In direzione opposta, XOP è in grado di ottimizzare i dati solo Infoset codifica base64 che è nella forma lessicale canonica. Apache Axis2 supporta la codifica Base64. SOAP con allegati e MTOM (SOAP Message Transmission Optimization Mechanism). MTOM con Axis2 modello di programmazione AXIOM è (e può essere il primo) Object Model che ha la capacità di tenere i dati binari. Ha questa capacità come OMText può contenere contenuto binario grezzo in forma di javax. activation. DataHandler. OMText è stato scelto per questo scopo con due motivi. Uno è che XOP (MTOM) è in grado di ottimizzare solo i dati Infoset codifica base64 che è in forma lessicale canonica di XML Schema base64Binary tipo di dati. Altro è quello di preservare la infoset sia il mittente e il destinatario. (Per memorizzare il contenuto binario nello stesso tipo di oggetto, indipendentemente dal fatto che sia ottimizzato o no). MTOM permette di codificare in modo selettivo parti del messaggio, che ci permette di inviare i dati base64encoded così come dati binari grezzi collegati esternamente a cui fa riferimento l'elemento quotXOPquot (contenuti ottimizzati) da inviare in un messaggio SOAP. È possibile specificare se un nodo OMText che contiene dati binari grezzi o dati binari base64encoded è qualificato per essere ottimizzato al momento della costruzione di quel nodo o poi. Per l'efficienza ottimale di MTOM, si consiglia un utente di inviare allegati binari più piccoli che utilizzano base64encoding (non ottimizzato) e gli allegati più grandi come contenuto ottimizzato. Inoltre, un utente può creare un nodo di contenuto binario ottimizzabile utilizzando una stringa codificata base64, che contiene contenuto binario codificato, dato con il tipo MIME della rappresentazione binaria effettiva. Axis2 utilizza javax. activation. DataHandler per gestire i dati binari. Tutti i nodi di contenuti binari ottimizzati verranno serializzati come Base64 stringhe se quotMTOM non è enabledquot. È inoltre possibile creare nodi di contenuto binario, che non sarà ottimizzata in ogni caso. Saranno serializzati e inviati come stringhe Base64. L'attivazione di ottimizzazione MTOM sul lato client In Opzioni, impostare la proprietà quotenableMTOMquot su True quando si inviano messaggi. Quando questa proprietà è impostata su True, qualsiasi busta SOAP, indipendentemente dal fatto che contiene contenuti ottimizzabile o no, verrà serializzato come un messaggio MIME MTOM ottimizzato. Axis2 serializza tutti i nodi di contenuti binari come Base64 codificato stringhe indipendentemente dal fatto che sono qualificati per essere ottimizzato o no se la proprietà quotenableMTOMquot è impostata su False. Se la busta contiene tutti gli elementi di informazione elemento del nome XOP: Include (vedi XML-binary Optimized Packaging 3. XOP infoset costrutti). L'utente non deve specificare nulla in modo che Axis2 di ricevere messaggi MTOM ottimizzato. Axis2 identificherà automaticamente e de-serializzare di conseguenza, come e quando arriva un messaggio MTOM. L'attivazione di ottimizzazione MTOM sul lato server Il server Axis 2 identifica automaticamente i messaggi in arrivo MTOM ottimizzato in base al tipo di contenuto e li de-serializza di conseguenza. L'utente può enableMTOM sul lato server per i messaggi in uscita, per enableMTOM a livello globale per tutti i servizi, gli utenti possono impostare il parametro quotenableMTOMquot su True nel Axis2.xml. Quando è impostato, tutti i messaggi in uscita vengono serializzati e inviati come messaggi MIME MTOM ottimizzato. Se non è impostata, tutti i dati binari nei nodi di contenuti binari verranno serializzati come stringhe Base64 codificati. Questa configurazione può essere sovrascritto nel services. xml in base al servizio e per operazione. È necessario riavviare il server dopo aver impostato questo parametro. Accesso ai dati ricevuti binario (codice di esempio) Im scrivendo un semplice web server in python che consente all'utente di caricare un file utilizzando multipartform-dati. Per quanto posso dire, i dati MIME multipart dovrebbe essere basata linea. Per esempio, il limite deve essere all'inizio di una riga. Non riesco a capire come i dati binari viene gestita in questo senso. Il mio cliente (Firefox) non è la codifica in ASCII 7bit o nulla, i suoi dati binari grezzi solo il suo invio. Lo fa dividere i dati in linee a posizioni arbitrarie Esiste una lunghezza massima di riga specificato per i dati più parti Ive ha provato guardando attraverso la RFC per multipartform-dati, ma non ha ancora trovato nulla. chiesto 27 marzo 13 al 16:54 Dopo aver scavato attraverso le RFC, penso che finalmente ho avuto tutto dritto nella mia testa. Le parti del corpo (cioè il contenuto del corpo di una singola parte in un messaggio concatenato) devono solo essere basata line che il confine alla fine della parte inizia con un CRLF. Ma per il resto, i dati non devono essere line-based, e se il contenuto succede ad avere a capo in esso, non c'è distanza massima tra di loro, né hanno bisogno di essere sfuggito a ogni modo (beh, se non forse il Content-Transfer - Codifica è quotata-string). I 7-bit, 8-bit, e le opzioni binarie per Content-Transfer-Encoding dont in realtà indicano che qualsiasi codifica è stato fatto sui dati (e quindi nessuna codifica deve essere annullata), stanno solo dire per indicare il tipo di dati si può aspettare di vedere nella parte del corpo. Quello che mi è stato davvero sempre a nella mia interrogazione scarsamente espresso era come LeggiBuffer i dati della presa di modo che io possa fare in modo ho raggiunto il limite, e senza dover avere un arbitrariamente grande di buffer (ad esempio se ci è capitato di essere non linebreaks a il contenuto, e quindi una readline finito per il buffering l'intera cosa). Quello che ho finito per fare era il buffering dalla presa con un readline usando una lunghezza massima, in modo che il tampone non sarebbe mai più lungo di quello, ma sarebbe anche fare in modo di interrompere, se è stato rilevato un interruzione di riga. Questo garantisce che quando il confine venuto (dopo un CRLF), sarebbe all'inizio del buffer. Ho dovuto fare un po 'di più monkeying intorno al fine di garantire che non ho includo CRLF finale nel contenuto effettivo corpo, perché secondo la RFC sua richiesta prima del confine, e quindi non fa parte del contenuto stesso. ha risposto 5 Apr 13 ad 12:02 Prova rivedere RFC 2045. In genere, il contenuto binario viene convertito in BASE64 dall'applicazione e incluso nel messaggio a più parte utilizzando Content-Transfer-Encoding. Base64. Ci sono altri meccanismi per trasferire dati binari, ma questo è abbastanza comune. Dati binari sono convertiti in ottetti e chunked in stringhe di lunghezza arbitrari (a seconda della variante di codifica - vedi il link BASE64 sopra). L'applicazione ricevente poi lo decodifica nel contenuto binario originale. Io non sono un programmatore python, ma sarei sorpreso che realmente doveva codificare tutto questo da soli. Ho il sospetto che ci sono predefinite funzioni di libreria Python per fare questo per voi. risposto 27 marzo 13 alle 17:43 Grazie, stavo guardando un RFC diverso che non era come informativo. Ho anche trovato RFC 2046 che definisce specificamente messaggi concatenati nella sezione 5. Nota there39s un po 'di una sottigliezza in questi RFC che attraverso di me fuori: si dice messaggi in più non possono avere codifiche diverse da 7-bit, 8-bit, e binari (cioè non in base 64). Tuttavia, si continua a dire che le singole parti all'interno della parte più possono avere proprio lì content-codifiche, così si è corretto che Base-64 è possibile. brianmearns ndash 28 13 Mar alle 13:20 tua risposta 2017 Stack Exchange, IncSending allegati con applicazioni sapone sapone spesso hanno a che fare con più di messaggi solo semplici. Il carico utile per un messaggio SOAP spesso può includere un documento di testo o PDF, immagini o altri file binario. Questo articolo spiega come utilizzare il meccanismo di ottimizzazione Message Transmission (MTOM) per inviare e ricevere i messaggi. Scarica questa guida gratuita Manuale libero: Java App per lo sviluppo nelle ingegneri del software Nube stanno avvicinando lo sviluppo e la progettazione di impresa in un modo completamente nuovo, grazie al cloud. In questo esperto manuale, esplorare come i vostri coetanei stanno sfruttando il cloud per ottimizzare la gestione del ciclo di vita dell'applicazione, risparmiare denaro, e rendere la produzione e la sicurezza più efficiente. Inviando i tuoi dati personali, l'utente accetta che TechTarget ei suoi partner possono contattare voi per quanto riguarda contenuti pertinenti, i prodotti e le offerte speciali. Lei accetta inoltre che le informazioni personali possono essere trasferite ed elaborate negli Stati Uniti, e di aver letto ed accettato le condizioni d'uso e l'Informativa sulla Privacy. Prerequisiti Questo articolo utilizza il WSO2 Web Services Application Server (WSAS.) Si consiglia di scaricare e installare WSO2 WSAS 2.0. L'articolo utilizza l'edizione servlet installata su Apache Tomcat. Qualsiasi server applicazione può essere utilizzata con la versione servlet, basta seguire le istruzioni di installazione fornite con WSO2 WSAS. Non dovete utilizzare un server di applicazioni a tutti, come WSO2 WSAS grandi opere in un formato stand-alone. WSO2 WSAS richiede Java 1.4 o 1.5, ma non ci sono altri prerequisiti per essa. Naturalmente i servizi web SOAP e soprattutto è usato, in modo da la familiarità con che aiuteranno. Quando XML non è sufficiente: i dati binari Ci sono infiniti modi per inviare dati attraverso la rete. Ci sono numerosi protocolli e formati di dati. La standardizzazione intorno SOAP ha tolto un sacco di congetture in invio di dati tra i sistemi. SOAP standardizza il protocollo (HTTP) e il formato dei dati (XML). Una delle principali critiche di sapone è il suo uso di XML. XML è basato su testo. Questo non solo per messaggi di grandi dimensioni, ma rende incompatibile con i dati binari. Ad esempio, consente di dire il vostro messaggio deve includere un'immagine. Ciò pone un problema quando il formato del messaggio è di testo. La combinazione di dati binari con SOAP Ok, quindi è necessario inviare i dati binari tra le applicazioni. Youd piace usare SOAP, ma il suo limitato a testo. Quindi, si dovrebbe semplicemente rinunciare a SOAP tutti insieme Certo che no, ci sono anche molti vantaggi a SOAP. Hai solo bisogno di un modo per combinare con dati binari. Vedete le pagine web fanno questo tutto il tempo Non può essere così difficile, Lets diritto di esplorare alcune soluzioni a questo problema. Un modo si potrebbe provare è di scaricare semplicemente il binario in un nodo di testo. Si potrebbe essere simile Listato 1. Listato 1. XML con dati binari: Prima Prova Ricordate che i personaggi sono anche byte, proprio come dati binari. Un parser XML, se il suo un parser DOM, SAX, o StAX, deve utilizzare la codifica del set di caratteri del documento di interpretare tutti i byte nel documento come caratteri. Così i nostri dati binari potrebbero facilmente avere caratteri che corrispondono a caratteri XML riservati, come lt o GT o amplificatore. Tale sequenza di byte nel nodo di testo sopra causerà il parser sull'altro lato rottura. Quindi, questo approccio non funziona. Ma aspetta, forse theres un modo per risolvere questo approccio. Cosa succede ad usare un blocco CDATA che dirà il parser di ignorare i caratteri all'interno del blocco. Questo approccio modificato potrebbe apparire come nel Listato 2. Listato 2. XML con binario: Utilizzando CDATA Ora, se abbiamo byte che verrebbero interpretate come una GT (per esempio,) saranno ignorate. Tuttavia, il parser deve capire dove finisce la sezione CDATA. Lo fa cercando la sequenza di byte corrispondente alla caratteri gt. Potrebbe sembrare improbabile, ma i nostri dati binari potuto semplicemente come una sequenza di byte nel mezzo di esso. Che potrebbe causare qualsiasi parser a pensare che la sezione CDATA era finita ei caratteri successivi sarebbe stato interpretato proprio come nel nostro primo tentativo. Quindi thats non andare a lavorare neanche. Abbiamo bisogno di un modo per assicurarsi che tali byte arent interpretati a tutti. Base 64 codifica: Opere ma gonfio C'è una soluzione a questa variante del nostro problema. Un modo comune per farlo è quello di utilizzare Base 64 codifica. Questa tecnica è stata intorno (come standard) fin dagli anni '80. Si tratta di utilizzare un alfabeto 64 carattere costituito dai caratteri minuscoli, A-Z, i caratteri maiuscoli, A-Z, i numeri 0-9, e le e simboli. Ogni byte viene mappato questi personaggi, quindi non c'è nessun modo per qualsiasi byte per ottenere interpretato come nulla che possa soffocare un parser XML. Quindi c'è, problema risolto, giusto Sì, ma la sua una soluzione piuttosto inefficiente. Base 64 codificate venti binari per essere, in media, 37 più grande (numero di byte) di dati binari grezzi, non codificati. Inoltre, il parser dall'altro lato deve conoscere la codifica in modo che possa decodificare il payload. Si potrebbe immaginare che se Base 64 codifica è stato parte dello standard SOAP, allora non ci sarebbe un modo standard per indicare questo processori messaggio SOAP. Questo non è il caso, però. Può essere una soluzione, ma è inefficiente e non standard. Abbiamo bisogno di qualcosa che sia più efficiente e standardizzato. SOAP con allegati: Opere ma imperfetto progettazione Una soluzione al problema è quello di utilizzare ciò che è noto come SOAP con allegati. L'idea è di mettere solo i dati binari al di fuori del messaggio SOAP completamente. La figura 1 fornisce una buona visualizzazione di questo. Figura 1. SOAP con allegati Questo è molto simile al modo in cui i file binari può essere collegato a messaggi di posta elettronica. Il messaggio SOAP contiene un riferimento al file binario che viene allegato al messaggio. Questo è tanto più efficiente e standardizzato, ma ha alcuni difetti nel suo design. L'allegato binario non è parte del messaggio SOAP affatto. Il suo simile in un sacco di modi per solo di passaggio un URI per i dati binari e lasciando fino al processore messaggio per recuperare i dati binari effettivi. Esso presenta alcuni problemi reali per le cose come WS-Security. Eppure, questo è ciò che è stato usato per un po ', fino a quando è stata proposta una soluzione migliore: MTOM. MTOM: Il meglio di entrambi i mondi MTOM sta per SOAP Message Optimization Mechanism trasmissione. Esso combina l'efficienza di SOAP con allegati, ma lo fa senza dover rompere i dati binari al di fuori del messaggio SOAP. Come può essere questa la chiave è una tecnologia chiamata XML-binary Optimized Packaging o XOP. XOP permette dati binari di essere inclusi come parte del Infoset XML. In effetti, la Infoset XML diventa un superset del Infoset tradizionale conosciuto come il XOP Infoset. Esso consente per i dati binari da memorizzare al di fuori del documento XML, proprio come in SOAP con allegati. Esso utilizza un XOP speciale: include l'elemento a dire il processore per sostituire il contenuto con i dati binari riferimento, incapsulando così la logica di memorizzazione discreta e recupero dei dati binari. Questa logica diventa inerente al parser XML, e permette al parser SOAP per trattare i dati binari, come parte del documento XML, senza alcuna logica speciale di recupero. Analogamente permette per un server SOAP per creare un messaggio SOAP in modo uniforme, senza logica speciale per spezzare i dati binari dal messaggio SOAP. MTOM in WSO2 WSAS Weve parlato molto della necessità di MTOM e come dovrebbe funzionare in teoria. Esso non farci un sacco di bene, senza una reale attuazione. theres fortuna un modo semplice per ottenere un grande implementazione MTOM, basta usare WSO2 WSAS. WSO2 WSAS è costruito sulla base di tecnologie vero e provato, inclusi Apache Axis2. Axis2 dà WSO2 WSAS sua attuazione MTOM. Diamo un'occhiata a come sfruttare il potere di esecuzione WSASAxis2s MTOM. Invio di un messaggio MTOM da un servizio Web con il supporto Axiom API MTOM su Axis2 si basa sulle stesse classi utilizzati in tutto Axis2. Esso utilizza Axis2s Object Model (OM). Axis2 supporta sia la Base 64 codifica e MTOM, e rende relativamente semplice per passare tra di loro. Perché Bene per file molto piccoli, in realtà può essere più efficiente di utilizzare Base 64 codifica. Per raggiungere questo passaggio senza soluzione di continuità tra il trasporto ottimizzato e non ottimizzato, Axis2 tratta i dati binari come un nodo di testo XML. L'unica differenza è che è necessario passare a un javax. activation. DataHandler per l'accesso ai dati, come mostrato nel Listato 3. Listato 3. Aggiunta di dati binari con l'API Axiom Nell'esempio del Listato 3, un javax. activation. FileDataSource viene usato per fornire il DataHandler con accesso ai dati binari. È possibile utilizzare qualsiasi classe che implementa l'interfaccia javax. activation. DataSource. Ad esempio, quando si lavora con immagini, il org. apache. axis2.attachments. ImageDataSource può essere utilizzato. Esso implementa l'interfaccia DataSource e può essere più conveniente quando si lavora con le immagini. Così come si fa Axis2, e quindi WSO2 WSAS, sa usare MTOM per ottimizzare i dati binario che è in realtà quello Axis2 farà per impostazione predefinita. È possibile ignorare manualmente questo con l'aggiunta di una sola riga di codice, come mostrato nel Listato 4. Listato 4. Spegnimento MTOM Quella sola riga di codice dirà Axis2 di non ottimizzare, vale a dire non usano MTOM. Così Axis2 userà Base 64 codifica dei dati binari, e sarà davvero un nodo di testo. Altrimenti, MTOM entreranno in, ed un XOP includere verrà utilizzato per ottimizzare il trasporto dei dati binari all'interno del messaggio SOAP. Abilitazione MTOM sul server Naturalmente per ottenere tutto questo meraviglioso, comportamento ottimizzato automaticamente, si ha bisogno di abilitare MTOM. È possibile farlo attraverso il file axis2.xml molto facilmente, come mostrato nel Listato 5. Listato 5. Attivazione MTOM in axis. xml cant ottenere più indolore di quello, giusto Questa è un'impostazione globale, ed è l'impostazione predefinita su WSO2 WSAS. Si può effettivamente attivare MTOM a quattro diversi livelli: globale, gruppo di servizio, il servizio, e il funzionamento. Si utilizza la stessa semantica per ogni livello. È possibile utilizzare la console di gestione per gestire MTOM a ciascuno di questi livelli. Per esempio di questo dare un'occhiata a Figura 2. Figura 2. Gestione MTOM al Service Level Group Qui vediamo MTOM gestito a livello di Gruppo di servizio. Ogni servizio nel gruppo può anche essere gestito individualmente, come mostrato in Figura 3. Figura 3. Gestione MTOM a livello di servizio Naturalmente ogni servizio può avere una o più operazioni. WSAS consente di gestire MTOM a quel livello troppo, come mostrato in Figura 4. Si noti che ad ogni livello, MTOM ha tre possibili valori: vero, falso, e opzionali. Se la proprietà è impostata su true, il servizio invierà un messaggio ottimizzati in caso di necessità, cioè quando è incluso dati binari. Se il valore è impostato su false, allora l'ottimizzazione non verrà mai utilizzato, e Base 64 codifica verrà utilizzata per i dati binari. Se è impostato su optional, poi WSAS ottimizzerà se e solo se la richiesta è venuto in è stato ottimizzato. Il tipo di richiesta indicherà WSAS se deve utilizzare MTOM o meno. Perché abbiamo bisogno di questo tipo di flessibilità Come accennato in precedenza, è spesso vantaggioso utilizzare Base 64 codifica in file di piccole dimensioni. Così si potrebbe decidere che certe operazioni dovrebbero usare MTOM e gli altri non dovrebbero. Oppure si potrebbe rendere opzionale su un'operazione, di programmazione fare un controllo per la dimensione dei dati che vengono inviati, e quindi scegliere di ignorare il MTOM default se il file è di piccole dimensioni. Poi tu sei l'invio di MTOM. Diamo uno sguardo a come facile WSAS rende di inviare un messaggio MTOM da un client di servizi web. Creazione di un client SOAP che invia messaggi MTOM Invio di un messaggio MTOM da un client è semplice come l'invio di un messaggio MTOM da un servizio web. Axis2 fornisce diverse API convenienti. Un esempio è mostrato nel Listato 6. listato di codice 6. client per l'invio del messaggio MTOM Come si può vedere nel Listato 6, la cosa fondamentale da fare è quello di consentire MTOM in opzioni per il client di servizi web. Una volta fatto questo, allora Axis2 ottimizzerà tutti i dati binari si invia al servizio Web utilizzando automaticamente MTOM. Weve visto come inviare messaggi MTOM da un servizio Web e un servizio web, ora consente di guardare come lavorare con i dati che sono stati inviati utilizzando MTOM. Gestione di un MTOM Messaggio in un servizio Web Ora lascia supporre si dispone di un servizio web che accetta dati binari, come parte di un messaggio SOAP da un client. Se il servizio Web è in esecuzione su WSAS, non dovete fare nulla di speciale per essere in grado di gestire i dati binari ottimizzati dai vostri clienti. I vostri clienti possono inviare messaggi SOAP che utilizzano MTOM o Base 64 codifica. E 'tutto senza soluzione di continuità con WSAS. Listato 7 mostra un esempio di ricezione di dati ottimizzati. Listing 7. Web Service SOAP riceve ottimizzato Come abbiamo visto in precedenza, l'Axiom API tratta i dati binari come un nodo di testo. Questo consente a un singolo API per gestire dati ottimizzata e non ottimizzato (codificato base 64). È sufficiente accedere al DataHandler associato al nodo di testo (che contiene i dati binari) e l'uso che per ottenere un InputStream. Una volta ottenuto il InputStream, è possibile leggere tutti i byte ed elaborarli tuttavia è necessario. WSAS rende facile gestire i messaggi SOAP con payload di dati binari ottimizzati. Diamo uno sguardo a come sia facile lavorare con MTOM sui client. Gestione di un MTOM messaggio in un client Theres nessuna magia per gestire una risposta servizio web MTOM. Weve già visto come impostare la richiesta. Nella figura 8 si vede come affrontare con una risposta che contiene i dati binari ottimizzati con MTOM. Anche in questo caso la chiave qui sta usando l'API Axiom. Essa ci permette di trattare i dati binari come un nodo di testo, e quindi utilizzare il DataHandler per ottenere un InputStream ai dati. Anche in questo caso, una volta che hai il InputStream, è possibile elaborare i dati tuttavia è necessario. Weve visto come MTOM offre la perfetta combinazione di SOAP standardizzazione e l'efficienza per il trasporto di dati binari all'interno di un messaggio di servizio web. Weve visto come WSO2 WSAS implementa la specifica MTOM utilizzando Axis2. Weve preso uno sguardo a come installare entrambi i server di servizi web e ai clienti di inviare e ricevere messaggi MTOM ottimizzato. Ora abbiamo tutto quello che serve per l'aggiunta di dati binari ai nostri servizi web utilizzando WSO2 WSAS. Si sta andando a voler scaricare WSO2 WSAS. Leggi le ultime caratteristiche di WSO2 WSAS 2.0. Imparare e interagire con la comunità WSO2 sul WSAS Wiki. Scopri di esporre i propri servizi come servizi Web facilmente con Axis2. Ulteriori informazioni su come Axis2 possibile attivare i vostri disegni SOA nella SOA developerWorks articolo con Axis2. Scopri tutto su Axis interoperabilità con altre implementazioni di servizi Web in questa voce nel blog TSS Interoperability. Immergetevi nel API AXIOM nell'articolo developerWorks Ottenere il massimo dal elaborazione XML con assioma. Leggi tutto su XOP e MTOM in questo blog da Mark Nottingham. L'interoperabilità è il nome del gioco quando si tratta di servizio web, in modo da imparare su come utilizzare MTOM con nell'articolo invio di file in pezzi con MTOM Web Services e 2.0. Circa l'autore Michael Galpin è un architetto a eBay a San Jose, CA. Hes stato lo sviluppo di software dal 1998, e ha conseguito una laurea in matematica presso il California Institute of Technology.

No comments:

Post a Comment