Java architectures #4 – SOAP WebServices

SOAP/WebServices were a replacement for CORBA and allowed communication between system regardless of technology like operative system or programming language.

The name “Webservice” was as a commercial term to profit from the rising popularity of the web world but it can be seen as a XML-RPC protocol [3] based on SOAP , and for a while it was the preferred solution for system intercommunication in enterprise applications.

Mind that the term WebServices can also be applied to JSON and Rest services, but here were only focus the SOAP version, that uses XML.

A SOAP/WebService is the combination of thee components:

  • Simple Object Access Protocol (SOAP) – is a messaging protocol specification for exchanging structured information in computer networks, it relies on XML and is most often used with HTTP.[1]
  • Web Services Description Language (WSDL) is an XML to describe the functionality of the web service [2]
  • XML Schema – set of rules to describe XML documents

A web service is a software system designed to support interoperable machine-to-machine interaction over a network. It has an interface described in a machine-processable format (specifically WSDL). Other systems interact with the web service in a manner prescribed by its description using SOAP-messages, typically conveyed using HTTP with an XML serialization in conjunction with other web-related standards.

— W3C, Web Services Glossary

Java WebServices

The main implementation for SOAP/Webservices in the Java world was Java API for XML Web Services (JAX-WS) part of J2EE/Java EE platform, and it’s still supported as in today.

Java WS [4]

JAX-WAS come from JSR 224[5] and it’s initial release was in March 2006.

One the first Java implementations of SOAP Apache Axis, that included a framework, client libraries and a server [6] .

[1] https://en.wikipedia.org/wiki/SOAP

[2] https://en.wikipedia.org
/wiki/Web_Services_Description_Language

[3] https://en.wikipedia.org/wiki/XML-RPC

[4] https://docs.oracle.com/javaee/5/tutorial/doc/bnayn.html

[5] https://www.jcp.org/en/jsr/detail?id=224

[6] https://axis.apache.org/axis/