SlideShare une entreprise Scribd logo
1  sur  5
Télécharger pour lire hors ligne
Antonio	
  Musarra's	
  Blog	
  
The	
  ideal	
  solution	
  for	
  a	
  problem	
                                                          Blog:	
  http://musarra.wordpress.com	
  
                                                                                                           Mail:	
  antonio.musarra@gmail.com	
  
	
  

SugarCRM	
  Web	
  Services:	
  Build	
  a	
  
Apache	
  CXF	
  Client	
  
          SugarCRM[1]	
   espone	
   all’esterno	
   il	
   core	
   delle	
   proprie	
   funzionalità	
  
pubblicandole	
   come	
  Web	
   Services,	
   quindi	
   niente	
   di	
   più	
   semplice	
   che	
   creare	
   un	
  
client	
   Java,	
   C#,	
   C++,	
   PHP	
   e	
   chi	
   più	
   ne	
   ha	
   più	
   ne	
   metta	
   per	
  interagire	
  con	
   essi;	
   non	
  
sempre	
  però	
  la	
  questione	
  è	
  così	
  semplice	
  !!!	
  
	
  
          Chi	
   lavora	
   pesantemente	
   con	
   la	
   tecnologia	
   dei	
   Web	
   Services	
   è	
   cosciente	
   del	
  
fatto	
  che	
  gli	
  standard	
  esistenti	
  lasciano	
  un	
  notevole	
  grado	
  di	
  libertà	
  tale	
  per	
  cui	
  
possono	
   essere	
   interpretati	
   diversamente	
   dalle	
   varie	
   case	
   produttrici	
   di	
  
software,	
  con	
  la	
  conseguenza	
  di	
  non	
  garantire	
  in	
  alcuni	
  casi	
  l’interoperabilità.	
  	
  
	
  
          Potrebbe	
  cioè	
  essere	
  impossibile,	
  ad	
  esempio,	
  accedere	
  ad	
  un	
  web	
  service	
  
creato	
   con	
   Axis	
   (Java)	
   utilizzando	
  .NET	
  (Microsoft).	
   	
  E’	
   stato	
   creato	
   un	
   comitato	
  
denominato	
  WS-­‐I	
   (Web	
   Services	
  Interoperability)	
  con	
   l’obiettivo	
   di	
   risolvere	
   i	
  
problemi	
  legati	
  all’interoperabilità.	
  
	
  
          SugarCRM	
   dichiara	
   di	
   essere	
   compliant	
  WS-­‐I	
   1.0	
   Basic	
   Profile[2]	
  ,	
   ciò	
  
significa	
   che	
   dovremmo	
   essere	
   	
  in	
   grado	
   d’interagire	
   con	
   i	
   servizi	
   web	
   di	
  
SugarCRM	
  attraverso	
  client	
  generati	
  (a	
  partire	
  dal	
  documento	
  WSDL)	
  con	
  Apache	
  
Axis,	
  JAX-­‐WS,	
  Apache	
  CXF,	
  etc…	
  
          	
  
          Prima	
   di	
   andar	
   sul	
   pratico,	
   desidero	
   fare	
   un	
   breve	
   refresh	
   su	
  style	
  
binding	
  e	
  use.	
   	
  Il	
   documento	
   WSDL[3]	
   descrive	
   il	
   servizio	
   web,	
   in	
   particolare,	
  
l’elemento	
  binding	
  costituisce	
   la	
   specifica	
   concreta	
   di	
   protocollo	
   (in	
   particolare	
   il	
  
protocollo	
   SOAP)	
   e	
   formato	
   dati,	
   relativo	
   a	
   un	
   elemento	
   portType.	
  Il	
  SOAP	
  
binding,	
  che	
  definisce	
  il	
  modello	
  di	
  messaging,	
  che	
  può	
  essere:	
  
          	
  
       • Remote	
  Procedure	
  Call	
  (RPC)	
  Style;	
  
       • Document	
  Style.	
  
	
  
          La	
   regola	
   di	
   codifica	
   dei	
   dati	
   specificata	
   dall’attributo	
  use,	
  può	
  
essere,	
  encoded	
  o	
  literal.	
  Sintetizzando,	
  esistono	
  quattro	
  diverse	
  combinazioni	
  di	
  
stile	
   e	
   codifica,	
   sulle	
   quali	
   entrambe	
   le	
   parti	
   coinvolte	
   devono	
   convenire	
   prima	
  
d’iniziare	
   lo	
   scambio	
   d’informazioni:	
   per	
   esempio,	
   un	
   server	
   che	
   supporta	
  
soltanto	
   la	
   codifica	
   letterale	
   per	
   lo	
   scambio	
   dei	
   documenti	
   non	
   sarà	
   mai	
   in	
   grado	
  
di	
  comunicare	
  con	
  un	
  client	
  che	
  utilizza	
  il	
  modello	
  RPC	
  con	
  la	
  codifica	
  encoded.	
  	
  
          L’elenco	
  a	
  seguire	
  mostra	
  un	
  riepilogo	
  delle	
  possibili	
  combinazioni:	
  
       • Document/Literal;	
  
       • Document/Encoded;	
  
       • RPC/Literal;	
  
       • RPC/Encoded.	
  


17/08/12	
                                                                                                                                             1	
  

       This	
  document	
  is	
  issued	
  with	
  license	
  Creative	
  Commons	
  Attribution-­‐NonCommercial-­‐ShareAlike	
  
                                                                                                                                                          	
  
	
  
Antonio	
  Musarra's	
  Blog	
  
The	
  ideal	
  solution	
  for	
  a	
  problem	
                                                          Blog:	
  http://musarra.wordpress.com	
  
                                                                                                           Mail:	
  antonio.musarra@gmail.com	
  
	
  
        Nelle	
   successive	
   figure	
   ho	
   evidenziato	
   style	
   e	
   use	
   nelle	
   due	
   combinazioni	
  
RPC.	
   L’estratto	
   mostrato	
   fa	
   riferimento	
   al	
   documento	
   WSDL	
   di	
   SugarCRM	
  
(Community	
  Edition	
  versione	
  6.4).	
  
	
  




                                                                                                                                                         	
  
Figura	
  1	
  WSDL	
  Web	
  Services	
  di	
  SugarCRM	
  RPC/Encoded	
  

	
  




                                                                                                                                                         	
  
