Documentation
- Getting Started with Metro
- Metro Users Guide
- Metro mailing lists
- archive of users@metro.java.net
- archive of dev@metro.java.net
- Issue tracking
- Additional Resources
Discover
Click the pictures below to learn about individual metro components/features:
- HTTP transport
- Metro can act as both a client and a server for HTTP. The HTTP web service can run inside any servlet container or anywhere on JavaSE6.
- MTOM and XOP
- These specifications enable optimized binary encodings of XML content within SOAP 1.2 payloads. XML structure is preserved in a text-based "XML Information Set" manifest, while enabling the document's contents to be serialized to any binary encoding. These specifications enable encoding of XML content as MIME body parts and encapsulation of those parts -- along with the associated XML Information Set manifest -- within SOAP 1.2 envelopes. The specifications also describe how to encapsulate binary-encoded XML body parts directly within HTTP packets. The main point is that the size of the XML is reduced resulting in more optimal communication.
- SOAP/TCP
- SOAP over TCP transport enables highly efficient transmission of SOAP messages by using FastInfoset.
Transport support in Metro is extensible. There are other transports available as well, including the in-VM transport, JMS transport, SMTP transport, etc.
Reliability, in Metro, ensures that the underlying system is able to recover from failures caused by messages that are lost or misordered in transit. Recovery is handled by the underlying system without involvement of consumer or provider application code.
Interoperable reliability is achieved by implementing the WS-ReliableMessaging specification. Turning on reliability, in Metro, when developing a web service, is simply a checkbox in a reliability panel in NetBeans as shown in the following screenshot.
Atomic transactions are a well-known means to ensure that all operations within a transaction boundary succeed or fail in a consistent manner. If even one operation fails then all other operations are aborted. Transactional support has been available in Java Enterprise Edition for a number of years on IIOP invocations. Metro enables transactional support for web services.
Interoperable atomic transactions are enabled, in Metro, by implementing the WS-Coordination and WS-AtomicTransactions specifications.
Web services, until now, have relied on transport-based security such as SSL to provide point-to-point security. Metro implements the WS-Security specification to provide interoperable message content integrity and confidentiality, even in the presence of intermediaries. In other words, WS-Security does not rely on transport-based security. WS-Security is a security option provided by Metro besides existing transport security which still may be used. Metro also provides an implementation of the WS-Trust specification as a means for issuing, renewing, and validating security tokens used by WS-Security, and to establish and broker trust relationships.
The core of Metro implements the JAX-WS API and serves as the foundation where all the higher-level features plugs in. The extensibility in this layer enables "pay as you go" model, where you'll only pay the performance/complexity price for features that you use.
The core also provides the basic interoperability features, such as WS-I Basic Profile, WS-I Attachments Profile, and WS-Addressing.
Metro builds on top of libraries that are independently reusable outside the context of web services. Those includes:
- JAXB RI for the databinding layer
- SAAJ for raw DOM access to SOAP messages
- Woodstox for efficient XML parsing
- XML stream buffer for efficient infoset buffering
Metro integrates seamlessly with Spring, which allows developers to take advantage of Spring features and reduce learning overhead at the same time. More...
Metro comes with a lot of tools to make you productive.
- a NetBeans plugin makes it a breeze to develop web services. Watch the screen casts for more.
- Maven2 plugins for using Metro from Maven-based projects.
- Ant tasks for Ant based projects.
Metro can be used to develop RESTful web services that do not use SOAP, or JSON service that do not use XML. Metro lets you write your program once and expose it in all these different ways.






