PRESTO, GlassFish et NetBeans (WS-\*)

J’ai passé une partie de l’été dernier
à travailler sur un protoype pour la DGME
d’implémentation de la spécification PRESTO (“PRotocole
d’Echanges Standard et Ouvert

documenté ici).
L’objectif de cette spécification est de définir
un profil (à la mode WS-I) définissant un
protocole basé sur des Web Services pour fournir un meilleur
standard d’intéropérabilité
appliqué aux communications entre ministères,
collectivités locales et autres associations. En quelques
mots techniques il s’agit de WS-I Basic Profile, SOAP 1.2, MTOM,
WS-Addressing, WS-ReliableMessaging et de manière
optionnelle OASIS WS-Security.

La liste des participants et des technologies était (est)
particulièrement intéressante :


Bull
avec Apache Axis 2 intégré à
JOnAS
Zend
avec la technologie Tungsten dérivée de Axis 2 en
C et fournie par son partenaire WSO2 sous forme de
plugin PHP
Axway
avec le serveur Web Services SSJ
de Systinet/Mercury/HP
Microsoft
avec .Net 3.0 (WCF).
Sun
avec Java EE 5 (GlassFish)

Les détails sur le prototype réalisé
par Sun, les technologies et les éléments
différentiateurs sont tous décrits ici
(en résumé: open source, outillé et
une programmation affreusement simple). Toutes les briques
nécessaires sont désormais dans GlassFish
(à partir des builds récents de la version 2) et
seront supportées dans Sun Application Server 9.1.

Parmi les absents de marque on compte IBM, Oracle, JBoss et BEA pour
des raisons diverses mais surtout parce que leurs
implémentations ne sont pas encore prêtes. De
manière assez ironique, IBM réclame la
paternité de PRESTO du fait de sa spécification WS-RAMP
(elle même dérivée d’un travail de deux
de leurs clients) sans pour autant pouvoir monter une
implémentation. WS-RAMP semble bien positionné
pour servir de base de travail pour un futur profil du WS-I qui,
à terme, pourrait annuler et remplacer PRESTO.

Coté WSO2, le participant était Paul
Fremantle

qui est par ailleurs le patron technique du comité de
standardisation de OASIS WS-ReliableMessaging et un
commiter Axis 2. Paul a déjà
mentionné PRESTO ici.

Le prototype consistait à travailler à
partir d’une définition partagée par tous en WSDL
d’opérations avec ou sans réponse en mode
document/literal et à tester les différentes
combinaisons (avec ou sans MTOM, WS-ReliableMessaging)
entre les différents implémentations. Se
mettre d’accord sur le contenu de ce contrat WSDL n’a pas
été si simple et beaucoup auront
découvert au passage la signification d’un style
doc/lit wrapped (même
si cette convention n’est pas vraiment documentée).

Les résultats sont encourageants mais pas encore parfaits si
bien que le travaille de prototypage et de
spécification PRESTO continue à ce jour. Les
meilleurs résultats sont obtenus avec la combinaison
Sun/GlassFish + Microsoft/WCF (100% des tests) ce qui
démontre l’intérêt d’un travail en
amont des équipe d’engineering entre Sun et Microsoft dans
le cadre du projet Tango.
Pour Microsoft comme pour les interactions avec les autres
implémentations, je vous recommande le tunnel NetTool qui
s’avère très agréable, même
si du XML restera toujours du XML : difficile à lire,
infernal à déboguer.

L’écriture du prototype a été pour moi
simplement d’utiliser JAX-WS 2.0 (et son
sous-système de binding JAXB 2.0), de comprendre l’extension
GlassFish WSIT
(en partie grâce à son excellent didacticiel)
et d’utiliser l’extension
WSIT de 
NetBeans
qui permet de manière déclarative de
spécifier la propriétés MTOM,
WS-ReliableMessaging et WS-Security. L’écriture d’un client Swing
suffisamment flexible a été agréable,
mais plus encore l’écriture de l’extension, toujours en
Swing, à  la suite OpenOffice.

PRESTO a suscité un réel
intérêt dès sa première présentation
publique
le mois dernier au ministère de finances,
à la fois auprès des 130 participants, des
collectivités locales, des intégrateurs et des
représentants d’autres pays européens. Le
protocole de transport PRESTO répond clairement à
une demande.

Author: alexismp

Google Developer Relations in Paris.