network : antoine.guiral.info bertrand.guiral.info

Business Process Execution Language (BPEL): Ecrire un premier Web-Service avec netbeans

BPEL permet de manipuler des web-services (on dit composer ou orchestrer) et génère lui-même un web service, défini par un wsdl , qui lui même s’appuie sur des schéma (xsd).

Netbeans, le célèbre IDE gratuit de SUN permet de réaliser assez facilement une application, et de la déployer sur un serveur jbi Glassfish.

Nous allons essayer de construire une application de type "HelloWorld"



Cela passe par les étapes suivantes:

  1. Créer un schéma xsd
  2. Créer un wsdl
  3. Créer un bpel
  4. Déployer et tester

Il est impossible d’écrire des fichiers aussi complexes à la main. Il faut un outil: netbeans.

Ecrire un xsd (un schema)

  1. Créer un nouveau projet : new Project>SOA>BPEL Module
  2. Créer un nouveau schema: ProcessFils>New>XML schema donner un nom au fichier
  3. Rajouter un type complexe (ie : contactDetails)
  4. Dans la séquence de “contact”, rajouter des champs comme firstName, lastName, address, email … de type (existing type) String
  5. Rajouter une deuxièmme type complexe (ie : contactTitre), de type String celui ci (pour changer!)
  6. Rajouter 2 “elements”, des types complexes que nous avons définis précédemment

    Remarque: Vous pouvez définir des éléments de type “simple” (String par exemple) . Mais cela semble créer des problèmes …

Voilà le xsd sous sa forme xml:

  1.  
  2. <?xml version="1.0" encoding="UTF-8"?>
  3. <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
  4.             targetNamespace="http://xml.netbeans.org/schema/mySchema"
  5.             xmlns:tns="http://xml.netbeans.org/schema/mySchema"
  6.             elementFormDefault="qualified">
  7.     <xsd:complexType name="ContactDetails">
  8.         <xsd:sequence>
  9.             <xsd:element name="firstName" type="xsd:string"></xsd:element>
  10.             <xsd:element name="lastname" type="xsd:string"></xsd:element>
  11.             <xsd:element name="email" type="xsd:string"></xsd:element>
  12.             <xsd:element name="address" type="xsd:string"></xsd:element>
  13.         </xsd:sequence>
  14.     </xsd:complexType>
  15.     <xsd:element name="aContactDetails" type="tns:ContactDetails"></xsd:element>
  16.     <xsd:complexType name="ContactSimple">
  17.         <xsd:simpleContent>
  18.             <xsd:extension base="xsd:string"/>
  19.         </xsd:simpleContent>
  20.     </xsd:complexType>
  21.     <xsd:element name="aContactSimple" type="tns:ContactSimple"></xsd:element>
  22. </xsd:schema>
  23.  

Ecrire un wsdl

  1. ProcessFiles>new>wsdl document
  2. Premier écran: Importer le schéma que nous venons de définir
  3. next
  4. définir les entrées et les sorties

