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.