Premiers pas avec REDHAT SOA PLATFORM
Dans la série des premiers pas de votre serviteur dans le monde merveilleux et chatoyant des ESB, me voici avec REDHAT SOA PLATFORM.
REDHAT SOA PLATFORM est le pendant commercial de JBOSS ESB. Ce produit dispose donc d'un contrat de support. Cette stack offre les composants suivants :
- Un serveur d'application JBOSS ( vous allez me dire, un glassfish ca aurait fait mauvais genre...)
- Un moteur BPEL
- Un moteur de règles (DROOLS)
- Un MOM
- La stack WS JBOSSWS
- Un annuaire UDDI
- Des connecteurs (JMS,FTP, MAIL, HIBERNATE, JCA)
Bref, a contrario de Petals ou WSO2 , ils ont privilégié le tout en un, ce qui n'est pas plus mal pour les pauvres informaticiens que nous sommes...
Installation
Comme d'habitude avec JBOSS, l'installation est très très dure.... Unzip et hop la c'est fini
Exemples fournis
Les exemples sont assez complets, il y en a un pour chaque d'utilisation.
Réalisation d'un proxy
Il faut utiliser JBOSS DEV TOOLS si vous ne voulez pas tout faire à la main. Il faut relativiser le prix de cette outil est de 99$. Pour une boite, ce n'est pas grand chose surtout quand on regarde le prix des licences de certains produits (ex. client datastage)
Personnellement j'ai pris le parti de tout faire à la main pour éprouver la documentation.
J'ai donc réalisé un exemple de proxy de service web . Le code est disponible en GPL sur bitbucket. Bon il n'y a pas grand chose et c'est rassurant ... Pas besoin de beaucoup de code pour publier un simple proxy, le contraire aurait été étonnant...
La définition du proxy réside dans le fichier jboss-esb.xml
<service category="Proxy_Basic" name="Proxy" description="Basic WebService Proxy" invmScope="GLOBAL"> <listeners> <http-gateway name="Http" urlPattern="tokenProxy/*"/> </listeners> <actions mep="RequestResponse"> <action name="echo-request" class="org.jboss.soa.esb.actions.SystemPrintln"> <property name="message" value="Message before SOAPProxy"/> </action> <action name="proxy" class="org.jboss.soa.esb.actions.soap.proxy.SOAPProxy"> <property name="wsdl" value="http://server:8180/gawebrc/TokenWS?wsdl"/> <property name="endpointUrl" value="http://server:8180/gawebrc/TokenWS"/> </action> <action name="echo-response" class="org.jboss.soa.esb.actions.SystemPrintln"> <property name="message" value="Message after SOAPProxy"/> </action> </actions> </service>
Déploiement
Comme tous les artifacts à déployer sous JBOSS, ca se passe dans le répertoire $JBOSS_ESB_HOME/jboss-as/server/default/deploy
.
On vérifie la console JBOSS pour la prise en compte du livrable
09:51:19,578 INFO [EsbDeployment] Starting ESB Deployment 'jbossesbsample-1.0.esb' 09:51:20,688 WARN [HttpMethodBase] Going to buffer response body of large or unknown size. Using ge tResponseBodyAsStream instead is recommended. 09:51:20,782 INFO [JBossDeployerUtil] Detected WS implementation, using Native 09:51:20,813 INFO [SOAPProxy] mapped soapaction ["urn:getToken"] to binding [{http://token.interfac es.metier.gaweb.harmonie.fr}TokenWSBinding] 09:51:20,813 INFO [SOAPProxy] mapped operation [{http://token.interfaces.metier.gaweb.harmonie.fr}g etToken] to binding [{http://token.interfaces.metier.gaweb.harmonie.fr}TokenWSBinding] 09:51:20,844 INFO [SOAPProxy] mapped binding [{http://token.interfaces.metier.gaweb.harmonie.fr}Tok enWSBinding] to transport [org.jboss.soa.esb.actions.soap.proxy.HttpSOAPProxyTransport] with endpoin t address: [http://sr037272cti3700:8180/gawebrc/TokenWS] 09:53:27,657 INFO [InquiryHelper] uddi:juddi.apache.org:5cfc6ee4-46b6-43af-8cd2-4dd4bd54de07 is mod ified Wed Feb 29 09:45:00 CET 2012 1330505100235 09:53:27,735 INFO [InquiryHelper] uddi:juddi.apache.org:d52113ee-d900-4368-81d9-c26da9320312 is mod ified Wed Feb 29 09:45:00 CET 2012 1330505100594 09:53:27,782 INFO [InquiryHelper] uddi:juddi.apache.org:e88460e3-ad39-455b-8f94-4f7e28088c8f is mod ified Wed Feb 29 09:45:03 CET 2012 1330505103110
Dans la console WEB, on pourra voir dans la partie JBOSS ESB Service List que le proxy est bien disponible: