Altova MapForce 2023 Enterprise Edition

Exemple : Générer des Services Web SOAP (Java)

Accueil Préc Haut Suivant

Cet exemple illustre comment générer un service Web SOAP avec MapForce. Vous allez générer un code de programme Java depuis un projet échantillon MapForce disponible sous le chemin suivant : <Documents>\Altova\MapForce2023\MapForceExamples\Tutorial\Query Person database.mfp. Ce projet met en place un service Web SOAP qui permet d'exposer deux opérations : getPerson et putPerson. Ce service Web communique en arrière-plan avec une base de données SQLite pour extraire ou ajouter des détails de personne, respectivement, par le biais des opérations ci-dessus. Pour consulter un exemple de la création de ce type de projets dans MapForce, voir Créer des projets de service Web à partir de fichiers WSDL.

 

Cet exemple nécessite Java 7 et Apache Ant pour compiler le code Java généré. Le fichier .aar sera déployé dans un serveur Apache Tomcat en marche et Axis2 est installé.

 

Pour une plus grande simplicité, cet exemple utilise une configuration de serveur Web de base et n'est pas obligatoire. Dans un environnement de production, vous pouvez souhaiter utiliser une autre approche que celle exigée par les spécifications de votre serveur Web, les polices de sécurité dans votre entreprise et d'autres facteurs.

 

Pour appeler le service Web SOAP, cet exemple utilise XMLSpy Enterprise Edition. Si vous ne disposez pas de XMLSpy, il faudra qu'un client SOAP testera le service Web, ou, en alternative, écrire un code de programme qui peut appeler le service Web.

 

 

Étape 1: Préparer le fichier query.wsdl

 

Ce service Web exemple provient du fichier WSDL suivant : <Documents>\Altova\MapForce2023\MapForceExamples\Tutorial\query.wsdl. Par défaut, le fichier query.wsdl définit les détails de service pour C# et Java dans deux sections séparées, dont une est décommentée. C'est pourquoi, avant de générer du code Java, localiser la section suivante dans le fichier query.wsdl et assurez-vous qu'il n'est pas décommenté :

 

  <!--service name="WS2DB">
     <port name="WS2DBSoapPort" binding="tns:WS2DBSoapBinding">
        <soap:address location="http://localhost/WS2DB/WS2DB.asmx"/>
     </port>
  </service-->

 

De même, veuillez vous assurer que la section suivante (uniquement applicable à Java) n'est PAS décommentée :

 

  <service name="WS2DB">
    <port name="WS2DBSoapPort" binding="tns:WS2DBSoapBinding">
        <soap:address location="http://localhost:8080/axis/services/WS2DB"/>
    </port>
  </service>

 

 

Étape 2: Générer du code Java et le créer

 

Exécuter MapForce et ouvrir le projet "Query Person database.mfp" depuis le dossier <Documents>\Altova\MapForce2023\MapForceExamples\Tutorial\. Cliquer avec la touche de droite sur le projet dans la fenêtre Projet et choisir Générer du code dans | Java. MapForce génère un code de programme et affiche le résultat dans la fenêtre de Messages :

mff_soap_java_ex01

 

Par défaut, le code sera généré dans un sous-répertoire appelé "output" et relatif au répertoire du projet. En ce qui concerne notre tutoriel, nous allons laisser les paramètres par défaut tels qu'ils sont. Néanmoins, si vous souhaitez changer le répertoire de sortie, voir Définir les paramètres de génération de code.

 

Pour créer le code Java, exécuter Ant dans la ligne de commande se trouvant dans le même répertoire que le fichier build.xml.

mff_soap_java_ex02

 

Par conséquence, un fichier Axis Archive (.aar) appelé Query_Person_database.aar est généré dans le répertoire de sortie.

 

