Mule Studio: JDBC Transport

Mule Studio IDEMule Studio[1] è un sistema integrato utilizzato per lo sviluppo, il debug e la distribuzione di applicazioni su Mule ESB[2] (Enterprise Service Bus). Per semplificare la creazione di applicazioni, Mule Studio fornisce agli sviluppatori una serie di strumenti che in unione all’ambiente visuale consentono di costruire velocemente applicazioni anche complesse.

Da qualche settimana ho iniziato a lavorare con Mule ESB Enterprise Edition, utilizzando Mule Studio per la realizzazione dei Flow[3], questi ultimi il più delle volte abbastanza complessi. Ho incontrato diversi odiosi problemi, alcuni dovuti a bug di Mule Studio (by-passati tramite workaround), diversi altri a causa delle differenze tra Mule ESB Community Edition e Mule ESB Enterprise Edition. L’attuale versione disponibile di Mule Studio è la Community Edition, dotata del runtime di Mule ESB Community Edition versione 3.2.1.

Il runtime di Mule ESB all’interno di Mule Studio consente di eseguire le applicazioni in fase di sviluppo/test oltre a permettere agevolmente il debug delle applicazioni stesse. Dal momento in cui decidiamo o comunque necessitiamo d’utilizzare qualche caratteristica di Mule ESB disponibile solamente nell’edizione Enterprise, dobbiamo mettere in conto che potremmo avere qualche problema nell’esecuzione dell’applicazione dall’ambiente Mule Studio.

Nella realizzazione di un Flow, ho dovuto fare i conti con le differenze tra l’edizione CE (Community Edition) e EE (Enterprise Edition) di Mule ESB[4], in particolare con una funzionalità specifica del JDBC Transport[5]. Ricordo che il JDBC Transport consente l’invio e ricezione di messaggi da e verso un database utilizzando il protocollo JDBC. L’uso più comune include l’esecuzione di operazioni di tipo CRUD, oltre la possibilità di chiamare stored procedure. La funzionalità cui facevo riferimento in precedenza è la seguente:

  • Outbound Stored Procedure Support: Consente l’invocazione di stored procedure (procedure o funzioni) sugli endpoint in uscita (outbound). Supporta parametri d’input (IN) e parametri output (OUT), questi ultimi sono però supportati solo dall’edizione EE di Mule ESB.


Un Flow contenente quindi una chiamata a una stored procedure con uno o più parametro/i di output non funzionerebbe in modo corretto se eseguito all’interno di Mule Studio, il motivo è proprio nel runtime di Mule ESB, che ricordo essere l’edizione CE; la stored procedure sarebbe eseguita ma senza la possibilità di leggere i valori dei parametri di output. Durante l’esecuzione della chiamata alla stored procedure (che utilizza parametri di output) sarete avvisati da un WARNING al quanto indecifrabile mostrato sulla console di Mule Studio (vedi Riquadro 1).

Riquadro 1 – Warning OUT Param

I valori restituiti dalle chiamate a stored procedure o function da parte di un JDBC outbound endpoint, sono resi disponibili su di una mappa (java.util.HashMap), quest’ultima è il payload del MuleMessage[6] e restituita al chiamante o al successivo endpoint secondo la configurazione. Nel Riquadro 3 è riportata una parte di Flow che mostra in evidenza il parametro di OUT (sulla chiamata alla stored procedure) e come aggiungere il valore del parametro stesso come proprietà del messaggio (MuleMessage), da notare inoltre il controllo eseguito sul tipo di oggetto del payload. Quest’ultimo controllo evita che Mule ESB lanci l’eccezione (del tipo org.mule.api.expression.RequiredValueException) nel caso in cui si faccia riferimento in qualche punto del Flow alla proprietà ID_XML del messaggio (vedi Riquadro 2).

Riquadro 2 – Eccezione sul valore null dell’OUT Param.

 

Riquadro 3 – Esempio di Outbound Stored Procedure

L’utilizzo di particolari caratteristiche di alcuni elementi disponibili nella sola edizione EE di Mule ESB nella realizzazione di Flow, come abbiamo avuto modo di vedere, può causare qualche piccolo inconveniente nell’esecuzione del Flow stesso all’interno di Mule Studio.

A conclusione di questo breve post, consiglio quindi, di consultare la documentazione dei componenti richiesti dal Flow che intendete realizzare al fine di verificare le differenti caratteristiche tra le due edizioni di Mule ESB.

Per coloro che per la prima volta si avvicinano al “Mulo” ma che comunque hanno esperienza di Enterprise Application Integration (EAI) maturata con altri prodotti, possono consigliare due letture, entrambe danno un’ottima visione globale di Mule ESB.

  • ESB: The Mule Solution redatto da FlossLab (vedi la sezione Risorse)
  • Mule 3: Simplifying SOA (Refcardz)
Una buona notizia che ho ricevuto nei giorni scorsi è la disponibilità a breve dell’edizione Enterprise di Mule Studio.

Riferimenti

[1] MuleSoft, Inc. – Mule Studio User’s Guide

[2] MuleSoft, Inc. – Mule 3 User Guide

[3] MuleSoft, Inc. – Using Flows for Service Orchestration

[4] MuleSoft, Inc. – The differences between Mule ESB Community and Mule ESB Enterprise

[5] MuleSoft, Inc. – JDBC Transport Reference

[6] MuleSoft, Inc. – Mule Messaging Styles

Risorse

Antonio Ariu, DinoManca (2011) – ESB: The Mule Solution

Gregor Hohpe – Patterns and Best Practices for Enterprise Integration

John D’Emic – Mule 3: Simplifying SOA (Refcardz)

Related articles

Antonio Musarra

I began my journey into the world of computing from an Olivetti M24 PC (http://it.wikipedia.org/wiki/Olivetti_M24) bought by my father for his work. Day after day, quickly taking control until … Now doing business consulting for projects in the enterprise application development using web-oriented technologies such as J2EE, Web Services, ESB, TIBCO, PHP.

Potrebbero interessarti anche...