Web Services

See Also:

Questions:

  • What is a SOAP Gateway? What are its characteristics and what is it useful for?
  • What are the differences between SOAP 1.1 and SOAP 1.2?

Fundamentals

  • Since it's XML-based, you need to marshal and un-marshal into Java Objects in an inter-operable way.
  • WSDLs
    • Fundamentally, just a collection of definitions of remote interfaces:
      1. A data dictionary (wsdl:types)
      2. A definition of data structures (wsdl:messages)
      3. A definition of behavior (wsdl:portTypes :: Java Interface; wsdl:operations :: Java method)
      4. A definition of a specific transport + specific format (e.g. HTTP+SOAP) for the behavior (all together, a wsdl:binding)
      5. Finally, a definition of a Web Service: a collection of remote methods (wsdl:operations) to operate under a specific wsdl:binding at a specific address.
    • Each of these definition sections have their own name scope. So, you can give a message the same name as a operation.

Current Implementations

  • Apache Axis2 (Apache eXtensible Interaction System)
    • Latest version: 1.4
    • Requirements: JDK 1.4 or better.
    • There is Eclipse support for Axis2: http://www.eclipse.org/webtools/ws/
    • Seems like the OSS front-runner (as of 2008-05-25)

Core Java Technologies

  • JAX-WS
    • Designed to replace JAX-RPC
    • Sun's impl (Glassfish) is "Metro": [https://metro.dev.java.net/]
      • Requires JDK 1.5 or better.
    • JSR-224
    • JAX-WS 2.0 is inclued in JEE 5
    • JAX-WS 2.1 is included in Java 6
  • JAXB
    • Help to define binding between Java Objects and XML
    • JSR-222

Old School

  • JAX-RPC
    • Should use JAX-WS instead for new development.
    • Supports SOAP 1.1
    • supports "rpc/encoded" style messaging (what does this mean?)
    • JSR-101
    • The ONLY option for JDK 1.4
  • Apache Axis
    • Latest news update was 2006.
    • Originally was "SOAP4J" from IBM.
    • Implements both SOAP 1.1 and SOAP 1.2
    • Supports HTTP and JMS as transports.

References

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License