Figura	
  2	
  WSDL	
  Web	
  Services	
  di	
  SugarCRM	
  RPC/Literal	
  

	
  
Dalla	
   documentazione	
   di	
   SugarCRM	
   risultano	
   supportate	
   le	
   due	
   combinazioni	
  
RPC,	
  quella	
  di	
  default	
  è	
  RPC/Encoded.	
  Le	
  URL	
  per	
  accedere	
  al	
  documento	
  WSDL	
  
per	
  le	
  due	
  combinazioni	
  sono:	
  
	
  
     • RPC/Encoded:	
  http://<hostname>:<port>/service/v2/soap.php?wsdl	
  
     • RPC/Literal:	
  http://<hostname>:<port>/service/v2/soap.php?wsdl&sty
              le=rpc&use=literal	
  
	
  


Build	
  del	
  Client	
  
         In	
   precedenti	
   articoli	
   pubblicati	
   su	
   questo	
   blog	
   sono	
   stati	
   affrontati	
   temi	
  
circa	
   lo	
   sviluppo	
   di	
   client	
   per	
   i	
   servizi	
   web	
   di	
   SugarCRM,	
   sia	
   utilizzando	
   il	
  
linguaggio	
   Java	
   (tramite	
   il	
   framework	
   Apache	
   Axis	
   1.4)	
   sia	
   utilizzando	
   .NET	
  
Framework.	
  In	
  questo	
  caso	
  creeremo	
  il	
  client	
  utilizzando	
  Apache	
  CXF[4].	
  	
  
         	
  
         I	
  requisiti	
  minimi	
  per	
  portar	
  a	
  casa	
  il	
  risultato	
  sono:	
  
         	
  
     • Installazione	
  e	
  Configurazione	
  del	
  framework	
  Apache	
  CXF	
  2.2.x	
  (o	
  2.5.x)	
  
     • Ant	
  1.7	
  
     • JDK	
  1.6	
  
	
  
17/08/12	
                                                                                                                      2	
  

       This	
  document	
  is	
  issued	
  with	
  license	
  Creative	
  Commons	
  Attribution-­‐NonCommercial-­‐ShareAlike	
  
                                                                                                                                                       	
  
	
  
Antonio	
  Musarra's	
  Blog	
  
The	
  ideal	
  solution	
  for	
  a	
  problem	
                                                          Blog:	
  http://musarra.wordpress.com	
  
                                                                                                           Mail:	
  antonio.musarra@gmail.com	
  
	
  
        Qualora	
  fosse	
  necessario	
  consiglio	
  di	
  fare	
  riferimento	
  alla	
  documentazione	
  
ufficiale	
  di	
  ogni	
  componente	
  indicato	
  nel	
  precedente	
  elenco.	
  
	
  
        Costruiremo	
   il	
   client	
   a	
   partire	
   dal	
   documento	
   WSDL	
   di	
   SugarCRM,	
   in	
  
particolare	
  faremo	
  riferimento	
  alla	
  versione	
  4	
  delle	
  API	
  di	
  SugarCRM	
  Community	
  
Edition	
   6.4.	
   Nella	
   successiva	
   tabella	
   sono	
   indicate	
   le	
   versioni	
   delle	
   API	
   e	
   le	
  
relative	
  versioni	
  di	
  SugarCRM.	
  
        	
  
API	
  Version	
             SugarCRM	
  Version	
  
V2	
                                        5.5.0	
  
V3	
                                        6.1.0	
  
V3_1	
                                      6.1.0	
  
V4	
                                        6.2	
  e	
  successive	
  
Tabella	
  1.	
  Versioni	
  delle	
  API	
  
	
  
L’URL	
  di	
  accesso	
  ai	
  servizi	
  rispetta	
  il	
  pattern	
  	
  
             http://<hostname>:<port>/service/vX/soap.php	
  	
  
dove	
  X	
  indica	
  la	
  versione	
  delle	
  API	
  indicata	
  in	
  Tabella	
  1	
  (prima	
  colonna).	
  
        	
  
        Per	
   generare	
   il	
   client	
   utilizzeremo	
   il	
   tool	
  wsdl2java	
  locato	
   in	
  
$CXF_HOME/bin,	
   specificando	
   l’URL	
   del	
   documento	
   WSDL	
   e	
   una	
   serie	
   di	
   altri	
  
parametri.	
   	
  E’	
   utile	
   ricordare	
   che	
   Apache	
   CXF	
   supporta	
   la	
   combinazione	
  
RPC/Literal	
  e	
  non	
  quella	
  di	
  default	
  di	
  SugarCRM	
  RPC/Encoded.	
   Per	
   questo	
   motivo,	
  
l’URL	
  del	
  WSDL	
  da	
  fornire	
  a	
  Apache	
  CXF	
  è	
  il	
  seguente:	
  
        	
  
     • http://<hostname>:<port>/service/v4/soap.php?wsdl&style=rpc&use=li
             teral	
  
	
  
Qualora	
   forniate	
   l’URL	
   non	
   corretta	
   ad	
   Apache	
   CXF	
   in	
   fase	
   di	
   generazione	
   del	
  
client,	
  riceverete	
  il	
  seguente	
  errore:	
  
	
  
WSDLToJava Error: Rpc/encoded wsdls are not supported with CXF
	
  
Il	
  comando	
  per	
  generare	
  il	
  client	
  è	
  il	
  seguente:	
  
	
  
wsdl2java -d /Users/amusarra/SugarCRMCE64v4SOAPLibray 
-client -ant -exsh false -dns true -dex true 
-verbose 
"http://<hostname>:<port>/service/v4/soap.php?wsdl&style=rpc&use=literal"	
  
	
  
        Il	
   tool	
   creerà	
   all’interno	
   della	
   directory	
   specificata	
   dal	
   parametro	
  -­‐d	
  tutti	
   i	
  
sorgenti	
  Java	
  del	
  client	
  +	
  il	
  file	
  build.xml	
  di	
  Ant	
  che	
  potrete	
  utilizzare	
  per	
  fare	
  il	
  
build	
   e	
   test	
   del	
   client.	
   Se	
   non	
   diversamente	
   specificato,	
   il	
   client	
   sarà	
   creato	
  
