
lundi novembre 20, 2006
PRESTO, GlassFish, and NetBeans (WS-*)
I spent some time since this summer working on a prototype for the
French government. The project is called PRESTO ("PRotocole
d’Echanges Standard et Ouvert") and is
documented here.
The goal is to define a profile (a la WS-I) for a transport protocol
based on Web Services for better and more standard interop between
ministries and related organisations. In a
nutshell, it's about using WS-I Basic Profile, SOAP 1.2, MTOM,
WS-Addressing, WS-ReliableMessaging, and optionally OASIS WS-Security.
There was (is) an interesting set of participants and technologies :
- Bull
using Apache Axis 2 and ObjectWeb's JOnAS
- Zend
relying on WSO2's
Tungsten C implementation of Axis 2 to work as a PHP plugin
- Axway
working with the Systinet/Mercury/HP web engine (SSJ)
- Microsoft
with .Net 3.0 (WCF)
- Sun
with Java EE 5 (GlassFish)
More details on Sun's prototype, technology and differentiators are
described here
(in a nutshell : full Open Source, toolable, and brain-dead simple
programing). Everything is now part of GlassFish (as
of recent v2 builds) and will be productized in Sun Application Server
9.1.
Absent were IBM, Oracle, JBoss, and BEA for various reasons, mainly
because
their respective offerings were not ready. Ironically, IBM claims it
inspired PRESTO with their WS-RAMP
specification (which itself came from two of their customers) but was
unable to
show any implementation. WS-RAMP seems like it could serve as a basis
to a future WS-I profile which could end up being a replacement to
PRESTO.
Representing WS02 was Paul
Fremantle
who's the chair of the OASIS WS-ReliableMessaging technical committee
and an Axis 2 commiter. Paul has already blogged about PRESTO here.
The prototype involved working on a common WSDL definition of
document/literal one-way and two-way operations and testing the interop
of all combinations (with or without MTOM, WS-ReliableMessaging)
between all implementations. Coming up with a common WSDL wasn't an
easy job and many found out what wrapped
doc/lit was all about (although this convention isn't really well
documented).
The results are encouraging but not perfect, so the work on both the
prototype and the PRESTO specification are still ongoing. The best
results are shown with the Sun/GlassFish + Microsoft/WCF combination (100% PASS) showing
the value of the engineering work between Sun and Microsoft as part of
the Tango
project. For the tests with other implementations, the NetTool
tunnel was very useful although XML remains XML - a pain to read, a
nightmare to debug.
Writing the Sun prototype for me was really a matter of using JAX-WS
2.0 (and the underlying JAXB 2.x binding architecture), understanding
the GlassFish WSIT
extensions (great tutorial here)
and using the NetBeans
WSIT plug-in which allows you to declaratively set the MTOM,
WS-ReliableMessaging, and WS-Security properties. Writing a
flexible-enough testing Swing
UI was also fun, but better yet was writing the OpenOffice
client demo.
PRESTO has clearly shown some European interest among the 130 attendees
in last
month's presentation in Paris and clearly fits a
need.
( nov. 20 2006, 09:47:00 AM CET )
Permalink
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.
( nov. 20 2006, 08:49:00 AM CET )
Permalink