6c4a91744a9f857f00ddd8802edb7465

Web Services, JAX-WS et intéropérabilité (partie 1)

2010-10-21 11:29

Write comment
J'ai effectué au cours de mon expérience, une implémentation assez compliqué d'un web service à l'aide de JAX-WS.

Le besoin initial étant d'exporter une méthode avec un métier très simple en un webservice et avec un document WSDL correct et surtout interopérable (Document/Literal wrapped)!

Le défit à relver est d'arriver à générer ce WSDL à partir du code avec des types complexes en entrée et en sortie.

Je vais essayer tout au long de cet article de vous proposer un petit exemple qui résumera quasiment toutes les difficultés qu'on pourrait rencontrer dans ce type de projets (Les valeurs requises, les énumérations, les exceptions, les headers, les types d'entrée et de retour complexes). Vous êtes prêts ?

C’est parti !

1. Le métier à implémenter et un web service primitif

Voici un métier tout simple, la classe « MonMetier » possède une méthode « MaMethode » permettant de prendre en paramètres un nom et un prénom, et les retourne selon un tableau complexe de type clé-valeur.

 Voici un exemple :
Les arguments:
Prénom : Jean Michel
Nom : Jarre

Le retour:
Tableau ['Prénom']=Jean Michel
Tableau ['Nom']=Jarre; 
Voici la classe de ce métier, j’ai choisit comme type de retour le type HashMap,>
 public class MonMetier
{
MonMetier()
{
//c'est pas important
}
public HashMap MaMethode(String nom, String prenom)
{
HashMap map=new HashMap();
map.put("Nom",nom);
map.put("Prenom",prenom);
return map;
}
} 
En ajoutant les annotations jax-ws  :

 @WebService(name="MonWebService")
public class MonWebService {
@WebMethod(operationName="MaMethodeService")
public HashMap MaMethodeService(
@WebParam(name="nom")
String nom,
@WebParam(name="prenom")
String prenom)
{
MonMetier metier=new MonMetier();
return metier.MaMethode(nom, prenom);
}
} 
Après le déploiement (WAR pour mon cas) on peut consulter le WSDL de ce web service en entrant l’URL de ce dernier dans un navigateur.

Et voici le schéma XSD généré:


On remarque que le type HashMap n'a pas été généré en mode clé-valeur, ce qui n'est pas bon pour la suite, car en essayant de consommer ce web service on reçoit l'adresse de l'objet mais aucune valeur.

test.HashMap : "test.HashMap@8608b9".

Comment remédier à ce problème si on a un type complexe à retourner (comme notre fameux tableau de clé valeur), ca sera discuté sur la deuxième partie (next) de cet article.

Author: M.A.H.


Similar posts
The main goal of this tutorial is to produce a sample web service for a travel agency portal that will be consumed by visitors looking for travel-related information.
I will discuss a good old way to use mod_jk on Apache2 to balance the load on multiple JBoss servers, there's also different newish approaches using mod_proxy or mod_cluster from JBoss that i will discuss in future posts.
Am going to cover a simple how-to guide to create a simple project with one ESB service, this one will poll a directory looking for a file and will read its contents and send them as a message on the ESB.
This post will cover howto write a HelloWorld Java application and deploy it to the Google App Engine. The fact that google is offering us the ability to share its platforms made me looking forward to taste piece of that pie.
Back on track, let me first tell you that Ant will look for a file named build.xml by default. After that, it’ll do exactly what it was told to do, so let’s edit that helloworld/build.xml file to make things work:
Cet article présente la création d’un Service Web sur le serveur d'application JBoss en utilisant la méthode bottom-up ainsi qu'une présentation du framework JBossWs qui a été intégré a JBoss AS depuis sa version 4.2.
Cet article présente la création d’un Service Web sur le serveur d'application JBoss en utilisant la méthode bottom-up ainsi qu'une présentation du framework JBossWs qui a été intégré a JBoss AS depuis sa version 4.2.
Cet article présente la création d’un Service Web sur le serveur d'application JBoss en utilisant la méthode bottom-up ainsi qu'une présentation du framework JBossWs qui a été intégré a JBoss AS depuis sa version 4.2.
Cet article présente la création d’un Service Web sur le serveur d'application JBoss en utilisant la méthode bottom-up ainsi qu'une présentation du framework JBossWs qui a été intégré a JBoss AS depuis sa version 4.2.
Cet article présente la création d’un Service Web sur le serveur d'application JBoss en utilisant la méthode bottom-up ainsi qu'une présentation du framework JBossWs qui a été intégré a JBoss AS depuis sa version 4.2.
Playing around with Seam framework, i began by deploying some of the sample applications which should work out of the box ... but not for me:
Playing around with Seam framework, i began by deploying some of the sample applications which should work out of the box ... but not for me:
Pour un HashMap clé/valeur, le XSD correct ne peut être généré par JAX-WS qu'en écrivant une classe Java représentant le type clé/valeur constituant ce HashMap, cet article explique comment gérer ce genre de types en passant par des annotations JA
Pour un HashMap clé/valeur, le XSD correct ne peut être généré par JAX-WS qu'en écrivant une classe Java représentant le type clé/valeur constituant ce HashMap, cet article explique comment gérer ce genre de types en passant par des annotations JA
Pour un HashMap clé/valeur, le XSD correct ne peut être généré par JAX-WS qu'en écrivant une classe Java représentant le type clé/valeur constituant ce HashMap, cet article explique comment gérer ce genre de types en passant par des annotations JA
Pour un HashMap clé/valeur, le XSD correct ne peut être généré par JAX-WS qu'en écrivant une classe Java représentant le type clé/valeur constituant ce HashMap, cet article explique comment gérer ce genre de types en passant par des annotations JA
Pour un HashMap clé/valeur, le XSD correct ne peut être généré par JAX-WS qu'en écrivant une classe Java représentant le type clé/valeur constituant ce HashMap, cet article explique comment gérer ce genre de types en passant par des annotations JA
Pour un HashMap clé/valeur, le XSD correct ne peut être généré par JAX-WS qu'en écrivant une classe Java représentant le type clé/valeur constituant ce HashMap, cet article explique comment gérer ce genre de types en passant par des annotations JA
Pour un HashMap clé/valeur, le XSD correct ne peut être généré par JAX-WS qu'en écrivant une classe Java représentant le type clé/valeur constituant ce HashMap, cet article explique comment gérer ce genre de types en passant par des annotations JA
Pour un HashMap clé/valeur, le XSD correct ne peut être généré par JAX-WS qu'en écrivant une classe Java représentant le type clé/valeur constituant ce HashMap, cet article explique comment gérer ce genre de types en passant par des annotations JA
Apache Ant is a wonderfull tool for automating software build processes, most of the cases for Java software as it is implemented with Java and requires the VM.

0 Comments


Send your comment
Type the characters you see in the picture below
Try a new code