utilizzando	
  JAX-­‐WS	
  come	
   FrontEnd	
   e	
  JAX-­‐B	
  come	
   DataBinding,	
   il	
   vantaggio	
   di	
  
questa	
  soluzione	
  è	
  rappresentato	
  dal	
  fatto	
  che	
  sarete	
  in	
  grado	
  di	
  eseguire	
  il	
  client	
  
senza	
  la	
  necessità	
  di	
  librerie	
  aggiuntive,	
  basta	
  la	
  sola	
  JDK/JRE.	
  
17/08/12	
                                                                                                                        3	
  

       This	
  document	
  is	
  issued	
  with	
  license	
  Creative	
  Commons	
  Attribution-­‐NonCommercial-­‐ShareAlike	
  
                                                                                                                                                       	
  
	
  
Antonio	
  Musarra's	
  Blog	
  
The	
  ideal	
  solution	
  for	
  a	
  problem	
                                                          Blog:	
  http://musarra.wordpress.com	
  
                                                                                                           Mail:	
  antonio.musarra@gmail.com	
  
	
  
	
  
        Apache	
  CXF,	
  oltre	
  a	
  creare	
  tutte	
  le	
  classi	
  Java	
  a	
  supporto,	
  crea	
  inoltre	
  una	
  
classe	
  di	
  test	
  da	
  completare	
  oltre	
  che	
  a	
  poter	
  eseguire	
  la	
  classe	
  stessa	
  via	
  Ant.	
  Il	
  
nome	
  della	
  classe	
  di	
  test	
  è:	
  
        	
  
     • com.sugarcrm.sugarcrm.SugarsoapPortType_SugarsoapPort_Client.java	
  
	
  
una	
  volta	
  che	
  avrete	
  completato	
  la	
  classe	
  con	
  qualche	
  prova	
  di	
  chiamata	
  a	
  uno	
  o	
  
più	
   metodi	
   esposti	
   dal	
   servizio,	
   potrete	
   verificare	
   il	
   risultato	
   eseguendo	
   il	
  
comando:	
  
	
  
ant SugarsoapPortTypeClient
	
  
ottenendo	
  (come	
  nel	
  mio	
  caso)	
  un	
  risultato	
  del	
  genere:	
  
	
  
SugarsoapPortTypeClient:
[java] SugarCRM Server Info...
[java] Version 6.4.0
[java] Flavor CE [java] Invoking login...
[java] Login Successfully for admin
[java] Your session Id: 98b439d68141cf38fe2441382fb6513b
[java] Invoking getUserId...
[java] Your UserId is: 1
[java] Invoking logout...
BUILD SUCCESSFUL Total time: 3 seconds
	
  
      Ho	
   completato	
   la	
   classe	
   test	
   in	
   modo	
   da	
   eseguire	
   le	
   operazioni	
   di	
  
ServerInfo,	
  Login,	
  GetUserId	
  e	
  Logout.	
  A	
  questo	
  punto	
  il	
  gioco	
  è	
  fatto.	
  Consiglio	
  di	
  
realizzare	
   un	
   bel	
  jar	
  del	
   client	
   appena	
   creato	
   per	
   utilizzarlo	
   ovunque	
   sia	
  
necessario	
  accedere	
  ai	
  dati	
  del	
  CRM	
  di	
  Sugar.	
  


Risorse	
  
Quanto	
   realizzato	
   per	
   la	
   stesura	
   di	
   quest’articolo	
   è	
   stato	
   pubblicato	
   sul	
  
Repository	
  GitHub	
  raggiungibile	
  all’indirizzo:	
  
          https://github.com/amusarra/SugarCRMCE64v4SOAPLibrary	
  
	
  
Il	
  repository	
  contiene:	
  
	
  
        • Il	
  progetto	
  Eclipse	
  chiamato	
  SugarCRMCE64v4SOAPLibray	
  
        • Il	
  documento	
  WSDL	
  (RPC/Literal)	
  del	
  servizio	
  (in	
  resources/wsdl)	
  
        • Il	
  documento	
  XSD	
  del	
  servizio	
  (in	
  resources/xsd)	
  
        • Il	
  Jar	
  SugarCRMCE64v4SOAPLibrary.jar	
  del	
  client	
  (in	
  build)	
  
	
  
	
  
	
  
	
  



17/08/12	
                                                                                                                                             4	
  

       This	
  document	
  is	
  issued	
  with	
  license	
  Creative	
  Commons	
  Attribution-­‐NonCommercial-­‐ShareAlike	
  
                                                                                                                                                          	
  
	
  
Antonio	
  Musarra's	
  Blog	
  
The	
  ideal	
  solution	
  for	
  a	
  problem	
                                                          Blog:	
  http://musarra.wordpress.com	
  
                                                                                                           Mail:	
  antonio.musarra@gmail.com	
  
	
  
Riferimenti	
  
David	
  A.	
  Chappell,	
  T.	
  J.	
  (2002).	
  Java	
  Web	
  Services.	
  O’REILLY.	
  
Antonio	
  Musarra.	
  (4	
  Aprile	
  2011).	
  Costruire	
  un	
  client	
  Java	
  per	
  SugarCRM	
  
Antonio	
  Musarra.	
  (15	
  Novembre	
  2011).	
  Building	
  a	
  Client	
  .NET	
  for	
  SugarCRM	
  
[1]	
  SugarCRM	
  Web	
  Service	
  Overview	
  
[2]	
  Chris	
  Ferris.	
  (1	
  Ottobre	
  2002).	
  First	
  look	
  at	
  the	
  WS-­‐I	
  Basic	
  Profile	
  1.0	
  
[3]	
  Russell	
  Butek.	
  (31	
  Ottobre	
  2003).	
  Which	
  style	
  of	
  WSDL	
  should	
  I	
  use?	
  
[4]	
  The	
  Apache	
  Software	
  Foundation.	
  Apache	
  CXF:	
  An	
  Open-­‐Source	
  Services	
  
Framework	
  
	
  




17/08/12	
                                                                                                                                             5	
  

       This	
  document	
  is	
  issued	
  with	
  license	
  Creative	
  Commons	
  Attribution-­‐NonCommercial-­‐ShareAlike	
  
                                                                                                                                                          	
  
	
  

Contenu connexe

Tendances

Running Kettle Job by API v1.2
Running Kettle Job by API v1.2Running Kettle Job by API v1.2
Running Kettle Job by API v1.2Antonio Musarra
 