Voila le wsdl sous sa forme xml:

  1.  
  2.     <?xml version="1.0" encoding="UTF-8"?>
  3. <definitions name="myWsdl" targetNamespace="http://j2ee.netbeans.org/wsdl/myWsdl"
  4.     xmlns="http://schemas.xmlsoap.org/wsdl/"
  5.     xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
  6.     xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://j2ee.netbeans.org/wsdl/myWsdl" xmlns:ns="http://xml.netbeans.org/schema/mySchema" xmlns:plnk="http://docs.oasis-open.org/wsbpel/2.0/plnktype" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/">
  7.     <types>
  8.         <xsd:schema targetNamespace="http://j2ee.netbeans.org/wsdl/myWsdl">
  9.             <xsd:import namespace="http://xml.netbeans.org/schema/mySchema" schemaLocation="mySchema.xsd"/>
  10.         </xsd:schema>
  11.     </types>
  12.     <message name="myWsdlOperationRequest">
  13. <part name="part1" element="ns:aContactDetails"/>
  14.     </message>
  15.     <message name="myWsdlOperationResponse">
  16. <part name="part1" element="ns:aContactSimple"/>
  17.     </message>
  18. <portType name="myWsdlPortType">
  19.         <operation name="myWsdlOperation">
  20. <input name="input1" message="tns:myWsdlOperationRequest"/>
  21.             <output name="output1" message="tns:myWsdlOperationResponse"/>
  22.         </operation>
  23.     </portType>
  24.     <binding name="myWsdlBinding" type="tns:myWsdlPortType">
  25.         <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
  26.         <operation name="myWsdlOperation">
  27.             <soap:operation/>
  28. <input name="input1">
  29.                 <soap:body use="literal"/>
  30.             </input>
  31.  
  32.             <output name="output1">
  33.                 <soap:body use="literal"/>
  34.             </output>
  35.         </operation>
  36.     </binding>
  37.     <service name="myWsdlService">
  38. <port name="myWsdlPort" binding="tns:myWsdlBinding">
  39.             <soap:address location="http://localhost:${HttpDefaultPort}/myWsdlService/myWsdlPort"/>
  40.         </port>
  41.     </service>
  42. <plnk:partnerLinkType name="myWsdl">
  43.         <!-- A partner link type is automatically generated when a new port type is added. Partner link types are used by BPEL processes.
  44. In a BPEL process, a partner link represents the interaction between the BPEL process and a partner service. Each partner link is associated with a partner link type.
  45. A partner link type characterizes the conversational relationship between two services. The partner link type can have one or two roles.-->
  46. <plnk:role name="myWsdlPortTypeRole" portType="tns:myWsdlPortType"/>
  47.     </plnk:partnerLinkType>
  48. </definitions>
  49.  

Créer un bpel

  1. ProcessFiles>new>bpel
  2. Dans la vue design, “Drag and drop” le fichier wsdl. Les positions où il peut se positionner sont sur les côtés
  3. “Drag And Drop” l’élément “receive” de la palette vers le centre design . Parfois la palette est invisible! click droit au centre du design Add From Pallette> Web Service > Receive
  4. Editer l’élément receive, lui donner un nom (myReceive), L’associer à un “Partner link”,à une opération, créer une variable “input”
  5. Mettre en place de la même manière l’élément “reply” sous l’élément “receive”. Définir une variable “output”
  6. Mettre en place un élément assign. (entre les éléments receive et reply)
  7. Sélectionner l’élément “assign” Choisir la vue “mapper”
  8. Sélectionner la variable output (celle dans laquelle on veut assigner une valeur)

voilà le xml correpondant:

  1.  
  2. <?xml version="1.0" encoding="UTF-8"?>
  3. <process
  4.     name="myBpel"
  5.     targetNamespace="http://enterprise.netbeans.org/bpel/bg_test_005/myBpel"
  6.     xmlns="http://docs.oasis-open.org/wsbpel/2.0/process/executable"
  7.     xmlns:xsd="http://www.w3.org/2001/XMLSchema"
  8.     xmlns:tns="http://enterprise.netbeans.org/bpel/bg_test_005/myBpel" xmlns:ns0="http://j2ee.netbeans.org/wsdl/myWsdl" xmlns:sxt="http://www.sun.com/wsbpel/2.0/process/executable/SUNExtension/Trace" xmlns:sxed="http://www.sun.com/wsbpel/2.0/process/executable/SUNExtension/Editor" xmlns:ns1="http://xml.netbeans.org/schema/mySchema">
  9.     <import namespace="http://j2ee.netbeans.org/wsdl/myWsdl" location="myWsdl.wsdl" importType="http://schemas.xmlsoap.org/wsdl/"/>
  10. <partnerLinks>
  11. <partnerLink name="PartnerLink1" xmlns:tns="http://j2ee.netbeans.org/wsdl/myWsdl" partnerLinkType="tns:myWsdl" myRole="myWsdlPortTypeRole"/>
  12.     </partnerLinks>
  13.     <variables>
  14.         <variable name="MyWsdlOperationOut" xmlns:tns="http://j2ee.netbeans.org/wsdl/myWsdl" messageType="tns:myWsdlOperationResponse"/>
  15.         <variable name="MyWsdlOperationIn" xmlns:tns="http://j2ee.netbeans.org/wsdl/myWsdl" messageType="tns:myWsdlOperationRequest"/>
  16.     </variables>
  17.     <sequence name="Sequence2">
  18.         <sequence name="Sequence1">
  19.             <sequence>
  20.                     <receive name="Receive1" createInstance="yes" partnerLink="PartnerLink1" operation="myWsdlOperation" portType="ns0:myWsdlPortType" variable="MyWsdlOperationIn"/>
  21.                 <assign name="Assign1">
  22.                     <copy>
  23.                         <from>concat($MyWsdlOperationIn.part1/ns1:firstName, $MyWsdlOperationIn.part1/ns1:lastname, $MyWsdlOperationIn.part1/ns1:email, $MyWsdlOperationIn.part1/ns1:address)</from>
  24.                         <to variable="MyWsdlOperationOut"/>
  25.                     </copy>
  26.                 </assign>
  27.                 <reply name="myReply" partnerLink="PartnerLink1" operation="myWsdlOperation" portType="ns0:myWsdlPortType" variable="MyWsdlOperationOut"/>
  28.             </sequence>
  29.         </sequence>
  30.     </sequence>
  31. </process>
  32.  