Avant de pouvoir appeler Ant depuis tout répertoire comme illustré ci-dessus, il doit être installé et configuré correctement. Voici un bref sommaire (pour plus de détails, consulter le manuel Ant depuis http://ant.apache.org):

 

La variable d'environnement PATH doit inclure le chemin vers le sous-répertoire "bin" du répertoire root Ant.

La variable d'environnement ANT_HOME doit être définie sur le répertoire dans lequel Ant est installé.

La variable d'environnement AXIS2_HOME doit être définie sur le répertoire dans lequel la distribution standard d'Axis2 est installée.  

La variable d'environnement JAVA_HOME doit être définie sur le répertoire dans lequel Java JDK est installé.

Vérifier qu'Ant est exécuté en saisissant "ant" dans la ligne de commande. Le message "Buildfile: build.xml does not exist!" signifie qu'Ant est configuré et cherche un fichier build.

 

 

Étape 3: Déployer le service Web sur Axis 2

 

Dans cet exemple, le service web est chargé dans Tomcat depuis la page d'administration Axis2. Ce dernier peut être installé et déployé dans un serveur Tomcat exécuté comme suit (pour plus de détails, se référer à la documentation Axis2) :

 

1.Télécharger la distribution Axis2 WAR (Web Archive) depuis http://axis.apache.org/axis2/java/core/download.html.

2.Ouvrir le pack téléchargé dans un répertoire local.

3.Copier le fichier axis2.war dans le répertoire de Tomcat %CATALINA_HOME%\webapps.

4.Vérifier que Axis2 est en cours d'exécution, en ouvrant :        http://localhost:8080/axis2

 

Ouvrir la page d'administration Web Axis2 et charger le fichier .aar généré dans l'étape précédente.

mff_soap_java_ex03

Un nouveau service Web appelé "WS2DB" devrait maintenant être disponible et actif dans la page d'administration Axis2.

mff_soap_java_ex04

 

 

Appeler le service Web

 

Si vous avez suivi les étapes ci-dessus littéralement, le WSDL du service Web est disponible sous http://localhost:8080/axis2/services/WS2DB?wsdl. Pour appeler le service Web service que nous venons de déployer, nous allons utiliser XMLSpy, bien que vous puissiez également utiliser d'autres clients SOAP.

 

Exécuter XMLSpy Enterprise Edition. Dans le menu SOAP, cliquer sur Create New SOAP Request. Sur invitation, saisir le WSDL du service Web (dans cet exemple, http://localhost:8080/axis2/services/WS2DB?wsdl).

mff_soap_java_ex05

 

Cliquer sur OK. Sur invitation, choisir une Opération SOAP, choisir putPerson.

mff_soap_java_ex06

 

XMLSpy génère une requête d'échantillon comme celle ci-dessous.

 

<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:m0="https://www.altova.com/WS2DB.xsd">
  <SOAP-ENV:Body>
    <putPerson SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
        <Put xsi:type="m0:Person">
          <First xsi:type="xsd:string">String</First>
          <Last xsi:type="xsd:string">String</Last>
          <Title xsi:type="xsd:string">String</Title>
          <PhoneEXT xsi:type="xsd:string">String</PhoneEXT>
          <Email xsi:type="xsd:string">String</Email>
        </Put>
    </putPerson>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

 

Remplacer "String" avec les détails personnels que vous souhaitez fournir en tant qu'entrée dans le service Web. En ce qui concerne notre exemple, vous pourrez utiliser une requête comme celle ci-dessous:

 

<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:m0="https://www.altova.com/WS2DB.xsd">
  <SOAP-ENV:Body>
    <putPerson SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
        <Put xsi:type="m0:Person">
          <First xsi:type="xsd:string">John</First>
          <Last xsi:type="xsd:string">Doe</Last>
          <Title xsi:type="xsd:string">Mr</Title>
          <PhoneEXT xsi:type="xsd:string">123</PhoneEXT>
          <Email xsi:type="xsd:string">john.doe@example.org</Email>
        </Put>
    </putPerson>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

 

Vous pouvez maintenant envoyer la requête ci-dessus au serveur. Dans le menu SOAP, cliquer sur Send Request to Server. La fenêtre Paramètre de requête SOAP s'ouvre.

mff_soap_java_ex07

 

Cliquer sur OK. XMLSpy initie l'appel et retourne la réponse dans l'éditeur. L'image ci-dessous illustre une réponse réussie.

mff_soap_java_ex08

En utilisant la même approche que décrite ci-dessus, vous pouvez aussi appeler l'opération getPerson exposée par ce service Web. Pour des instructions étape par étape, voir la section "Appeler le service Web" dans le tutoriel C#. Seule l'URL WSDL est différente dans le tutoriel C# ; toutes les autres instructions pour appeler le service Web sont identiques.

© 2017-2023 Altova GmbH