Costruire un client Java per SugarCRM
Costruire un client Java per SugarCRMCostruire un client Java per SugarCRM
Costruire un client Java per SugarCRMAntonio Musarra
 
Costruire un client .NET per SugarCRM
Costruire un client .NET per SugarCRMCostruire un client .NET per SugarCRM
Costruire un client .NET per SugarCRMAntonio Musarra
 
J-SugarCRM UserSync TechnicalGuide
J-SugarCRM UserSync TechnicalGuideJ-SugarCRM UserSync TechnicalGuide
J-SugarCRM UserSync TechnicalGuideAntonio Musarra
 
PHP Documentation APIs on the fly
PHP Documentation APIs on the flyPHP Documentation APIs on the fly
PHP Documentation APIs on the flyAntonio Musarra
 
Running Kettle Job by API
Running Kettle Job by APIRunning Kettle Job by API
Running Kettle Job by APIAntonio Musarra
 
Joomla! 1.5: CMS a mani tese verso gli sviluppatori
Joomla! 1.5: CMS a mani tese verso gli sviluppatoriJoomla! 1.5: CMS a mani tese verso gli sviluppatori
Joomla! 1.5: CMS a mani tese verso gli sviluppatoriAlessandro Nadalin
 
Configure Kettle debug session
Configure Kettle debug sessionConfigure Kettle debug session
Configure Kettle debug sessionAntonio Musarra
 
Liferay 7: Come realizzare un client SOAP con Apache CXF in OSGi Style
Liferay 7: Come realizzare un client SOAP con Apache CXF in OSGi StyleLiferay 7: Come realizzare un client SOAP con Apache CXF in OSGi Style
Liferay 7: Come realizzare un client SOAP con Apache CXF in OSGi StyleAntonio Musarra
 
Fun with Machine Translation APIs
Fun with Machine Translation APIsFun with Machine Translation APIs
Fun with Machine Translation APIsMassimo Bonanni
 

Tendances (12)

Running Kettle Job by API v1.2
Running Kettle Job by API v1.2Running Kettle Job by API v1.2
Running Kettle Job by API v1.2
 
J-SugarCRM UserSync 1.0
J-SugarCRM UserSync 1.0J-SugarCRM UserSync 1.0
J-SugarCRM UserSync 1.0
 
Costruire un client Java per SugarCRM
Costruire un client Java per SugarCRMCostruire un client Java per SugarCRM
Costruire un client Java per SugarCRM
 
Costruire un client .NET per SugarCRM
Costruire un client .NET per SugarCRMCostruire un client .NET per SugarCRM
Costruire un client .NET per SugarCRM
 
J-SugarCRM UserSync TechnicalGuide
J-SugarCRM UserSync TechnicalGuideJ-SugarCRM UserSync TechnicalGuide
J-SugarCRM UserSync TechnicalGuide
 
PHP Documentation APIs on the fly
PHP Documentation APIs on the flyPHP Documentation APIs on the fly
PHP Documentation APIs on the fly
 
Running Kettle Job by API
Running Kettle Job by APIRunning Kettle Job by API
Running Kettle Job by API
 
Joomla! 1.5: CMS a mani tese verso gli sviluppatori
Joomla! 1.5: CMS a mani tese verso gli sviluppatoriJoomla! 1.5: CMS a mani tese verso gli sviluppatori
Joomla! 1.5: CMS a mani tese verso gli sviluppatori
 
Configure Kettle debug session
Configure Kettle debug sessionConfigure Kettle debug session
Configure Kettle debug session
 
TYPO3 CMS 7.3 - le novita
TYPO3 CMS 7.3 - le novitaTYPO3 CMS 7.3 - le novita
TYPO3 CMS 7.3 - le novita
 
Liferay 7: Come realizzare un client SOAP con Apache CXF in OSGi Style
Liferay 7: Come realizzare un client SOAP con Apache CXF in OSGi StyleLiferay 7: Come realizzare un client SOAP con Apache CXF in OSGi Style
Liferay 7: Come realizzare un client SOAP con Apache CXF in OSGi Style
 
Fun with Machine Translation APIs
Fun with Machine Translation APIsFun with Machine Translation APIs
Fun with Machine Translation APIs
 

En vedette

Building a Client .NET for SugarCRM
Building a Client .NET for SugarCRMBuilding a Client .NET for SugarCRM
Building a Client .NET for SugarCRMAntonio Musarra
 
Come configurare Liferay 6.0 per Oracle
Come configurare Liferay 6.0 per OracleCome configurare Liferay 6.0 per Oracle
Come configurare Liferay 6.0 per OracleAntonio Musarra
 
Introduzione agli Hooks – Primo Episodio
Introduzione agli Hooks – Primo EpisodioIntroduzione agli Hooks – Primo Episodio
Introduzione agli Hooks – Primo EpisodioAntonio Musarra
 
HOW TO SAML Password Management (Note)
HOW TO SAML Password Management (Note)HOW TO SAML Password Management (Note)
HOW TO SAML Password Management (Note)Antonio Musarra
 
Integrazione Sistemi CRM (Joomla) & CRM (SugarCRM)
Integrazione Sistemi CRM (Joomla) & CRM (SugarCRM)Integrazione Sistemi CRM (Joomla) & CRM (SugarCRM)
Integrazione Sistemi CRM (Joomla) & CRM (SugarCRM)Antonio Musarra
 
How to Build a Java client for SugarCRM
How to Build a Java client for SugarCRMHow to Build a Java client for SugarCRM
How to Build a Java client for SugarCRMAntonio Musarra
 
Introduzione ai sistemi di Content Management System (CMS)
Introduzione ai sistemi di Content Management System (CMS)Introduzione ai sistemi di Content Management System (CMS)
Introduzione ai sistemi di Content Management System (CMS)Antonio Musarra
 
Liferay - Quick Start 1° Episodio
Liferay - Quick Start 1° EpisodioLiferay - Quick Start 1° Episodio
Liferay - Quick Start 1° EpisodioAntonio Musarra
 

En vedette (11)

Building a Client .NET for SugarCRM
Building a Client .NET for SugarCRMBuilding a Client .NET for SugarCRM
Building a Client .NET for SugarCRM
 
Come configurare Liferay 6.0 per Oracle
Come configurare Liferay 6.0 per OracleCome configurare Liferay 6.0 per Oracle
Come configurare Liferay 6.0 per Oracle
 
Introduzione agli Hooks – Primo Episodio
Introduzione agli Hooks – Primo EpisodioIntroduzione agli Hooks – Primo Episodio
Introduzione agli Hooks – Primo Episodio
 
HOW TO SAML Password Management (Note)
HOW TO SAML Password Management (Note)HOW TO SAML Password Management (Note)
HOW TO SAML Password Management (Note)
 
Integrazione Sistemi CRM (Joomla) & CRM (SugarCRM)
Integrazione Sistemi CRM (Joomla) & CRM (SugarCRM)Integrazione Sistemi CRM (Joomla) & CRM (SugarCRM)
Integrazione Sistemi CRM (Joomla) & CRM (SugarCRM)
 
How to Build a Java client for SugarCRM
How to Build a Java client for SugarCRMHow to Build a Java client for SugarCRM
How to Build a Java client for SugarCRM
 
Introduzione al Web 2.0
Introduzione al Web 2.0Introduzione al Web 2.0
Introduzione al Web 2.0
 
Introduzione ai sistemi di Content Management System (CMS)
Introduzione ai sistemi di Content Management System (CMS)Introduzione ai sistemi di Content Management System (CMS)
Introduzione ai sistemi di Content Management System (CMS)
 
Liferay - Quick Start 1° Episodio
Liferay - Quick Start 1° EpisodioLiferay - Quick Start 1° Episodio
Liferay - Quick Start 1° Episodio
 
JAX-WS e JAX-RS
JAX-WS e JAX-RSJAX-WS e JAX-RS
JAX-WS e JAX-RS
 
OSGi e Liferay 7
OSGi e Liferay 7OSGi e Liferay 7
OSGi e Liferay 7
 

Similaire à SugarCRM Web Services: Build a Apache CXF Client

Studio e realizzazione di Web Services in Ambienti di Sviluppo Integrati
Studio e realizzazione di Web Services in Ambienti di Sviluppo IntegratiStudio e realizzazione di Web Services in Ambienti di Sviluppo Integrati
Studio e realizzazione di Web Services in Ambienti di Sviluppo IntegratiGiusy E Marco Tutone-Calandra
 
Rubrica pubblica ateneo
Rubrica pubblica ateneoRubrica pubblica ateneo
Rubrica pubblica ateneodgaglioti
 
Christmas greetings cards with blazor
Christmas greetings cards with blazorChristmas greetings cards with blazor
Christmas greetings cards with blazorNicolò Carandini
 
[ITA] Introduzione ai web services: SOAP, WSDL, UDDI
[ITA] Introduzione ai web services: SOAP, WSDL, UDDI[ITA] Introduzione ai web services: SOAP, WSDL, UDDI
[ITA] Introduzione ai web services: SOAP, WSDL, UDDIMarco Brambilla
 
Wasm and Blazor CDays keynote
Wasm and Blazor CDays keynoteWasm and Blazor CDays keynote
Wasm and Blazor CDays keynoteNicolò Carandini
 
Introduzione ai Web Services
Introduzione ai Web ServicesIntroduzione ai Web Services
Introduzione ai Web ServicesMarco Livraghi
 
Designing with microservices - Daniele Mondello
Designing with microservices - Daniele MondelloDesigning with microservices - Daniele Mondello
Designing with microservices - Daniele MondelloDaniele Mondello
 
Sviluppo di servizi REST per Android - Luca Masini
Sviluppo di servizi REST per Android - Luca Masini Sviluppo di servizi REST per Android - Luca Masini
Sviluppo di servizi REST per Android - Luca Masini Whymca
 
SVILUPPO DI SERVIZI REST PER ANDROID
SVILUPPO DI SERVIZI REST PER ANDROIDSVILUPPO DI SERVIZI REST PER ANDROID
SVILUPPO DI SERVIZI REST PER ANDROIDLuca Masini
 
Web service architetture e standard - Tesi - cap1
Web service architetture e standard - Tesi - cap1Web service architetture e standard - Tesi - cap1
Web service architetture e standard - Tesi - cap1pma77
 
Chrome DevTools: le basi tecniche per comprendere meglio la SEO
Chrome DevTools: le basi tecniche per comprendere meglio la SEOChrome DevTools: le basi tecniche per comprendere meglio la SEO
Chrome DevTools: le basi tecniche per comprendere meglio la SEOGiovanni Sacheli
 
Analisi di un protocollo per la negoziazione di SLA in ambienti SOA.
Analisi di un protocollo per la negoziazione di SLA in ambienti SOA.Analisi di un protocollo per la negoziazione di SLA in ambienti SOA.
Analisi di un protocollo per la negoziazione di SLA in ambienti SOA.giuseppe_ravida
 
Catasto Rumore Struttura Informatica
Catasto Rumore Struttura InformaticaCatasto Rumore Struttura Informatica
Catasto Rumore Struttura Informaticaconfrontamutui
 
.NET Microservices
.NET Microservices.NET Microservices
.NET MicroservicesLuca Congiu
 
Hands on MVC - Mastering the Web
Hands on MVC - Mastering the WebHands on MVC - Mastering the Web
Hands on MVC - Mastering the WebClaudio Gandelli
 

Similaire à SugarCRM Web Services: Build a Apache CXF Client (20)

Studio e realizzazione di Web Services in Ambienti di Sviluppo Integrati
Studio e realizzazione di Web Services in Ambienti di Sviluppo IntegratiStudio e realizzazione di Web Services in Ambienti di Sviluppo Integrati
Studio e realizzazione di Web Services in Ambienti di Sviluppo Integrati
 
Rubrica pubblica ateneo
Rubrica pubblica ateneoRubrica pubblica ateneo
Rubrica pubblica ateneo
 
Rubrica pubblica ateneo
Rubrica pubblica ateneoRubrica pubblica ateneo
Rubrica pubblica ateneo
 
Spa with Blazor
Spa with BlazorSpa with Blazor
Spa with Blazor
 
Christmas greetings cards with blazor
Christmas greetings cards with blazorChristmas greetings cards with blazor
Christmas greetings cards with blazor
 