Déployer et tester le projet sur le serveur

Remarquez qu’un projet BPEL n’est pas directement déployable.


Il doit être rajouté en tant que module JBI dans un projet “Application Composite” qui sera ensuite déployée.

Créer le projet “Application Composite” et rajouter les modules JBI:

  1. Depuis le menu principal : File > New Project
  2. Sémectionner le mode “Composite Application”
  3. Next
  4. Rajouter un nom, “finish”
  5. Ouvrir ce nouveau projet “Composite Application”. “Click Droit”. choisir “Add JBI Module” Sélectionner le jar du projet BPEL que vous voulez rajouter
  6. Remarquez qu’un jar a été rajouté dans le module JBI
  7. Sur le projet “Application Composite”, click droit, choisir “Deploy Project”
  8. Dans le projet “Composite Application”/Test, click droit et choisir “new test”
  9. Sur le test créé, click droit “run”

ressources

the other netbeans bpel tutorial


netbeans helloword application

Promouvoir cet article : Ces icônes sont des liens vers des sites de partage de signet sociaux où les lecteurs peuvent partager et découvrir de nouveaux liens.
  • Digg
  • del.icio.us
  • Facebook
  • Mixx
  • Google
  • blogmarks
  • BlogMemes
  • co.mments
  • e-mail
  • Live
  • Ma.gnolia
  • Scoopeo
  • Technorati
  • Wikio FR

Sercices Oriented Architecture: Les outils et ressources de base

Les outils:

Deux éditeurs sont incontournables: Netbeans et Eclipse.
Netbeans propose des editeurs bpel , xsd et wsdl assez intuitifs. Il est particulièrement adapté à glassfish pour tester des applications jbi.

De la même manière, Eclipse propose de nombreux plugins permettant de développer des applications bpel et bpmn. La démarche serait plutot top down: Je commence par écrire un fichier bpmn ( Des spécifications uniquement business) et j’arrive à générer un fichier bpel (Un langage d’execution). Eclipse est plustot destiné à générer des applications jbi pour servicemix.
Il existe une version d’eclipse comportant tous les plugins: spagic.

Pour ceux qui veulent apprendre à manipuler BPEL, je conseille netbeans.

Promouvoir cet article : Ces icônes sont des liens vers des sites de partage de signet sociaux où les lecteurs peuvent partager et découvrir de nouveaux liens.
  • Digg
  • del.icio.us
  • Facebook
  • Mixx
  • Google
  • blogmarks
  • BlogMemes
  • co.mments
  • e-mail
  • Live
  • Ma.gnolia
  • Scoopeo
  • Technorati
  • Wikio FR

JBI : Un exemple avec ServiceMix

