Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Creazione del primo Web service

Guida passo passo alla creazione di un Web service con l'Enterprise Service Bus Mule. Dall'aggiunta del connettore HTTP a quella delle componenti fino all'implementazione in Java e alla costruzione del flow principale.
Guida passo passo alla creazione di un Web service con l'Enterprise Service Bus Mule. Dall'aggiunta del connettore HTTP a quella delle componenti fino all'implementazione in Java e alla costruzione del flow principale.
Link copiato negli appunti

In questo capitolo verrà descritta la procedura per creare un Web service, a questo scopo apriamo il tab "Connectors" a destra del deck e trasportiamo sul deck il connettore HTTP:

Figura 1. Aggiungiamo il connettore HTTP

Schermata di Anypoint Studio

In realtà Mule ha creato anche un flow associato che contiene il connector HTTP (l'entry-point), esso si chiama MyFirstMuleExampleFlow1, per rinominarlo clicchiamo sul tab colorato che presenta la dicitura "flow:..". Inseriamo come nome web_service_calcolo_cliente e procediamo.

Cliccando sul connector HTTP vengono visualizzati in un pannello in basso una serie di informazioni tra cui "Exchange Pattern" (one-way o request-response come nel nostro caso). La sezione rimanente riguarda l'invocazione del flow; specifichiamo quindi l'host, la porta e il path da aggiungere per attivare il flow digitando localhost:8081/soap .

Ora il componente HTTP risulta sdoppiato in alto e in basso, ciò è dovuto al fatto che l'exchange pattern è di tipo request/response quindi esistono due fasi da prevedere; a tal proposito basterà osservare la prossima immagine relativa all'aggiunta del componente CXF che ci permetterà di definire un JAX-WS /Web service SOAP:

Figura 2. Aggiunta del componente CXF

Aggiunta del componente CXF

Ora creiamo una interfaccia Java del Web service:

package com.myws;
 import javax.jws.WebService;
 @WebService
  public interface EntryPointWsInterface {
  public String checkCodeNumber(String code);
 }

e la corrispondente implementazione:

package com.myws;
public class EntryPointImpl implements EntryPointWsInterface {
 @Override
  public String checkCodeNumber(String codiceCliente) {
  System.out.println("++++ entrato nel metodo checkCodeNumber del WS ");
  System.out.println("ricevuto codice cliente :" + codiceCliente);
  // elaboro code
  StringBuffer sb = new StringBuffer();
  sb.append("{\"nome\":\"Giuseppe\",");
  sb.append("\"cognome\": \"Astarita\",");
  sb.append("\"codiceIban\": \"ACVXFXXFDCHS564243\"}");
  return sb.toString();
  }
}

Il Web service ha un metodo che riceve il codice cliente, effettua una elaborazione (qui non presente perché considerato come classe Mock) e restituisce un messaggio SOAP (cablato per semplicità) di questo tipo:

{"nome":"giuseppe",
  "cognome": "astarita",
"codiceIban": "HGFSHGASCCX243234"}

Per convenienza scriviamolo in un file, ci servirà successivamente. Torniamo quindi al flow e specifichiamo l'interfaccia al nostro Web service per il componente CXF:

Figura 3. Aggiunta dell'interfaccia al Web service

Aggiunta dell'interfaccia al Web service

Da notare che dall'elenco "Operation" abbiamo specificato come tipologia "JAX-WS service". Inseriamo ora un componente Java che rappresenti l'implementazione del Web service aggiungendo le informazioni per la classe che implementa il Web service:

Figura 4. Informazioni del Web service

Informazioni del Web service

Ora tasto destro del mouse sul nostro progetto e selezioniamo "Run As/ Mule Application"; se tutto è stato fatto correttamente dovremo poter raggiungere il WSDL del nostro Seb service all'URL localhost:8081/soap?wsdl.

Ora passiamo alla costruzione del flow principale che prevedrà un entry-point rappresentato dal componente HTTP; sempre sulla porta "8081" (ma possiamo sceglierne una diversa) ci dovremmo visualizzare una richiesta simile alla seguente:

http://localhost:8081/startMuleExample?codiceCliente=XCCFDTSR4433216TRF

Creiamo il flow "main_flow" e aggiungiamo il componente HTTP e un Logger (basterà inserire il nome logger nel filtro sopra i tab "name" per trovarlo):

Figura 5. Il main_flow

Informazioni del Web service

Il contenuto del campo "Message" è:

param: #[message.inboundProperties['codiceCliente']

Si tratta di codice in Mule Expression un linguaggio di scripting che Mule mette a disposizione per le diverse operazioni, nel nostro caso stiamo accedendo alla variabile codiceCliente passata tramite l'url rewriting per stamparne il valore su console.

Nel prossimo articolo proseguiremo lo sviluppo della nostra applicazione di esempio.

Ti consigliamo anche