JAX-WS - clienti web

Continuiamo a lavorare sul web service che abbiamo creato nel precedente post. Se lì abbiamo scritto un web service e una applicazione java SE che ne fa da client, qui ci occupiamo di scrivere un paio di client che consumano il nostro servizio da una pagina web. Scriviamo infatti una servlet e una pagina jsp.

Una servlet come client

Creiamo un nuovo progetto di tipo Web Application, che chiamiamo JaxServletClient, accettando le impostazioni di default (nel mio caso uso Apache Tomcat 6).

Creiamo uno stub per il web service che vogliamo consumare: facciamo un click di destra sull'icona dell'applicazione (JaxServletClient), selezioniamo "New" e quindi scegliamo "Web Service Client...", da qui indichiamo il file WSDL del web service, confermiamo, e lasciamo a NetBeans il compito di generare i file necessari.

Vediamo, tra l'altro, che il nostro web service ora appare nella cartelletta "Web Service References", dove possiamo vedere anche l'operazione disponibile (add).

Creiamo ora la servlet. Click di destra sull'icona dell'applicazione, e diciamo che vogliamo una "New" "Servlet...". Chiamiamola AdderServlet e mettiamola del package adderClient, ad esempio.

Specifichiamo che vogliamo che questa servlet venga lanciata quando si esegue l'applicazione. Nelle proprietà nell'applicazione, sezione Run, specifichiamo "/AdderServlet" come "Relative URL" da utilizzare.

Andiamo a vedere il codice di AdderServlet.java, accettiamo il codice proposto da NetBeans, scommentandolo, in processRequest(). Nel body della pagina html generata aggiungiamo l'output generato dalla chiamata al nostro web service. Lasciamo generare il codice a NetBeans, con un "alt"-"insert" e specificando che vogliamo "Call Web Service Operation ..." indichiamo che vogliamo chiamare "add". Facciamo minime variazioni al codice generato e otteniamo questo codice:

protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
try {
...
try { // Call Web Service Operation
jaxtest.TestAdderService service = new jaxtest.TestAdderService();
jaxtest.TestAdder port = service.getTestAdderPort();

int i = 18;
int j = 24;
int result = port.add(i, j);
out.println("Result = " + result);
} catch (Exception ex) {
out.println("Can't call web service: " + ex);
}

out.println("");
out.println("");
} finally {
out.close();
}


Una pagina JSP

Possiamo riciclare gran parte del lavoro fatto per il precedente client, basta infatti andare nella sezione "Web Pager" della nostra applicazione e modificare la pagina indice generata da NetBeans. Nel body della pagina andiamo a far generare il codice per chiamare l'operazione del nostro web service, facciamo qualche minimo cambiamento e otteniamo questo codice:

try {
jaxtest.TestAdderService service = new jaxtest.TestAdderService();
jaxtest.TestAdder port = service.getTestAdderPort();

int i = 8;
int j = 4;
int result = port.add(i, j);
out.println("Result = " + result);
} catch (Exception ex) {
out.println("Exception calling the web service: " + ex);
}

Ci resta da modificare le proprietà nel progetto, sezione run, rimuoviamo la URL che avevamo messo prima per eseguire la servlet, in modo che ora venga caricata index.jsp, e siamo pronti per vedere in azione la nostra pagina.

Nessun commento:

Posta un commento