Ce tutorial accompagne la création d’une première application:
Il s’agit de surveiller un répertoire, et lorsqu’un fichier xml apparaît dans ce répertoire, le déplacer vers un autre répertoire, et envoyer le contenu dans une queue JMS et d’en archiver une copie.

JBI Components

Les JBI Components (Binding Components et “Service Engine”) sont des plug-ins qui rajoutent des fonctionnalités au “JBI Container”.

 

Vous pouvez installer un “JBI Component” en le copiant dans le répertoire “hotdeploy”.

 

Un “JBI Component” se compose d’un fichier zip, appelé aussi “Service Assembly” ou SA.
Un SA se compose:

  • D’un fichier META-INF/jbi.xml
  • De plusieurs fichier zip appelés SU (Service Unit) . Chaque SU contient au moins un fichier xbean.xml

Il est possible de regarder les Components déployés avec une console jmx (jconsole), d’arrêter ou de démarrer les SA.

Créer un SA (Service Assembly)

Créer un projet

Recopier ce pom.xml dans un directory vide.
 

4.0.0 bg.servicemix parent 1.0-SNAPSHOT pom Tutorial http://servicemix.org

Exécuter la commande:

mvn install

Cela valide le fait que mvn est installé, et que le fichier pom.xml est correct.

 

ServiceMix fournit plusieurs achetypes Maven pour faciliter la créattion de projets.

Créer un projet SU (Service Unit) avec Maven et l’archetype “servicemix-service-unit”

Nous commencerons par utiliser l’archétype permettant de créer des SU (Service Unit)

Depuis le directory que nous avons créé, la commande suivante créera un “service unit” projet appelé “tutorial-file-su”:

mvn archetype:create -DarchetypeArtifactId=servicemix-service-unit -DarchetypeGroupId=org.apache.servicemix.tooling -DarchetypeVersion=3.2.1 -DartifactId=tutorial-file-su

Mettre la version correspondant à la version de serviceMix.

 

Nous remarqons que le premier fichier pom.xml que nous avions écrit a été modifié, et qu’un nouveau répertoire a été créé, contenant un pom.xml.

Rajouter une dépendance pour un “component” JBI

Chaque SU (Service Unit) est detiné à être un “component” JBI. Nous spécifions cela dans le pom.xml , en rajoutant une dépendance au pom.xml.

L’outillage maven de servicemix fera le reste.

Le component “servicemix-file” fournit l’integration du JBI aux fichiers. Il peut être utilisé pour lire et écrire des fichiers, ou surveiller (poll) un répertoire.Il est décrit ici

org.apache.servicemix servicemix-file ${servicemix-version}

Configurer le xbean.xml

 

Ensuite, nous aurons à configurer notre nouveau SU pour fournir réellement un service.
Nous faisons cela en créant un fichier appelé xbean.xml dans le répertoire src/main/resources

 

L’exemple définit 2 namespaces: Le prefixe “file” fait référence à un namespace pour adresser les fonctionnalités standard, tandis que le prefixe “tut” sera utilisé pour le namespace dans lequel notre service sera défini.

 

 

Définition d’un “file sender endpoint”

 

Un “file sender” peut être utiliser pour écrire des fichiers localement.
Voilà un exemple de “file sender”:

 

Remarquez les 2 attributs service (Qui font référence à l’ensemble du SU) et endpoint (Qui fait référence au sein du service , à cet interface file:sender).

 

Définition d’un “file poller endpoint”

 

Nous allons lire les fichiers XML dans un répertoire (spécifié par l’attribut “file”, aussi veillez a ce que ce directory existe sur votre système )

La ligne XML ci-dessous est destinée à configurer un “poller”, qui vérifiera la presence d’un nouveau fichier toutes les n secondes. Ce fichier sera envoyé au “file sender” endpoint spécifié par les attributs “targetService” et “targetEndpoint”.

 

Le poller appartient au même service que le “sender”; mais à un autre endpoint.Il a 2 attributs targetService et targetEndpoint qui désignent vers quelle appli seront envoyée les fichiers (Dans notre exemple,c’est le même service).

 

En résumé:

Vous spécifiez le component cible pour un SU comme une dépendance dans Maven (”dependancy” dans le pom.xml).

Dans ServiceMix, la pluspart des SU seront configurés par des fichiers xbean.xml

 

Créer le SA (”Service Assembly”) avec Maven et l’archetype “servicemix-service-assembly”

 

De la même manière que nous avons créer notre SU avec un archetype Maven, nous allons créer notre projet SA .

Exécuter cette commande :

mvn archetype:create -DarchetypeArtifactId=servicemix-service-assembly -DarchetypeGroupId=org.apache.servicemix.tooling -DarchetypeVersion=3.2.1 -DartifactId=tutorial-sa

Un nouveau projet a été généré

 

Ajouté le SU dans le SA

 

Nous voulons ajouter le SU que nous avons créé au SA. L’outil Maven le fera automatiquement si nous mettons une dépendance dans le pom.xml du SA.
Nous avons à utiliser le groupId, l’artifactId et la version du SU ici:

xxx org.apache.servicemix.tutorial tutorial-file-su 1.0-SNAPSHOT xxxx

Utilisons Maven pour construire l’ensemble:

mvn install

Déployer le SA

Avant de commencer, assurez vous que ServiceMix est démarré.

Maintenant , naviguez dans le directory de votre SA, et utiliser le plugin JBI “Maven” pour déployer votre projet:

cd tutorial-sa mvn jbi:projectDeploy

Tester le SA

 

Nous avons configurer notre SU “file” pour surveiller la presence de fichiers dans un directory, et les envoyer à un autre répertoire.
Copier juste un fichier xml dans le répertoire surveillé, et ServiceMix le déplacera après quelques secondes vers le “endpoint”

 

Rajouter 2 SU

A la place de simplement copier des fichiers depuis un directory vers un autre, nous allons maintenant envoyer un message vers une queue JMS. Nous voulons aussi archiver une copie du message en utilisant le pattern “wiretap”.

 

En premier, nous avons à créer 2 projets supplémentaires pour nos 2 SU.
A la place d’utiliser le simple archetype “servicemix-service-unit” comme precedemment,nous allons utilser 2 nouveaux archetypes:

  • “servicemix-eip-service-unit” pour créer le module “tutorial-eip-su”
  • “servicemix-jms-provider-service-unit” pour créer le module “tutorial-jms-su”

 

Nous connaissons la syntaxe:
mvn archetype:create -DarchetypeArtifactId=XX -DarchetypeGroupId=org.apache.servicemix.tooling -DartifactId=YY

mvn archetype:create -DarchetypeArtifactId=servicemix-eip-service-unit -DarchetypeGroupId=org.apache.servicemix.tooling -DarchetypeVersion=3.2.1 -DartifactId=tutorial-eip-su mvn archetype:create -DarchetypeArtifactId=servicemix-jms-provider-service-unit -DarchetypeGroupId=org.apache.servicemix.tooling -DarchetypeVersion=3.2.1 -DartifactId=tutorial-jms-su

Ces archetypes sont un peu plus sophistiqué :
Ils ajoutent les < dependency > pour les components JBI qu’ils ciblent. Ils fournissent un xbean.xml pour démarrer.

Après cela, ajouter ces 2 nouveaux SU au SA en rajoutant les < dependency > au pom.xml du SA.

 

La documentation de serviceMix décrit comment utiliser jms : servicemix-jms.

 

Modifier le fichier xbean.xml de tutorial-jms-su, afin d’accéder à une queue appelée “queue/tutorial” sur ActiveMQ (qui est embarqué dans ServiceMix).

 

 

 

Configurer le “tutorial-eip-su”

 

Le “Servicemix-eip component” est un container “routeur” où plusieurs types de routage peuvent être déployés en tant que SU.

 

Modifier le fichier xbean.xml de “tutorial-eip-su” pour définir le “wiretap” que nous voulons.

Les différents pattern sont définis dans la doc de ServiceMix-eip
voici le shema du “wire-tap” pattern:
wire-tap

 

 

 

 

