Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial
  • Lezione 58 di 68
  • livello ninja
Indice lezioni

Web Service - Client

Test del web service e risultato dell'esecuzione sul server
Test del web service e risultato dell'esecuzione sul server
Link copiato negli appunti

Una volta installato il web service sarebbe bene fare una prova per vedere se tutto funziona. L'ideale, visto l'argomento, sarebbe testare il web service attraverso un altro linguaggio di programmazione, proprio per vedere all'opera l'interoperabilità del componente.

Rimaniamo comunque in ambiente java e vediamo un client che effettua la chiamata al web service. Ci sono diversi modi per un client java di accedere al componente. Una, aderisce ancora al modello di programmazione distribuito attraverso la creazione di un proxy (come già facevamo con gli ejb e le interfacce remote).

Noi mostreremo il modo definito DII (Dinamic Invocation Interface), che effettua l'interrogazione del servizio ignorando l'interfaccia java, ma solo utilizzando il WSDL esposto.

Listato 1. Client utilizzato per interrogare un Web Service

public class ClientEchoWS {
  public static void main(String[] args) {
    String messaggio = "";
    try {
      //Creo il canale per effettuare la richiesta
      Call call = (Call) new Service().createCall();
      //Conosciamo l'url dove il servizio risponde
      call.setTargetEndpointAddress(new URL("http://localhost:8080/StatelessSessionBeanWS/EchoWebService"));
      //Definiamo il metodo da chiamare
      call.setOperationName(new QName("EchoWS", "echo"));
      //Chiamiamo il metodo sul web service, passando un parametro
      Object rispostaWS = call.invoke(new Object[]{"Salve a tutti..."});
      //Facciamo l'operazione di cast e mostriamo il messaggio
      messaggio = (String)rispostaWS;
    }catch (MalformedURLException ex) {
      messaggio = "errore: l'url non è esatta";
    }catch (ServiceException ex) {
      messaggio = "errore: la creazione della chiamata è fallita";
    }catch (RemoteException ex) {
      messaggio = "errore: l'invocazione del WS è fallita";
      ex.printStackTrace();
    }finally{
      System.out.println(messaggio);
    }
  }
}

Quello che il client conosce è l'url, il nome del servizio (EchoWS) ed il nome del metodo esposto (echo). Utilizzando le librerie di Apache Axis (classi Call e Service), effettuiamo la chiamata verso il servizio, passando la una stringa. A basso livello, queste verranno tradotte in messaggi SOAP che raggiungono il server.

La risposta del server, sempre in SOAP verrà opportunamente convertita in oggetto concreto (metodo invoke()) e quindi, in questo caso, stampata a video.

Di seguito uno snapshot dell'esecuzione del servizio (lato client e lato server).

Figura 1. Chiamata al web service
Chiamata al web service

I messaggi di warning (in rosso) indicano delle avvertenze relative a librerie assenti (ma non utilizzate).


Ti consigliamo anche