[ITA] Introduzione ai web services: SOAP, WSDL, UDDI
[ITA] Introduzione ai web services: SOAP, WSDL, UDDI[ITA] Introduzione ai web services: SOAP, WSDL, UDDI
[ITA] Introduzione ai web services: SOAP, WSDL, UDDI
 
Novità di Asp.Net 4.0
Novità di Asp.Net 4.0Novità di Asp.Net 4.0
Novità di Asp.Net 4.0
 
Wasm and Blazor CDays keynote
Wasm and Blazor CDays keynoteWasm and Blazor CDays keynote
Wasm and Blazor CDays keynote
 
Introduzione ai Web Services
Introduzione ai Web ServicesIntroduzione ai Web Services
Introduzione ai Web Services
 
Designing with microservices - Daniele Mondello
Designing with microservices - Daniele MondelloDesigning with microservices - Daniele Mondello
Designing with microservices - Daniele Mondello
 
Sviluppo di servizi REST per Android - Luca Masini
Sviluppo di servizi REST per Android - Luca Masini Sviluppo di servizi REST per Android - Luca Masini
Sviluppo di servizi REST per Android - Luca Masini
 
SVILUPPO DI SERVIZI REST PER ANDROID
SVILUPPO DI SERVIZI REST PER ANDROIDSVILUPPO DI SERVIZI REST PER ANDROID
SVILUPPO DI SERVIZI REST PER ANDROID
 
Corso web services
Corso web servicesCorso web services
Corso web services
 
Web service architetture e standard - Tesi - cap1
Web service architetture e standard - Tesi - cap1Web service architetture e standard - Tesi - cap1
Web service architetture e standard - Tesi - cap1
 
Scenario Framework
Scenario FrameworkScenario Framework
Scenario Framework
 
Chrome DevTools: le basi tecniche per comprendere meglio la SEO
Chrome DevTools: le basi tecniche per comprendere meglio la SEOChrome DevTools: le basi tecniche per comprendere meglio la SEO
Chrome DevTools: le basi tecniche per comprendere meglio la SEO
 
Analisi di un protocollo per la negoziazione di SLA in ambienti SOA.
Analisi di un protocollo per la negoziazione di SLA in ambienti SOA.Analisi di un protocollo per la negoziazione di SLA in ambienti SOA.
Analisi di un protocollo per la negoziazione di SLA in ambienti SOA.
 
Catasto Rumore Struttura Informatica
Catasto Rumore Struttura InformaticaCatasto Rumore Struttura Informatica
Catasto Rumore Struttura Informatica
 
.NET Microservices
.NET Microservices.NET Microservices
.NET Microservices
 
Hands on MVC - Mastering the Web
Hands on MVC - Mastering the WebHands on MVC - Mastering the Web
Hands on MVC - Mastering the Web
 

Plus de Antonio Musarra

Liferay Portal CE 7.4: Come configurare Oracle Database 19c
Liferay Portal CE 7.4: Come configurare Oracle Database 19cLiferay Portal CE 7.4: Come configurare Oracle Database 19c
Liferay Portal CE 7.4: Come configurare Oracle Database 19cAntonio Musarra
 
Come installare TIBCO Jasper Reports Server 7.5 Community Edition su RedHat J...
Come installare TIBCO Jasper Reports Server 7.5 Community Edition su RedHat J...Come installare TIBCO Jasper Reports Server 7.5 Community Edition su RedHat J...
Come installare TIBCO Jasper Reports Server 7.5 Community Edition su RedHat J...Antonio Musarra
 
Come installare Liferay 7.2 GA2 su WildFly 16 + Oracle Database 19c
Come installare Liferay 7.2 GA2 su WildFly 16 + Oracle Database 19cCome installare Liferay 7.2 GA2 su WildFly 16 + Oracle Database 19c
Come installare Liferay 7.2 GA2 su WildFly 16 + Oracle Database 19cAntonio Musarra
 
Liferay SSL/TLS Security. Come configurare il bundle Liferay per abilitare il...
Liferay SSL/TLS Security. Come configurare il bundle Liferay per abilitare il...Liferay SSL/TLS Security. Come configurare il bundle Liferay per abilitare il...
Liferay SSL/TLS Security. Come configurare il bundle Liferay per abilitare il...Antonio Musarra
 
Liferay & Salesforce.com
Liferay & Salesforce.comLiferay & Salesforce.com
Liferay & Salesforce.comAntonio Musarra
 
Come installare Liferay 7 su JBOSS EAP con il supporto​ Oracle Database
Come installare Liferay 7 su JBOSS EAP con il supporto​ Oracle DatabaseCome installare Liferay 7 su JBOSS EAP con il supporto​ Oracle Database
Come installare Liferay 7 su JBOSS EAP con il supporto​ Oracle DatabaseAntonio Musarra
 
Corso introduttivo di Design Pattern in Java per Elis - 1
Corso introduttivo di Design Pattern in Java per Elis - 1Corso introduttivo di Design Pattern in Java per Elis - 1
Corso introduttivo di Design Pattern in Java per Elis - 1Antonio Musarra
 

Plus de Antonio Musarra (7)

Liferay Portal CE 7.4: Come configurare Oracle Database 19c
Liferay Portal CE 7.4: Come configurare Oracle Database 19cLiferay Portal CE 7.4: Come configurare Oracle Database 19c
Liferay Portal CE 7.4: Come configurare Oracle Database 19c
 
Come installare TIBCO Jasper Reports Server 7.5 Community Edition su RedHat J...
Come installare TIBCO Jasper Reports Server 7.5 Community Edition su RedHat J...Come installare TIBCO Jasper Reports Server 7.5 Community Edition su RedHat J...
Come installare TIBCO Jasper Reports Server 7.5 Community Edition su RedHat J...
 
Come installare Liferay 7.2 GA2 su WildFly 16 + Oracle Database 19c
Come installare Liferay 7.2 GA2 su WildFly 16 + Oracle Database 19cCome installare Liferay 7.2 GA2 su WildFly 16 + Oracle Database 19c
Come installare Liferay 7.2 GA2 su WildFly 16 + Oracle Database 19c
 
Liferay SSL/TLS Security. Come configurare il bundle Liferay per abilitare il...
Liferay SSL/TLS Security. Come configurare il bundle Liferay per abilitare il...Liferay SSL/TLS Security. Come configurare il bundle Liferay per abilitare il...
Liferay SSL/TLS Security. Come configurare il bundle Liferay per abilitare il...
 
