G.Morreale
Introduzione:
Le specifiche JSR 109 riguardanti i webservice su Java EE, definiscono due metodi per implementare un webservice:
- Attraverso una classe Java
- Attraverso l'uso delle tecnologia EJB
L'Esempio
Supponiamo di voler realizzare un webservice in grado di sommare due numeri interi.
Il metodo java in questione a prescindere dal webservice è il seguente:
public int sommaNumeri(int a, int b)
{
return a + b;
}
Implementazione Esempio attraverso una classe Java
nota:
Ovviamente la classe Java in questione deve essere distribuita su un apposito container (glassfish, jboss etc.)
Codice della classe a prescindere dal webservice:
public class MyWebService
{
public int sommaNumeri(int a, int b){return a + b;}
}
Trasformazione delle classe in webservice:
import javax.jws.WebMethod;
import javax.jws.WebService;
@WebService
public class WS
{
@WebMethod
public int sommaNumeri(int a, int b){
return a + b;
}
}
Come è possible notare, banalmente sono state aggiunte due annotation, una per indicare che la classe implementa un webservice(@WebService) l'altra per indicare che il metodo in questione è un operazione che il webservice mette a disposizione(@WebMethod). Ovviamente sono state aggiunte anche le apposite import.
Implementazione Esempio attraverso uno Stateless Bean
Codice del session bean a prescindere dal webservice:
L'interfaccia
import javax.ejb.Local;
@Localpublic interface WsLocal {
public int sommaNumeri(int a, int b);L'implementazione
}
import javax.ejb.Stateless;
@Stateless
public class WsBean implements WsLocal
{
public int sommaNumeri(int a, int b)
{
return a + b;
}
}
Aggiunta disponibilità sotto forma di webservice
import javax.ejb.Stateless;
import javax.jws.WebMethod;
import javax.jws.WebService;
@Stateless
@WebService
public class WsBean implements WsLocal
{
@WebMethod
public int sommaNumeri(int a, int b)
{
return a + b;
}
Anche in questo con un paio di annotation la componente software, in questo caso il session bean, è stato reso disponibile anche come webservice.
Un pò di chiarezza su nomi e versioni
Sul web si trovano diverse sigle e api:
- JAX-RPC: E' la specifica riguardante le api java per la Remote procedure call(RPC) basata su xml, la sua prima release è stata rilasciata nel giugno 2002.
- JAXB(Java API for XML binding): E' una specifica rilasciata inizialmente nell'ottobre 2003 per mettere a disposizione dei tool e delle api per il mapping classi java <-> documenti xml. Ovviamente è utilizzata e fà parte delle api per i webservice.
- WSTI(Web services interoperability technology):E' parte dello stack webservice in grado di garantire alcune importanti features riguardanti l'interoperabiltà tra webservice(sicurezza,transazioni etc)
- JAX-WS: E' la nuova versione delle JAX-RPC, infatti con la versione 2.0 si cambia nome (JAX-RPC => JAX-WS) e vengono aggiunte una serie di nuove feature.
Differenze tra JAX-RPC 1.1 e JAX-WS
JAX-RPC è stata rilasciata come ver 1.0, la versione successiva è stata la 1.1, la 2.0 è stata rinominata in JAX-WS 2.0, e al momento è stata rilasciata la versione 2.1
JAXB attualmente è alla versione 2.1 (https://jaxb.dev.java.net/ )
Conclusione
Negli esempi si mostra come con il semplice uso delle annotation si riesce a creare data una classe java o uno stateless bean un interfaccia webservice per rendere disponibili le funzionalità di un metodo attraverso la tecnologia in questione
3 comments:
Lascia un tuo feedback sull'annuncio.. ti è tornato utile, gli argomenti sono spiegati bene?
Let'see
Ciao, grazie per il posto molto chiaro.
Come faccio a richiamare il webservice? Ti sarei grato se potessi indicare anche questo aspetto
Post a Comment