0% found this document useful (0 votes)
332 views11 pages

Consume Spring SOAP Web Services Using Client Application - Part II

This document provides instructions for consuming SOAP web services using a Spring Boot client application. It begins by listing several tutorials on publishing and consuming SOAP web services using Spring frameworks. It then outlines the steps to create a SOAP client, which includes generating domain objects from a WSDL, creating a client class, configuring marshalling/unmarshalling, and running the client to retrieve movie data. Code examples are provided for common classes and configurations needed to setup the SOAP client.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
332 views11 pages

Consume Spring SOAP Web Services Using Client Application - Part II

This document provides instructions for consuming SOAP web services using a Spring Boot client application. It begins by listing several tutorials on publishing and consuming SOAP web services using Spring frameworks. It then outlines the steps to create a SOAP client, which includes generating domain objects from a WSDL, creating a client class, configuring marshalling/unmarshalling, and running the client to retrieve movie data. Code examples are provided for common classes and configurations needed to setup the SOAP client.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 11

Consume Spring SOAP web services

using client application – Part II


 latha  Spring Boot, Web Services  August 3, 2018

In this post, we will learn how to consume SOAP web services by creating a simple client
application. We will use this tutorial : Publish SOAP Web services using Spring Boot – Part 1  to get
WSDL, which is used in our following client application.
Here are list of post on SOAP web services using spring framework

1. Publish SOAP web services – perform CRUD operation and consume SOAP web services
using SOAP UI : We will explore these topic in this post – Publish SOAP Web services using
Spring Boot – Part 1
2. Consume SOAP web services using client application – We learn about this topic in here
3. Exception handling in SOAP web services-Spring SOAP Web services – Add SOAP Fault
Exception handling – Part III
4. Exception handling in CRUD SOAP web services – Spring SOAP Web services – Add SOAP
Fault Exception handling for CRUD operations – Part IV
5. Securing SOAP web services – In upcoming tutorial
6. Testing SOAP web services – In upcoming tutorial

List of Contents
1. Tools and Environment
2. Project Structure
3. Steps to create SOAP Client
4. Download
5. References

1. Tools and Environment


Following tools and environments are used to consume SOAP web services in Spring Boot

 Spring Tool Suite (version: 3.9.4.RELEASE)


 Spring Boot (version: 2.0.4.RELEASE)
 Spring (version: 5.0.3.RELEASE)
 Spring data jpa (version: 2.0.9.RELEASE)
 Java (version: 8)
 MySQL (version: 5.1.46)
 Hibernate (version: 5.2.17.Final)
 Maven (version: 3.5.2)

2. Project Structure
3. Steps to create SOAP Client
1. Create a server application to publish/produce soap web services
1. Run the server application
2. Test WSDL in the web browser ( We need this WSDL location to create client
application)
2. Create a client application to consume SOAP web services
3. Run and test the client application

Step 3.1: Create a server application to publish/produce


soap web services
Follow this tutorial to create an application to produce SOAP web services or download project in
download section in Publish and Consume SOAP Web services using Spring Boot – Part 1

Step 3.1.1: Run the server application


Right click on the project and do Run As -> Spring Boot App. The application will start running at
default port 8080 or run the service (e.g. using mvn spring-boot:run) from its complete directory
Step 3.1.2: Test WSDL in the web browser
Verify that the application is working by visiting http://localhost:8080/ws/movies.wsdl in your browser
 
 

Step 3.2: Create a client application to consume SOAP


web services
Steps to create client application

1. Create a new Spring Starter Project


2. Edit pom.xml to generate domain objects based on a WSDL. Add following dependency and
plugin
1. spring-ws-core
2. maven-jaxb2-plugin
3. Do Maven -> Update Project to generate Java sources classes from WSDL
4. Create a web service client that extends WebServiceGatewaySupport
5. Configuring web service components
1. Spring WS uses Spring Framework’s OXM module which has
the Jaxb2Marshaller to serialize and deserialize XML requests.
6. Make the application executable
Step 3.2.1 – Create a new Spring Starter Project

 
Step 3.2.2: Edit pom.xml to generate domain objects
based on a WSDL
pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>com.javaspringclub</groupId>
<artifactId>SpringBoot_SOAP_Client_Movies</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>

