Liferay Portal Client Example

In passato e recentemente ho avuto modo di essere in mezzo a due sistemi, uno dei quali Liferay. Il sistema di mezzo era Mule ESBmediatore tra i due sistemi. Il sistema uno pubblicava una serie di messaggi su di una coda JMS, questi venivano consumati da Mule ESB e dopo una serie di elaborazioni  spediti al sistema due, Liferay per l'appunto.

La versione corrente in quel momento di Liferay disponeva dei soli servizi SOAP (i servizi rest sarebbero venuti in seguito), basati sul vecchio framework Apache Axis 1.4 e in stile rpc/encoded. Il componente SOAP di Mule ESB basato su Apache CXF non è compatibile con il modello rpc/encoded. La soluzione venuta in mente a tutti era quella di realizzare il client (da fare utilizzare in seguito a Mule ESB) per servizi di Liferay partendo dal documento WSDL del servizio con il quale occorreva comunicare, e parecchi di voi sapranno quanto noiosa possa essere quest'attiva.

In Liferay qualcuno di "buon cuore" aveva deciso bene di rendere disponibile il Liferay Portal Client, questo ha fatto la felicità mia in primis e in secundis dimezzato il tempo di sviluppo del flow su Mule ESB. In seguito mi sono reso conto che il Liferay Portal Client è conosciuto da un giro ristretto di addetti ai lavori, anche Liferay stessa non menziona dell'esistenza nella propria documentazione SOAP Web Services, è discusso il solito processo di creazione del client via WSDL.

La scorsa settimana mi son ritrovato in una situazione simile dove il Liferay Portal Client è stato utile in un'attività d'integrazione, dimezzandone il tempo di sviluppo. Ho preso la decisione di pubblicare sul mio repository GitHub un esempio completo d'utilizzo del Liferay Portal Client.  Il progetto d'esempio liferay-portal-client-example, basato su Maven esegue i seguenti task:

  • Esegue la login sul sistema Liferay;
  • Recupera la CompanyId sulla base del virtualhost;
  • Recupera UserId dell'utente su base ScreenNameCompanyId;
  • Recupera il GroupId del site Guest;
  • Esegue l'upload di un documento sulla Document Library del site Guest.

A seguire un estratto dei log che mostrano l'esecuzione del main della classe UploadDocumentOnDL. In ordine d'utilizzo, i servizi consumati del portale Liferay sono:

  • Portal_UserService
  • Portal_CompanyService
  • Portal_GroupService
  • Portlet_DL_DLAppService

I documenti WSDL di tutti i servizi esposti dal portale sono raggiungibili all'indirizzo http://${HOST|FQDN|IP}:${TCP/IP PORT}/api/axis

[00:18:15,816 INFO UploadDocumentOnDL]: Try lookup User Service by End Point: http://will:will@localhost:8080/api/secure/axis/Portal_UserService...
[00:18:16,176 INFO UploadDocumentOnDL]: Try lookup Company Service by End Point: http://will:will@localhost:8080/api/secure/axis/Portal_CompanyService...
[00:18:16,343 INFO UploadDocumentOnDL]: Get UserID...
[00:18:16,378 INFO UploadDocumentOnDL]: UserId for user named will is 11801
[00:18:16,378 INFO UploadDocumentOnDL]: Try lookup Group Service by End Point: http://will:will@localhost:8080/api/secure/axis/Portal_GroupService...
[00:18:16,441 INFO UploadDocumentOnDL]: Found the group Guest (GroupId: 19) to publish the document
[00:18:16,441 INFO UploadDocumentOnDL]: Try lookup DL App Service by End Point: http://will:will@localhost:8080/api/secure/axis/Portlet_DL_DLAppService...
[00:18:16,922 INFO UploadDocumentOnDL]: The file BenchmarkingSugarOnSolaris-SugarCon2009.pdf has been correctly added to liferay
[00:18:16,922 INFO UploadDocumentOnDL]: File Id:13101
[00:18:16,922 INFO UploadDocumentOnDL]: File Size: 735142
[00:18:16,922 INFO UploadDocumentOnDL]: File Version: 1.0

 

Il vantaggio nell'utilizzo del Liferay Portal Client è più che ovvio e speriamo che sempre qualcuno di "buon cuore" faccia lo stesso per i servizi RESTful.

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.

You may also like...