Nous voulons envoyer les messages au “jms endpoint”, aussi, nous spécifions cette information au premier < eip:exchange-target/ >

Le deuxième fait référence au endpoint < file:sender /> que nous avons déclaré plus tôt.

 

Modifier la configuration de tutorial-file-su

 

Nous avons à modifier le “targetService” du endpoint < file:poller > pour réferrer à notre nouvellement créé “wiretap”.
Cela pourrait être comme cela:

 

 

Construire et deployer

 

Quand tout est fait, vous étes prèt pour construire et deployer le SA.
Lors du build, les logs devraient ressembler à cela:

[INFO] Scanning for projects… [INFO] Reactor build order: [INFO] Tutorial [INFO] Tutorial :: File SU [INFO] Tutorial :: JMS SU [INFO] Tutorial :: EIP SU [INFO] Tutorial :: SA … [INFO] ——————————– [INFO] BUILD SUCCESSFUL [INFO] ——————————– …

Test

 

Si vous copiez un fichier dans le directory surveillé par le “poller”, il sera copié dans le directory “sender”, comme avant.

Cependant, il devrait aussi y avoir une copie du message dans notre queue JMS.

Pour le controller, connectez vous à ServiceMix avec la console JMX et naviguez vers org.apache.activemq/localhost/Queues.

Une queue devrait avoir été créée avec le nom “queue/tutorial” et l’attribut “EnqueueCount” indique le nombre de messages qui ont déjà été envoyés.

Promouvoir cet article : Ces icônes sont des liens vers des sites de partage de signet sociaux où les lecteurs peuvent partager et découvrir de nouveaux liens.
  • Digg
  • del.icio.us
  • Facebook
  • Mixx
  • Google
  • blogmarks
  • BlogMemes
  • co.mments
  • e-mail
  • Live
  • Ma.gnolia
  • Scoopeo
  • Technorati
  • Wikio FR

JBI - Java Business Integration: C’est quoi ?

JBI est un standard java (JSR 208) qui définit une architecture pour permettre l’interoperabilité d’applications avec un système d’échanges de messages.
Les messages entre les “components” sont échangés à travers un “Normalized Message Router” (NMR). Le NMR sert de “Message Exchange Pattern” (MEP). Le NMR sert d’intermédiare pour échanger des messages, quelquesoit l’endroit où est le “Component”. Les plugins ne communiquent pas directement les uns avec les autres: Ils communiquent exclusivement vers le NMR.

jbi

JBI Components

Les “plugins” mentionné ci-dessus sont quelquefois appelé “JBI components”.

“Binding Components”

Un “binding component” (BC) a 2 buts:

  • Communiquer en utilisant un protocole distant.
  • Normaliser les messages reçus

Les BC sont utilisés pour communiquer en dehors l’environnement JBI.

Exemples de protocoles fournis par les BC: http, jms,ftp,smtp,xmpp,rmi,corba,xmpp

JBI Components

Les JBI Components (Binding Components et “Service Engine”) sont des plug-ins qui rajoutent des fonctionnalités au “JBI Container”.

 

 

