Howdy Folks. Let’s quickly have a look at creating a SOAP web service client using Apache CXF. While there are a number of other libraries to write the SOAP client, I tend to prefer CXF because of the level of maturity and support.
Let’s look at an example of a public Global Weather Service http://www.webservicex.com/globalweather.asmx
Exploring the Service WSDL
The WSDL (Web service description language) file/URL hosts the metadata of the web service and provides you a contract to communicate and get the results of the web service. The WSDL of the GlobalWeaterService WS can be found at http://www.webservicex.com/globalweather.asmx?WSDL
Generating the generated SOAP Data Models
Apache CXF provides convenient binaries to automatically generate SOAP client and data models to execute the remote web service API’s. Here’s an example of generating the clients and the data models.
For the purpose of this post, we are using CXF v3.1.12 (http://cxf.apache.org/download.html)
Underneath the generated SOAP Clients and Data Models
The generated files by the above CXF utilities generate a set of data models for the request and response objects. They are the JAXB annotated Java Objects that will be used by the CXF underneath to convert to the XML payload your web service expects. Here’s how the above command generates few data models.## Underneath the generated SOAP Client.
The generated SOAP client is a convenient CXF client that can be used directly to access the web service. The generated client is compliant with JAX-WS (JSR 224), the JAVA community standard to develop and define SOAP web service clients.
Putting it all together, Executing the SOAP Web Service Client
Since, most of the work has already been done by the CXF, now its a piece of cake to execute the remote web service. We will use the generated client method passing in the data models with the valid input data. Based on the JAX-WS spec, it also provides convenient endpoints for executing the method directly without building models explicitly.