Announcing Metro - Naming the Web Services stack in GlassFish
The GlassFish V2 Web services
stack consists of JAX-WS as the core
platform and Project Tango (aka Web
Services Interoperability Technology, WSIT) as an implementation of
specifications on top of it. This stack, so far referred as "JAX-WS RI +
Project Tango", now has a new name - Project
Why name Project Metro ? - JAX-WS, the core platform, uses
Tube as a basic processing unit that represents SOAP-level protocol handling
code such as MustUnderstand and WS-Addressing processing. Multiple tubes are put
together in a sequential fashion to complete the SOAP message handling. Project
Tango uses this extensible architecture to implement they
key WS-* specs,
such as Reliable Messaging and Atomic Transactions, as Tubes as well.
Effectively, all your SOAP messages are moved from one point (client) to another
(endpoint), potentially spanning intermediaries, through Tubes. This is a direct
correlation to Metro (aka Rapid
Transport) that exists all over the world.
What is Metro ? - A picture is worth a thousand words - this shows all the components of Metro.
The two main components of Metro are:
- JAX-WS - The Core Web services platform
- WSIT - Implementation of key WS-* specs and interoperability with .NET
Web services that provides all the SOAP message functionality, including WS-Addressing and MTOM,
is available from JAX-WS. Project Tango
implements Security, Reliability and Transactions on this Core layer that interoperate with Windows
Communication Foundation. All the applications on Metro can be easily developed using
NetBeans 5.5.1 and deployed on
How does Metro provide interoperability with .NET 3.0 ? - Metro
provides a complete Web services solution for both homogeneous and heterogeneous
architectures. For any Web service, there is a Client that invokes an Endpoint.
The Endpoint advertises the metadata which the Client uses to bootstrap
communication with the Endpoint. This metadata indicates which of the
capabilities - security, reliability and transactions - are supported at the
Endpoint. For a Metro Client or Endpoint, NetBeans IDE 5.5.1 or later takes care
of processing all the details.
The figure shows a pair of Client and Endpoint - one using the
Metro Web services stack and the other using .NET 3.0. The Metro Client and
Endpoint can be deployed on any of the GlassFish V2 supported platforms (Solaris
Sparc, Solaris X86, Windows, Linux and MacOS). The .NET 3.0 Client and Endpoint
can be deployed on any of the .NET 3.0 supported platforms (Windows Vista,
Windows 2003 Server and Windows XP + SP2).
For a homogeneous architecture, where both Client and Endpoint
are using Metro, the arrow labeled 1 shows a Metro Client invoking a Metro
Endpoint. If this serves your purpose, then all you need is GlassFish V2 for
WSIT runtime, NetBeans IDE for tooling and
For a heterogeneous architecture, where only one of Client or
Endpoint is using Metro and the other is based on .NET 3.0, the arrow labeled 2
and 3 shows a Metro client can invoke a .NET 3.0 endpoint and a .NET 3.0 client
can invoke a Metro endpoint respectively. This use case has been extensively
tested as well by participating in multiple
plug-fests with Microsoft.
What is the change ? - The biggest change you'll notice is a unified
single name for what was called "GlassFish Web services stack" or "JAX-WS RI +
Tango" so far. This is only a consolidation of our multiple offerings and is
backed up high quality, high-performance and production-ready Web services stack
integrated in GlassFish V2. This
stack is also tested on Tomcat and has been reported to run on
Metro Binary 1.0 M5, aligned
Tango Milestone 5, already integrated in
GlassFish V2 b50, is available for download. The JAX-WS and Tango binaries
and documentation are still available for download but will be aligned with
Metro over time.