Vocabulaire

  • Java Business Integration (JBI) : C’est le nom d’une JSR (Java Spécification)
  • Entreprise Service Bus (ESB) : C’est la même chose qu’un JBI, mais pas forcemment normalisé.
  • Component Les composants proposent des services accessibles par l’intermédiaire d’interfaces. Ce sont les parties enfichables dans le framework JBI. Il se divisent en deux sous-familles:Service Engine (SE) et Binding Component (BC)
  • Service Engine (SE) :Les SE fournissent la logique métier et les transformations (XSLT, …). Il peuvent consommer eux-même d’autres SE.
  • Binding Component (BC) : Les BC fournissent la connectivité, qu’il s’agisse de protocoles (FTP, HTTP,…), de piles (SOAP, JMS, …) ou de services externes au conteneur JBI. Ils permettent l’accès de depuis l’extérieur au services d’une application JBI.
  • Rôles : Les composants peuvent avoir les rôles suivants : Consumer (Le composant utilise un service ) et Provider (Le composant fournit un service ) Chaque composant peut être à la fois consumer et provider.
  • EndPoint :Les services proposés par les composants sont accessibles via des endpoints. Un service correspond à un endpoint.
  • Normalized Message Router (NMR) :Le Normalized Message Router reçoit et envoi des messages de la part de composants. Il est responsable du routage des messages. Les messages sont tous dans un format normalisé
  • Normalized Message :Les Normalized Messages sont les messages echangés par une application JBI. Ce sont des documents XML formé :Du contexte du message ( Il inclut des informations tels que le protocole de communication, des informations spécifiques à d’autres composants … )et du contenu du message (Toutes les données)
  • Delivery Channel :Les composants se « connectent » sur le NMR grâce au delivery channel. C’est une voie de communication bidirectionnelle leur permettant d’envoyer et de recevoir les messages
  • Service Unit (SU) :Chaque composants à déployer est défini dans un SU. Celui contient toutes les informations relatives au composants (fiche de transformation Xslt… ) et obligatoirement un descripteur qui se trouve dans un dossier META-INF à la raçine de l’archive.
  • Service Assembly (SA) :Les composants qui doivent interagir ensemble sont rassemblé dans un SA. Celui-ci contient obligatoirement un descripteur où se trouvent toutes les informations relatives aux SUs à deployer, ainsi que les archives de ces Sus.

 

Dans notre prochain tutorial, nous implementeront une application sur ServiceMix

Promouvoir cet article : Ces icônes sont des liens vers des sites de partage de signet sociaux où les lecteurs peuvent partager et découvrir de nouveaux liens.
  • Digg
  • del.icio.us
  • Facebook
  • Mixx
  • Google
  • blogmarks
  • BlogMemes
  • co.mments
  • e-mail
  • Live
  • Ma.gnolia
  • Scoopeo
  • Technorati
  • Wikio FR

wsdl - Web Services Description Language

WSDL (Web Services Description Language) est un langage xml pour décrire les Web-Services et comment y accéder.

Structure d’un wsdl

Un wsdl décrit un Web-Service avec ces principales bailises:

La structure principale d’un wsdl ressemble à cela (liste non exhaustive):

  1.  
  2. <definitions>
  3. <types>
  4.    definition des types&#8230;&#8230;..
  5. </types>
  6.  
  7. <message>
  8.    definition des messages &#8230;.
  9. </message>
  10. <portType>
  11.    definition des ports (opérations et messages)&#8230;&#8230;.
  12. </portType>
  13.  
  14. <binding>
  15.    Les protocoles de communication utilisés par le web-service
  16. </binding>
  17. <service>
  18.    Une adresse physique où accéder au service.
  19. </service>
  20. </definitions>
  21.  

WSDL “portType”

L’élément < portType > est l’élément le plus important

Il décrit un web-service , les opérations qui peuvent être accomplies, et les messages échangés.

L’élément < portType > peut être comparé à une fonction d’une librairie dans un langage traditionnel.

Messages WSDL

L’élément < message > définit les données d’une opération.

Chaque message peut être formé d’une ou plusieurs partie. Les parties peuvent être comparés aux paramètres d’une fonction dans un langage de programmation traditionnel.

Operation Types

Les type de “Request-response” est l’opération la plus courrante. Mais wsdl définit d’autres types d’opération (”One-way”, “Solicit-response”,”Notification”)

Outil / editeur

Il est quasiment impossible d’écrire un wsdl à la main.(Sans erreurs!)

J’utilise l’éditeur wsdl d’eclipse (voir le projet STP, ils proposent un plugin avec l’ensemble de leurs outils), qui est gratuit et qui marche bien.

Cet outil permet à la fois d’éditer un fichier wsdl, mais aussi, de comprendre sa structure et de quoi il est composé: C’est une bonne idée d’éditer un wsdl existant, et de le regarder avec cet outil.

wsdl_1

Promouvoir cet article : Ces icônes sont des liens vers des sites de partage de signet sociaux où les lecteurs peuvent partager et découvrir de nouveaux liens.
  • Digg
  • del.icio.us
  • Facebook
  • Mixx