JAX-WS: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
RedBot (discussione | contributi)
m r2.5.2) (Bot: Modifico: de:Java API for XML Web Services
m ortografia, - spazi inutili
Riga 1:
'''JAX-WS''' ('''Java API for XML Web Services''') è un insieme di procedure ([[Application programming interface|API]]) del linguaggio di programmazione [[Java (linguaggio)|Java]] dedicate allo sviluppo di [[Web service|servizi web]]. L'insieme fa parte della piattaforma [[Java EE]]. Come altre API della Java EE, JAX-WS usa [[Annotazione (Java)|annotazioni]], introdotte nella Java SE 5, per semplificare lo sviluppo e implementazioni di client e terminali di servizi web. JAX-WS fa parte del kit di sviluppo Java per web services ([[Java Web Service Development Pack]] – JWSDP) e include [[Java Architecture for XML Binding]] (JAXB) e [[SOAP]].
Uno dei grandi vantaggi di questa implementazione è quella di poter riutilizzare gran parte delle funzionalità, senza toccare server enterpise come il progetto Glassfish.
 
 
==Descrizione==
JAX-WS è un nuovo modello di programmazione che semplifica lo sviluppo delle applicazioni attraverso il supporto di uno standard, modello ''annotation-based'', per sviluppare Web Service application e client. Le specifiche di JAX-WS si allineano strategicamente con la tendenza attuale del settore verso un modello di messaggistica più ''document-centric'' e sostituisce il modello di chiamata di procedura remota (''object-centric'' model) come definito da JAX-RPC.
 
Con un servizio document-centric, la logica di fatto viene tenuta separata dal contenuto del documento. Il servizio riceve un documento [[XML]], che contiene solo dati. I metodi specifici non vengono richiamati, ma il web service Web applica la sua logica di business al documento, il cui contenuto determina il flusso di lavoro di elaborazione. Il web service di un'agenzia di viaggi è un buon esempio di servizio document-centric. Il servizio riceve una richiesta: un documento [[XML]] che contiene i dettagli dell'itinerario di viaggio che si desidera effettuare (date, luoghi da visitare, alloggio preferito, e così via), il servizio elabora la richiesta in base al contenuto del documento.
JAX-WS è il modello di programmazione strategica per lo sviluppo di servizi Web. L'implementazione dello standard di programmazione della JAX-WS fornisce importanti miglioramenti come: migliore indipendenza della piattaforma per le applicazioni [[Java (linguaggio)|Java]], [[Annotazione (Java)|annotazioni]], richiamare i servizi Web in modo asincrono, client dinamici e statici, Supporto per il Message Transmission Optimized Mechanism (MTOM, metodo di trasmissione di dati binari da e verso web service), il supporto per SOAP.
 
Il progetto fornisce il nucleo del progetto Metro (stack di web service di alto rendimento, espandibile, facile da usare, che raccoglie le funzionalità che racchiudono tutte le esigenze per la creazione di servizi web), all'interno della comunità GlassFish.
Riga 16:
Sebbene da un lato questo progetto ricevesse una spinta in avanti nello sviluppo, dall'altro vi furono forti elementi di impedimento: i vari produttori e soggetti, che partecipavano allo sviluppo di componenti e implementazioni per web service, hanno ostacolato questo processo impedendo agli organismi preposti nella definizione degli standard e specifiche di rimanere al passo.
Questo portò alla creazione di specifiche e implementazioni proprietarie, contrarie e contraddittorie agli obiettivi iniziali della realizzazione di web services.
Nel 2003 i vari produttori, ormai consapevoli di come fosse privo di senso avere web services scritti in linguaggi diversi, si sono riuniti per cercare una soluzione a questo problema. Nasce così la WS-I Organization ([[Web Services Interoperability|Web Services Interoperability Organization]]), volta come dice il nome ad assicurare l'interoperabilità dei servizi web. Nel giro di poco tempo tutti i più importanti protagonisti del settore aderirono, ai fini di creare un nuovo standard che garantisse i principi orignarioriginari dei web services.
Il consorzio operò alla ricerca e selezione del sottoinsieme minimo di standard e specfiche comuni a tutte le implementazioni, che furono poi raggruppati e raccolti in profili a seconda degli obiettivi che si volevano raggiungere, opera tuttora in corso. In ambito WS-I, Sun ha rilasciato recentemente una nuova implementazione chiamata WSIT, che consiste nel Java API for XML Web Services.
 
==Differenze tra JAX-WS e JAX-RPC==
Anche se, le radici di JAX-WS vengono da JAX-RPC, il primo è un componente completamente diverso da quest'ultimo. Una delle differenze principali tra i due è il modello di programmazione: un servizio web basato su JAX-WS utilizza annotazioni (ad esempio ''@WebService'') per dichiarare endpoint di servizi web, mentre JAX-RPC usa la procedura di [[Remote Method Invocation|Invocazione remota dei metodi (RMI)]]. JAX-WS ha il supporto per l'invio di messaggi XML su HTTP. L'uso delle annotazioni evita la necessità di deployment descriptor. Inoltre il JAX-WS presenta altre funzionalità aggiuntive come callback asincroni. Sebbene vi siano numerose differenze, JAX-WS e JAX-RPC possono coesistere senza problemi.
 
==Esempio==
Riga 120:
* @WebMethod Posta sopra la firma del metodo, dice all'interprete Java che si intende pubblicare questo metodo come un Web Service. Il corrispettivo metodo dovrà essere dichiarato “public” e dovrà restituire qualcosa (nel nostro caso restituisce un double). Anche questa ha alcuni attributi come:
** action: definisce l'azione per l'operazione. ( = al nome del metodo)
** exclude: specifica se il metodo va escluso dalla pubblicazione del Web Service. (es. ”false”) (Booleano)
** operationName: specifica il nome di wsdl: operation per il metodo (nome del metodo)
* @SOAPBinding Specifica la mappatura del Web Service nel protocollo di messaggi [[SOAP]]. In particolare si vede nel costrutto tra parentesi lo stile dei messaggi scelto. In caso i metodi del Web Service utilizzino tipi semplici come String o int è possibile utilizzare l'annotazione *“@SOAPBinding(style=Style.RPC)” come nel nostro esempio.
 
==Wsgen==
Riga 131:
 
==JAX-WS handlers==
Gli handler (gestori) JAX-WS sono intercettori che possono essere collegati all'ambiente di esecuzione JAX-WS per fare ulteriori elaborazioni dei messaggi in entrata e in uscita. Essi sono indipendenti dal codice di livello di applicazione e in grado di fornire funzionalità di basso livello di elaborazione dei messaggi.
JAX-WS specifica definisce due tipi gestore di base: I gestori di logica e I gestori di protocollo.
I primi sono in grado di elaborare il payload del messaggio e le proprietà di memorizzazione nel contesto del messaggio.