Spécifications Services Web SOAP Java
MapForce génère tout le code et tous les scripts nécessaires à la création d'un service web SOAP. Toutefois, pour que le service web soit accessible aux consommateurs, le code généré doit être compilé et déployé sur le serveur Apache Tomcat avec Axis2 installé. De plus, Apache Ant est requis pour compiler le code Java.
Génération et compilation du code Java
1.Ouvrez le projet de service web à partir duquel vous souhaitez générer du code. Reportez-vous à la section précédente, Création de projets de services Web à partir de fichiers WSDL, pour obtenir un exemple de création d'un tel projet.
2.Dans le menu Projet, cliquez sur Générer le code dans | Java, puis sélectionnez le répertoire cible. Une fois la génération du code terminée, plusieurs dossiers et fichiers sont créés dans le répertoire cible, notamment un répertoire com qui contient les classes génériques Altova, ainsi que les classes réelles du projet de service web.
3.Compilez le code Java généré (en fournissant à Apache Ant le fichier build.xml généré par MapForce). Un fichier Axis Archive File (*.aar) est alors créé, que vous pouvez ensuite déployer dans Axis2.
Remarque pour les utilisateurs d'Eclipse : lorsque vous ouvrez le projet généré avec Eclipse, un message d'erreur tel que « L'importation org.apache ne peut pas être résolue. » peut s'afficher. Dans ce cas, assurez-vous que les bibliothèques Axis2 sont ajoutées au chemin de compilation Java. Pour ajouter les bibliothèques Axis2 au chemin de compilation Java dans Eclipse 4.4.2, procédez comme suit :
1.Cliquez avec le bouton droit sur le projet dans le Package Explorer et sélectionnez Propriétés.
2.Cliquer sur Chemin de compilation Java.
3.Dans l'onglet Bibliothèques, cliquez sur Ajouter fichiers JAR externes, puis ajoutez les bibliothèques Axis2 à partir du dossier <AXIS2_HOME>\lib.
Déploiement du service web
Pour déployer le service web, procédez de l'une des manières suivantes :
•Ouvrez la page d'administration Web « Upload Services » (Télécharger les services) d'Axis2 et téléchargez le fichier .aar créé à l'étape précédente.
•Effectuez un téléchargement manuel. Par exemple, si votre serveur Tomcat a été installé dans le dossier <TOMCAT_HOME>, vous pouvez copier manuellement le fichier .aar dans <TOMCAT_HOME>\webapps\axis2\WEB-INF\services.
Pour consulter un exemple étape par étape, voir Exemple : Générer des Services Web SOAP (Java).
Désinstallation
Supprimez le fichier *.aar du dossier <TOMCAT_HOME>\webapps\axis2\WEB-INF\services.
Limitations d'Axis2
La prise en charge de RPC/encoded par Axis2 est limitée. MapForce peut toutefois générer des services Web RPC/encoded (SOAP 1.1 et SOAP 1.2). La limitation réside dans le fait que le fichier WSDL d'origine n'est pas récupéré à partir du serveur Web.
Cela signifie, par exemple, que http://127.0.0.1/axis2/services/WS2DB?wsdl ne renverrait pas un fichier .wsdl utilisable.
Pour les services Web document/literal, l'URL ci-dessus fournira un fichier .wsdl utilisable et correct. Il sera toutefois différent de l'original : les commentaires seront supprimés et les espaces de noms seront modifiés. Il conservera toutefois la même sémantique que le fichier .wsdl d'origine avec lequel le service a été généré.
Bien qu'Axis2 ne prenne pas en charge RPC/encoded, il est capable de générer du WSDL à partir de code Java déployé (code compilé). Le code généré par MapForce peut donc traiter les messages RPC/encoded ; Axis2 est uniquement utilisé pour le transport.
Problème connu : espaces de noms dans le message de réponse SOAP
Le code généré par MapForce instancie la classe javax.xml.transform.TransformerFactory. Lorsque l'implémentation de la classe est chargée, elle peut être lue à partir de la propriété système javax.xml.transform.TransformerFactory (pour plus de détails, reportez-vous à la documentation Java de cette classe).
Si la propriété système javax.xml.transform.TransformerFactory de votre environnement Java définit l'implémentation org.apache.xalan.transformer.TransformerIdentityImpl, le message de réponse SOAP peut être généré avec des espaces de noms incorrects.
Pour éviter ce problème, il est recommandé d'utiliser l'implémentation org.apache.xalan.xsltc.trax.TransformerFactoryImpl. Pour ce faire, ajoutez le paramètre suivant à la machine virtuelle Java (JVM) :
-Djavax.xml.transform.TransformerFactory=org.apache.xalan.xsltc.trax.TransformerFactoryImpl |
Les instructions pour ajouter le paramètre à la JVM dépendent du système d'exploitation et du serveur que vous utilisez. Les instructions suivantes s'appliquent à Apache Tomcat 7.0 configuré pour s'exécuter en tant qu'application de service sous Windows 7 :
1.Exécutez Tomcat7w.exe (ce fichier se trouve dans le sous-dossier \bin du dossier racine de la distribution Tomcat, CATALINA_HOME).
2.Cliquez sur l’onglet Java.
3.À la fin de la zone « Java Options », entrez : -Djavax.xml.transform.TransformerFactory=org.apache.xalan.xsltc.trax.TransformerFactoryImpl
