Last edited: 2 Oct 2019
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, and may be dropped from the next JEE version.
- 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 deprecated in favor of 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?
- Compared to SOAP, REST is a lighter-weight and less feature-rich approach to building web services. As such, it does not support the infrastructure built on top of SOAP (like WSDL, UDDI and WS-Security).
- Introduction by Roger L. Costello
- Best Practices by Hao He
- REST versus SOAP - the REST story by William Brogden
- REST versus SOAP - the SOAP story by William Brogden
- I finally get REST. Wow by Tim Ewald
- REST vs. WS-*: A Parable by Elliotte Rusty Harold
- Book RESTful Web Services by Leonard Richardson and Sam Ruby
- JAX-RS (JSR-311): The Java API for RESTful Web Services; available implementations are listed at the top
Where can I find the relevant standards?
- SpecificationUrls lists all major standards
- SOAP introduction
- Using WSDL in SOAP applications
- Article What's new in WDSL 2.0?
How do I get started building a web service? Show me some code!
- Introduction to SOAP and Apache SOAP (Note: Apache SOAP is obsolete)
- Introduction using Axis1, another one
- Introducing JAX-WS 2.0 With the Java SE 6 Platform - part 1
- Many questions are answered in the Apache Axis Wiki
- JAX-WS Web Service Tutorial specifically for JBoss
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?
- JAX-WS articles, FAQ, Wiki and more
- How to run JAX-WS on Tomcat
- JSR-181 - Web Services Metadata for JAX-WS - article
- JAX-RS with Jersey: An Introduction
- JAX-WS and SAAJ are Java APIs that implement SOAP
- JEE Web Services Tutorial - JEE 5, JEE 6, JEE 7
- WebServicesReadingRoom of the Apache WS Project
Which other software packages help implement Java Web Services?
- The Apache Web Services Project has a number of helpful libraries
- jUDDI and 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
- What are WSDL styles and which one should I use: article on IBM DeveloperWorks
- Transferring files over a web service
- Sending SOAP attachments using SAAJ
- Web Services, Opaque Data, and the Attachments Problem - Explore the many possibilities for dealing with opaque data in Web services (including SwA, WS-Attachments and DIME, PASwA, MTOM), and see the problem modeled with a classic childhood toy.
- Understanding Web service interoperability
- Asynchronous operations and Web services: Introduction Part 1 , Part 2, Part 3
- Introduction to HTTP and WS-Security authentication in Web Services: article in JavaRanch Journal, update for Axis 2
- Introduction to WS-Security encryption: article in JavaRanch Journal
- Obstacles to the adoption and successful realization of Service-Oriented Architecture: SOA Antipatterns
- Using explicit and implicit SOAP headers with WSDL