What are the current free and commercial implementations available for Web Services?

What are the differences between JAX-RPC, JAX-WS, JAX-RS, Apache Axis, SAAJ, Apache SOAP, JWSDP, Metro, Jersey and GlassFish??

  • JAX-RPC is a specification/API for Java developers to develop SOAP based interoperable web services. This API is now obsolete.
  • JAX-WS is the successor to JAX-RPC. It requires Java 5.0, and is not backwards-compatible to JAX-RPC. This article describes the high-level differences to JAX-RPC.
  • SAAJ is another specification/API for using SOAP envelopes with or without attachments. It operates on a lower level than JAX-RPC or JAX-WS, both of which will use SOAP envelopes based on SAAJ if needed.
  • Apache Axis is an open source implementation of the Java WS APIs for sending and receiving SOAP messages. Axis 1 supports JAX-RPC and SAAJ, while Axis 2 supports SAAJ and JAX-WS.
  • Apache SOAP was the first SOAP implementation. It is now obsolete, and has been superseded by Apache Axis.
  • Sun JWSDP - Sun Java Webservices Developer Pack, is an implementation of JAX-RPC, SAAJ and various other XML Java technologies. It is now obsolete, and has been superseded by the Metro stack.
  • GlassFish? is the open source JEE reference implementation. As such, it contains implementations of JAX-RS and JAX-WS.
  • Metro is the SOAP stack used in GlassFish?. It supports SAAJ, JAX-WS, WS-Security and other standards.
  • JAX-RS is the standard Java API for RESTful web services.
  • Jersey is the reference implementation of the JAX-RS API, as defined in the JSR-311 standard for RESTful web services.

What is REST?

Where can I find the relevant standards?

How do I get started building a web service? Show me some code!

Some useful code snippets

  • How can I set HTTP headers like SOAPAction or Basic Authentication in my SOAP request? (link)
  • With Axis, how can I access authentication information if I use HTTP Authentication? (link)
  • With Axis, how can I find out which service and operation was invoked? (link)
  • What is the simplest possible Java client for a web service? (link)
  • How do I handle WS-Security UsernameTokens? with WSS4J? (link)

What other sources of information are available particularly for Java Web Services?

Which other software packages help implement Java Web Services?

  • jUDDI (and the obsolete UDDI4j) implement the client and server sides of UDDI, respectively. Scout is an open source JAXR implementation.

  • SOAPUI is an excellent tool for testing web services. It allows to observe SOAP (and REST) traffic in transit, and can also act as a client. It supports WS-Security.

More articles on specific topics