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

What is the difference to microservices?

While microservices are similar in concept in web services, and often implemented using the same APIs -like JAX-RS in the Java world- their usage is different. Whereas WS are most commonly used for outside consumption (whether as back-end of a web site, or for making services available to customers), microservices are a design means to structure applications internally. They are not accessed from the outside of an organization, or from within a browser. So the difference is in their use, not so much in the underlying technology.

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.
  • Apache CXF is another implementation of JAX-WS and JAX-RS.
  • 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?

  • WSS4J implements WS-Security

  • jUDDI implements UDDI. 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