<name>SpringBoot_SOAP_Client_Movies</name>
<description>WebService Example</description>

<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.4.RELEASE</version>
<relativePath /> <!-- lookup parent from repository -->
</parent>

<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-
8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>

<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>

<dependency>
<groupId>org.springframework.ws</groupId>
<artifactId>spring-ws-core</artifactId>
</dependency>

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>

<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>

<plugin>
<groupId>org.jvnet.jaxb2.maven2</groupId>
<artifactId>maven-jaxb2-plugin</artifactId>
<version>0.13.1</version>
<executions>
<execution>
<goals>
<goal>generate</goal>
</goals>
</execution>
</executions>
<configuration>
<schemaLanguage>WSDL</schemaLanguage>

<generatePackage>movies.wsdl</generatePackage>
<schemas>
<schema>
<url>http://localhost:8080/ws/movies.wsdl</url>
</schema>
</schemas>
</configuration>
</plugin>

</plugins>
</build>

</project>

Step 3.2.3: Do Maven -> Update Project to generate Java


sources classes from WSDL
Do maven update after updating pom.xml

Maven plugin will generate java source classes under “com.javaspringclub.gs_ws”. This package
name is specified in pom.xml file
 
Alternatively, running the following command in parent directory, the Java Classes will be generated
in the target/generated-sources/jaxb/<package-name> folder. <package-name> is specified in
the pom.xml file
mvn package

Step 3.2.4: Create a web service client that extends


WebServiceGatewaySupport
MovieClient.java
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import org.springframework.ws.client.core.support.WebServiceGatewaySupport;
import movies.wsdl.GetMovieByIdRequest;
import movies.wsdl.GetMovieByIdResponse;

public class MovieClient extends WebServiceGatewaySupport {

private static final Logger log =


LoggerFactory.getLogger(MovieClient.class);

public GetMovieByIdResponse getMovieById(Long id) {


GetMovieByIdRequest request = new GetMovieByIdRequest();
request.setMovieId(id);

log.info("Requesting Movie By id= " + id);


return (GetMovieByIdResponse)
getWebServiceTemplate().marshalSendAndReceive(request);

Step 3.2.5: Configuring web service components


Spring WS uses Spring Framework’s OXM module which has the Jaxb2Marshaller to serialize and
deserialize XML requests.
SoapClientConfig.java
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.oxm.jaxb.Jaxb2Marshaller;

@Configuration
public class SoapClientConfig {

@Bean
public Jaxb2Marshaller marshaller() {
Jaxb2Marshaller marshaller = new Jaxb2Marshaller();
// this package must match the package in the specified in
// pom.xml
marshaller.setContextPath("movies.wsdl");
return marshaller;
}

@Bean
public MovieClient movieClient(Jaxb2Marshaller marshaller) {
MovieClient client = new MovieClient();
client.setDefaultUri("http://localhost:8080/ws/movies");
client.setMarshaller(marshaller);
client.setUnmarshaller(marshaller);
return client;
}

Step 3.2.6: Make the application executable


This application is packaged up to run from the console and retrieve the data for a given movie id
RunClient.java
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import movies.wsdl.GetMovieByIdResponse;

public class RunClient {

public static void main(String[] args) {


AnnotationConfigApplicationContext context = new
AnnotationConfigApplicationContext(SoapClientConfig.class);
MovieClient client = context.getBean(MovieClient.class);
GetMovieByIdResponse response = client.getMovieById(new Long(103));
System.out.println("response: Movie id="+
response.getMovieType().getMovieId()+", title=" + response.getMovieType().getTitle()
+ ", category="+ response.getMovieType().getCategory());
}

Note: This application only retrieves information of a movie by Id for simplicity. You can implement
rest of CRUD operations by following this example

Step 3.3: Run and test the client application


Run the “RunClient” as Java application and see the results

You might also like