La SOA = la mort de l’objet ?

SOA component UML schema

Cet article expose mes réflexions sur la relation entre les deux concepts logiciels clés qui sont la  SOA et l'orienté objet, et qui concernent à la fois les méthodes et l'architecture des systèmes. Il fait suite à une de ces phrases assassines entendues au cours d'une réunion de travail : "le SOA c'est la mort de l'objet". Afin de faire la part des choses, il convient de replacer les mots dans leur contexte et de préciser les différents points de vue selon lesquels cette opinion peut être considérée...

RESTer simple avec Spring et JAXB – Partie 2 : serveur REST avec Spring web

Ce billet fait suite au sujet portant sur le "Binding avec JAXB".
Après avoir réaliser le binding du modèle métier grâce aux annotations JAXB, la partie serveur de l'application peut être réalisée.
La façon la plus simple de réaliser une communication entre applications est de passer par des standards.
Le style d'architecte REST (Representational State Transfer) utilise des standards qui ont fait la renommée du web :

  • HTTP comme protocole de communication,
  • URI comme syntaxe d'adressage des ressources,
  • XML, Json... comme syntaxe pour la représentation des données.

RESTer simple avec Spring et JAXB – Partie 1 : Binding avec JAXB

Beaucoup de tutoriaux s'arrête à l'approche serveur de l'utilisation de REST. Le but de cette série de posts est d'écrire une application web utilisant le style d'architecture REST et de fournir une API cliente permettant d'utiliser les services offerts par le serveur.

Cette première partie a pour objectif de générer la représentation XML du modèle métier de l'exemple. Dans un second billet, l'approche serveur sera abordée. Le projet se terminera par l'écriture de la partie cliente de l'application.

JAX-RS web service REST avec Spring (implémentation RestEasy)

L'objet de ce billet: Illustrer avec un exemple assez complet la mise en pratique du web service REST (JAX-RS) s'appuyant sur l'implémentation RestEasy de JBoss avec Spring 2.5.
L'exemple repose sur les briques (api) suivantes. Notez bien la version lorsqu'elle est mentionnée.

  • RestEasy: L'implémentation Jboss de jax-rs (JSR 311),
  • Spring 2.5 et les annotations,
  • Hibernate pour la partie persistence
  • L'api Dozer v4.0 pour les DTO (Data Transfert Objetc) ou VO((Value Object).
  • Junit 4.4,
  • HttpUnit,
  • XMLUnit.

Nota:La version Dozer 4.0 a renommé complètement ses packages. Certains tutos sur le web sont donc caduques.
C'est à la fin de l'étape 5 que nous détaillons l'emploi de l'api Dozer.

Quelques repères:

REST (Representational State Transfer) développé par Roy Fielding qui est l’un des fondateurs du protocol HTTP.
JSR 311 est la spec JAX-RS: Java API for RESTful Web Service. Finalisée en mars 2008.

Les CINQ principes de REST

  • P1: Tout est ressource, un identifiant unique à chaque ressource (http://localhost:8888/clients/2 pointe sur le client ayant id=2),
  • P2: Utiliser les méthodes HTTP (HEAD/GET/POST/PUT/DELETE). Et les erreurs standards HTTP,
  • P3: Les échanges avec plusieurs représentations ( xml,(x)html, json,..),
  • P4: Échanges sans état (stateless),
  • P5: Lier les ressources entre elles.

PRÉ-REQUIS: Java5.