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, 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?
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 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