« webservice » Feed

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 !

Read more…

6c4a91744a9f857f00ddd8802edb7465

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

2010-10-21 11:29

Write comment

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.

Cette deuxième partie expliquera comment faire pour gérer ce genre de types en passant par des annotations JAXB.

Ci-dessous une classe MonTypeDeRetour représentant l'objet qui sera retourné par mon webservice:

 @XmlAccessorType(XmlAccessType.FIELD)
@XmlType (name = "MonTypeDeRetour", propOrder = {"key","value"})
public class MonTypeDeRetour {

    @XmlElement(name="return",required = true)
    protected Object key;

    @XmlElement(name="return1",required = true)
    protected Object value;

    public MonTypeDeRetour() {
    }

    public Object getKey() {
        return key;
    }

    public void setKey(Object value) {
        this.key = value;
    }

    public Object getValue() {
        return value;
    }

    public void setValue(Object value) {
        this.value = value;
    }

    @Override
    public String toString() {
        return "Table["+this.getKey()+"]="+this.getValue();
    }
} 
Voila maintenant nous avons un type de retour bien définit reconnaissable par JAX-WS, on va maintenant retoucher notre web service pour préciser le nouveau type de retour de celui-ci.

Voici le nouveau code source du web service :

Read more…

7f6b01a84f1fc5acd2765285708ad76c

Développement d'un web service sur JBossWs (Bottom-Up)

2010-10-26 12:44

Write comment

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.


Une rapide présentation de JBossWs :


JBossWs implémente les spécifications JAX-WS pour la définition des services web. Cette norme définit un ensemble d’annotations qui permettent la transformation d’un POJO (ou EJB3) en service web. Les annotations sont interprétées par le serveur d’application afin de transformer les classes Java en service web, il offre aussi d'autres services tel que le support des EJB3 , Ws-Security, WS-Policy ... et il s'intègre aussi facilement avec Apache CXF et GlassFish Metro


Une rapide présentation de JAX-WS:


JAX-WS (Java API for XML based Web Services) est une nouvelle API, mieux architecturée, qui remplace l'API JAX-RPC, mais n'est pas compatible avec elle.

Elle propose un modèle de programmation pour produire (côté serveur) ou consommer (côté client) des services web qui communiquent via des messages XML de type SOAP.


JAX-WS permet la mise en œuvre de plusieurs spécifications :

  • Respect des spécifications SOAP.
  • Permet le développement de services web orientés RPC (literal) ou orienté documents (literal/encoded/literal wrapped)

Lorsque vous développez un service web (Endpoint ), vous avez la possibilité de partir d'un code Java (bottom-up), ou depuis le contrat (WSDL) qui définit votre service (top-down).

S'il s'agit d'un nouveau service (pas de contrat existant), l'approche bottom-up est le chemin le plus rapide, vous n'avez besoin que d'ajouter quelques annotations à vos classes pour obtenir un service opérationnel.

Toutefois, si vous développez un service avec un contrat déjà défini, il est beaucoup plus simple d'utiliser l'approche top-down, depuis l'outil fourni par votre framework (wsconsume pour JBossWs) qui va générer le code annoté pour vous.


Un exemple simple :

Read more…

 Nbre d'élements: 3/
4