Bistro!
Alexis Moussine-Pouchkine's Weblog
public enum Topic { Java, GlassFish, Tools, Sun, InFrenchInZeText, SDPY }

20061120 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


GlassFish Podcast
Get GlassFish V3
Support GlassFish Enterprise

Today's Page Hits: 711




bea conference glassfish groovy ips java javaee javafx javaone javazone jug mysql netbeans openesb openoffice opensource paris performance pkg podcast presentation sdpy spring sun swing techdays tips updatecenter v3 webservices
Links