Ciao Developer, in questo articolo ti voglio spiegare tramite un esempio, come creare e invocare un servizio SOAP con Mule.
Come creare un servizio Soap
Per creare qualsiasi servizio SOAP abbiamo bisogno di artefatti WSDL come WSDL e i suoi XSD.
Come POC ho creato un semplice WSDL con quattro semplici metodi di calcolo (somma, sottrazione, divisione e moltiplicazione).
Per prima cosa dobbiamo creare il nostro progetto e direttamente da wizard, diamo in input a Studio il WSDL, come facciamo per le REST API.
Studio, mediante il plugin SOAP, creerà per noi il SOAP Router e N flow quanti sono i metodi che necessitano di implementazione (nel nostro caso sono quattro) :

Otterremo il risultato atteso, ovvero i vari flussi per ogni metodo:

Ora non resta che implementare ogni singolo metodo utilizzando le componenti che già sappiamo usare.
Prendiamo come esempio l’implementazione del metodo “somma”:

Si vede chiaramente la costruzione del soap envelop. Costruendo l’oggetto desiderato in output dal servizio in formato XML.
A questo punto, mediante Soap UI (trovi il progetto nel codice di esempio) proviamo a usare il servizio. Il servizio è in ascolto sulla URL:
http://localhost:8081/CalcService/CalcServicePort
// Download WSDL: http://localhost:8081/CalcService/CalcServicePort?wsdl
Alcuni esempi di chiamata:


Nel caso del metodo “divisione” ho implementato di proposito un Soap Fault, considerando il caso dove il parametro b è uguale a 0. In questo modo avete a disposizione anche un esempio di come si genera questo tipo di risposta.
Come invocare un servizio Soap
Prima di tutto, mediante la palette di Mule, dobbiamo aggiungere il connettore “Web Service Consumer”.
Questo connettore ci permette di interagire con il servizio Soap.
La configurazione è molto semplice, basta selezionare il file WSDL e indicare l’endpoint (address) del servizio:

Come endpoint, per semplicità, ho impostato il servizio in esecuzione nel runtime locale del progetto.
Ora dobbiamo implementare una richiesta di consumo:

Per generare la chiamata ho creato un nuovo http listener che resta in ascolto nella porta 8082.
DataWeave ci viene in aiuto anche in questo caso (come sempre :D).
Nel progetto Soap UI trovi anche un esempio di chiamata a questo endpoint:

Conclusione
Sono felice di aver condiviso con te come creare e invocare un servizio SOAP con Mule.
Di per se, come in altri contesti, Mule ci aiuta molto e ci permette di velocizzare alcuni passaggi che con altre tecnologie sarebbero più macchinose. Ovviamente questo è il mio parere sulla base della mia esperienza.
Codice di esempio: https://Bonny@bitbucket.org/Bonny/soap-example.git
Leggi anche: Come leggere e scrivere su file in Mule