Liferay & Salesforce.com
Liferay & Salesforce.comLiferay & Salesforce.com
Liferay & Salesforce.com
 
Come installare Liferay 7 su JBOSS EAP con il supporto​ Oracle Database
Come installare Liferay 7 su JBOSS EAP con il supporto​ Oracle DatabaseCome installare Liferay 7 su JBOSS EAP con il supporto​ Oracle Database
Come installare Liferay 7 su JBOSS EAP con il supporto​ Oracle Database
 
Corso introduttivo di Design Pattern in Java per Elis - 1
Corso introduttivo di Design Pattern in Java per Elis - 1Corso introduttivo di Design Pattern in Java per Elis - 1
Corso introduttivo di Design Pattern in Java per Elis - 1
 

SugarCRM Web Services: Build a Apache CXF Client

  • 1. Antonio  Musarra's  Blog   The  ideal  solution  for  a  problem   Blog:  http://musarra.wordpress.com   Mail:  antonio.musarra@gmail.com     SugarCRM  Web  Services:  Build  a   Apache  CXF  Client   SugarCRM[1]   espone   all’esterno   il   core   delle   proprie   funzionalità   pubblicandole   come  Web   Services,   quindi   niente   di   più   semplice   che   creare   un   client   Java,   C#,   C++,   PHP   e   chi   più   ne   ha   più   ne   metta   per  interagire  con   essi;   non   sempre  però  la  questione  è  così  semplice  !!!     Chi   lavora   pesantemente   con   la   tecnologia   dei   Web   Services   è   cosciente   del   fatto  che  gli  standard  esistenti  lasciano  un  notevole  grado  di  libertà  tale  per  cui   possono   essere   interpretati   diversamente   dalle   varie   case   produttrici   di   software,  con  la  conseguenza  di  non  garantire  in  alcuni  casi  l’interoperabilità.       Potrebbe  cioè  essere  impossibile,  ad  esempio,  accedere  ad  un  web  service   creato   con   Axis   (Java)   utilizzando  .NET  (Microsoft).    E’   stato   creato   un   comitato   denominato  WS-­‐I   (Web   Services  Interoperability)  con   l’obiettivo   di   risolvere   i   problemi  legati  all’interoperabilità.     SugarCRM   dichiara   di   essere   compliant  WS-­‐I   1.0   Basic   Profile[2]  ,   ciò   significa   che   dovremmo   essere    in   grado   d’interagire   con   i   servizi   web   di   SugarCRM  attraverso  client  generati  (a  partire  dal  documento  WSDL)  con  Apache   Axis,  JAX-­‐WS,  Apache  CXF,  etc…     Prima   di   andar   sul   pratico,   desidero   fare   un   breve   refresh   su  style   binding  e  use.    Il   documento   WSDL[3]   descrive   il   servizio   web,   in   particolare,   l’elemento  binding  costituisce   la   specifica   concreta   di   protocollo   (in   particolare   il   protocollo   SOAP)   e   formato   dati,   relativo   a   un   elemento   portType.  Il  SOAP   binding,  che  definisce  il  modello  di  messaging,  che  può  essere:     • Remote  Procedure  Call  (RPC)  Style;   • Document  Style.     La   regola   di   codifica   dei   dati   specificata   dall’attributo  use,  può   essere,  encoded  o  literal.  Sintetizzando,  esistono  quattro  diverse  combinazioni  di   stile   e   codifica,   sulle   quali   entrambe   le   parti   coinvolte   devono   convenire   prima   d’iniziare   lo   scambio   d’informazioni:   per   esempio,   un   server   che   supporta   soltanto   la   codifica   letterale   per   lo   scambio   dei   documenti   non   sarà   mai   in   grado   di  comunicare  con  un  client  che  utilizza  il  modello  RPC  con  la  codifica  encoded.     L’elenco  a  seguire  mostra  un  riepilogo  delle  possibili  combinazioni:   • Document/Literal;   • Document/Encoded;   • RPC/Literal;   • RPC/Encoded.   17/08/12   1   This  document  is  issued  with  license  Creative  Commons  Attribution-­‐NonCommercial-­‐ShareAlike      
  • 2. Antonio  Musarra's  Blog   The  ideal  solution  for  a  problem   Blog:  http://musarra.wordpress.com   Mail:  antonio.musarra@gmail.com     Nelle   successive   figure   ho   evidenziato   style   e   use   nelle   due   combinazioni   RPC.   L’estratto   mostrato   fa   riferimento   al   documento   WSDL   di   SugarCRM   (Community  Edition  versione  6.4).       Figura  1  WSDL  Web  Services  di  SugarCRM  RPC/Encoded       Figura  2  WSDL  Web  Services  di  SugarCRM  RPC/Literal     Dalla   documentazione   di   SugarCRM   risultano   supportate   le   due   combinazioni   RPC,  quella  di  default  è  RPC/Encoded.  Le  URL  per  accedere  al  documento  WSDL   per  le  due  combinazioni  sono:     • RPC/Encoded:  http://<hostname>:<port>/service/v2/soap.php?wsdl   • RPC/Literal:  http://<hostname>:<port>/service/v2/soap.php?wsdl&sty le=rpc&use=literal     Build  del  Client   In   precedenti   articoli   pubblicati   su   questo   blog   sono   stati   affrontati   temi   circa   lo   sviluppo   di   client   per   i   servizi   web   di   SugarCRM,   sia   utilizzando   il   linguaggio   Java   (tramite   il   framework   Apache   Axis   1.4)   sia   utilizzando   .NET   Framework.  In  questo  caso  creeremo  il  client  utilizzando  Apache  CXF[4].       I  requisiti  minimi  per  portar  a  casa  il  risultato  sono:     • Installazione  e  Configurazione  del  framework  Apache  CXF  2.2.x  (o  2.5.x)   • Ant  1.7   • JDK  1.6     17/08/12   2   This  document  is  issued  with  license  Creative  Commons  Attribution-­‐NonCommercial-­‐ShareAlike      
  • 3. Antonio  Musarra's  Blog   The  ideal  solution  for  a  problem   Blog:  http://musarra.wordpress.com   Mail:  antonio.musarra@gmail.com     Qualora  fosse  necessario  consiglio  di  fare  riferimento  alla  documentazione   ufficiale  di  ogni  componente  indicato  nel  precedente  elenco.     Costruiremo   il   client   a   partire   dal   documento   WSDL   di   SugarCRM,   in   particolare  faremo  riferimento  alla  versione  4  delle  API  di  SugarCRM  Community   Edition   6.4.   Nella   successiva   tabella   sono   indicate   le   versioni   delle   API   e   le   relative  versioni  di  SugarCRM.     API  Version   SugarCRM  Version   V2   5.5.0   V3   6.1.0   V3_1   6.1.0   V4   6.2  e  successive   Tabella  1.  Versioni  delle  API     L’URL  di  accesso  ai  servizi  rispetta  il  pattern     http://<hostname>:<port>/service/vX/soap.php     dove  X  indica  la  versione  delle  API  indicata  in  Tabella  1  (prima  colonna).     Per   generare   il   client   utilizzeremo   il   tool  wsdl2java  locato   in   $CXF_HOME/bin,   specificando   l’URL   del   documento   WSDL   e   una   serie   di   altri   parametri.    E’   utile   ricordare   che   Apache   CXF   supporta   la   combinazione   RPC/Literal  e  non  quella  di  default  di  SugarCRM  RPC/Encoded.   Per   questo   motivo,   l’URL  del  WSDL  da  fornire  a  Apache  CXF  è  il  seguente:     • http://<hostname>:<port>/service/v4/soap.php?wsdl&style=rpc&use=li teral     Qualora   forniate   l’URL   non   corretta   ad   Apache   CXF   in   fase   di   generazione   del   client,  riceverete  il  seguente  errore:     WSDLToJava Error: Rpc/encoded wsdls are not supported with CXF   Il  comando  per  generare  il  client  è  il  seguente:     wsdl2java -d /Users/amusarra/SugarCRMCE64v4SOAPLibray -client -ant -exsh false -dns true -dex true -verbose "http://<hostname>:<port>/service/v4/soap.php?wsdl&style=rpc&use=literal"     Il   tool   creerà   all’interno   della   directory   specificata   dal   parametro  -­‐d  tutti   i   sorgenti  Java  del  client  +  il  file  build.xml  di  Ant  che  potrete  utilizzare  per  fare  il   build   e   test   del   client.   Se   non   diversamente   specificato,   il   client   sarà   creato   utilizzando  JAX-­‐WS  come   FrontEnd   e  JAX-­‐B  come   DataBinding,   il   vantaggio   di   questa  soluzione  è  rappresentato  dal  fatto  che  sarete  in  grado  di  eseguire  il  client   senza  la  necessità  di  librerie  aggiuntive,  basta  la  sola  JDK/JRE.   17/08/12   3   This  document  is  issued  with  license  Creative  Commons  Attribution-­‐NonCommercial-­‐ShareAlike      
  • 4. Antonio  Musarra's  Blog   The  ideal  solution  for  a  problem   Blog:  http://musarra.wordpress.com   Mail:  antonio.musarra@gmail.com       Apache  CXF,  oltre  a  creare  tutte  le  classi  Java  a  supporto,  crea  inoltre  una   classe  di  test  da  completare  oltre  che  a  poter  eseguire  la  classe  stessa  via  Ant.  Il   nome  della  classe  di  test  è:     • com.sugarcrm.sugarcrm.SugarsoapPortType_SugarsoapPort_Client.java     una  volta  che  avrete  completato  la  classe  con  qualche  prova  di  chiamata  a  uno  o   più   metodi   esposti   dal   servizio,   potrete   verificare   il   risultato   eseguendo   il   comando:     ant SugarsoapPortTypeClient   ottenendo  (come  nel  mio  caso)  un  risultato  del  genere:     SugarsoapPortTypeClient: [java] SugarCRM Server Info... [java] Version 6.4.0 [java] Flavor CE [java] Invoking login... [java] Login Successfully for admin [java] Your session Id: 98b439d68141cf38fe2441382fb6513b [java] Invoking getUserId... [java] Your UserId is: 1 [java] Invoking logout... BUILD SUCCESSFUL Total time: 3 seconds   Ho   completato   la   classe   test   in   modo   da   eseguire   le   operazioni   di   ServerInfo,  Login,  GetUserId  e  Logout.  A  questo  punto  il  gioco  è  fatto.  Consiglio  di   realizzare   un   bel  jar  del   client   appena   creato   per   utilizzarlo   ovunque   sia   necessario  accedere  ai  dati  del  CRM  di  Sugar.   Risorse   Quanto   realizzato   per   la   stesura   di   quest’articolo   è   stato   pubblicato   sul   Repository  GitHub  raggiungibile  all’indirizzo:   https://github.com/amusarra/SugarCRMCE64v4SOAPLibrary     Il  repository  contiene:     • Il  progetto  Eclipse  chiamato  SugarCRMCE64v4SOAPLibray   • Il  documento  WSDL  (RPC/Literal)  del  servizio  (in  resources/wsdl)   • Il  documento  XSD  del  servizio  (in  resources/xsd)   • Il  Jar  SugarCRMCE64v4SOAPLibrary.jar  del  client  (in  build)           17/08/12   4   This  document  is  issued  with  license  Creative  Commons  Attribution-­‐NonCommercial-­‐ShareAlike      
  • 5. Antonio  Musarra's  Blog   The  ideal  solution  for  a  problem   Blog:  http://musarra.wordpress.com   Mail:  antonio.musarra@gmail.com     Riferimenti   David  A.  Chappell,  T.  J.  (2002).  Java  Web  Services.  O’REILLY.   Antonio  Musarra.  (4  Aprile  2011).  Costruire  un  client  Java  per  SugarCRM   Antonio  Musarra.  (15  Novembre  2011).  Building  a  Client  .NET  for  SugarCRM   [1]  SugarCRM  Web  Service  Overview   [2]  Chris  Ferris.  (1  Ottobre  2002).  First  look  at  the  WS-­‐I  Basic  Profile  1.0   [3]  Russell  Butek.  (31  Ottobre  2003).  Which  style  of  WSDL  should  I  use?   [4]  The  Apache  Software  Foundation.  Apache  CXF:  An  Open-­‐Source  Services   Framework     17/08/12   5   This  document  is  issued  with  license  Creative  Commons  Attribution-­‐NonCommercial-­‐ShareAlike