Per creare un Web Services esistono vari modi.
In questo esempio useremo l’annotation @WebService. In particolare avremo un web services con due operazioni:
- public String prova(String msg)
- public Persona getPerson(String codFisc)
Il primo prende in input una stringa e restituisce un’altra stringa.
Il secondo in input sempre una stringa ma restituisce un oggetto di tipo Persona.
Per invocarli useremo il tool SOAPUI.
Tools Usati
- Eclipse Mars 2
- Wildfly 10
- SoapUI
Esempio Creazione e Invocazione Web Services Tramite Annotaion e SoapUI
Creazione Nuovo Dynamic Web Project
Dal menù selezionare File–>New–>Dynamic Web Project
Nel campo “Project Name” mettere il nome del progetto “ProvaWS”
Creazione Web Services
Creare una nuova classe cliccando con tasto destro sul progetto e selezionando dal menù “New–>Class”
Inserire i seguenti valori:
package: com
name: HelloWorld
Aggiungere nella classe il seguente codice:
[java]
package com;package com;
import javax.jws.WebService;
@WebServicepublic class HelloWorld {
public String prova(String msg) { return “HelloWorld”; }
}
[/java]
Aggiungere il progetto al server:
tasto destro sul server. Dal menù selezionare “Add/Remove”
Selezionare il progetto “ProvaWs” e cliccare su Add
Startare il server.
Se tutto è andato a buon fine, il Web Service è in ascolto nell’URL:
http://localhost:8080/ProvaWS/HelloWorld?wsdl
Digitando l’url sul browser si ottiene il wsdl del Web Service
Invocazione tramite SoapUI
Avviare SoapUI. Dal menù selezionare “File–>New SOAP Project”
Inserire i seguenti dati:
Project Name: ProvaWS
Initial WSDL: http://localhost:8080/ProvaWS/HelloWorld?wsdl
SoapUI genererà in automatico una request del nostro servizio “Prova“.
Inserire come valori in input la stringa “ciao” e cliccare sul tasto verde in alto a sinistra. Otterremo la risposta soap sulla destra, ossia la stringa “HelloWorld”
Esempio con Oggetto in Input
Creare una nuova classe chiamata “Persona“.
Dal menù, selezionare New–>Class
Nella classe appena creata, inserire il seguente codice:
[java]
package com;package com;
import java.io.Serializable;
public class Persona implements Serializable{ /
private static final long serialVersionUID = 1L;
String nome; String cognome;
public String getNome() { return nome; }
public void setNome(String nome) { this.nome = nome; }
public String getCognome() { return cognome; }
public void setCognome(String cognome) { this.cognome = cognome; }
}
[/java]
Creare un nuovo metodo nel WS cosi definito:
[java]
public Persona getPerson(String codFisc){
Persona p = new Persona();
p.setCognome(“Rossi”);
p.setNome(“Mario”);
return p;
}
[/java]
Ritornare su SoapUI e aggiornare la definizione del Web Service:
tasto destro sul blocchetto verde (HelloWorldServiceSoapBinding) e selezionare “Update Definition”
Lasciare tutto invariato e premere “OK”
Nella schermata apparirà il nuovo metodo “getPerson“.
Valorizzare la request con il valore 37 e cliccare sul tasto di invia. Si otterrà la response contenente una istanza di persona con nome “Mario” e cognome “Rossi”