diff --git a/spring-soap/pom.xml b/spring-soap/pom.xml
index 9403b70636..d0987329c0 100644
--- a/spring-soap/pom.xml
+++ b/spring-soap/pom.xml
@@ -58,6 +58,28 @@
+
+
Java class for country complex type. + * + *
The following schema fragment specifies the expected content contained within this class. + * + *
+ * <complexType name="country">
+ * <complexContent>
+ * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * <sequence>
+ * <element name="name" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ * <element name="population" type="{http://www.w3.org/2001/XMLSchema}int"/>
+ * <element name="capital" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ * <element name="currency" type="{http://www.baeldung.com/springsoap/gen}currency"/>
+ * </sequence>
+ * </restriction>
+ * </complexContent>
+ * </complexType>
+ *
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "country", propOrder = {
+ "name",
+ "population",
+ "capital",
+ "currency"
+})
+public class Country {
+
+ @XmlElement(required = true)
+ protected String name;
+ protected int population;
+ @XmlElement(required = true)
+ protected String capital;
+ @XmlElement(required = true)
+ @XmlSchemaType(name = "string")
+ protected Currency currency;
+
+ /**
+ * Gets the value of the name property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * Sets the value of the name property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setName(String value) {
+ this.name = value;
+ }
+
+ /**
+ * Gets the value of the population property.
+ *
+ */
+ public int getPopulation() {
+ return population;
+ }
+
+ /**
+ * Sets the value of the population property.
+ *
+ */
+ public void setPopulation(int value) {
+ this.population = value;
+ }
+
+ /**
+ * Gets the value of the capital property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getCapital() {
+ return capital;
+ }
+
+ /**
+ * Sets the value of the capital property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setCapital(String value) {
+ this.capital = value;
+ }
+
+ /**
+ * Gets the value of the currency property.
+ *
+ * @return
+ * possible object is
+ * {@link Currency }
+ *
+ */
+ public Currency getCurrency() {
+ return currency;
+ }
+
+ /**
+ * Sets the value of the currency property.
+ *
+ * @param value
+ * allowed object is
+ * {@link Currency }
+ *
+ */
+ public void setCurrency(Currency value) {
+ this.currency = value;
+ }
+
+}
diff --git a/spring-soap/src/main/java/com/baeldung/springsoap/client/gen/Currency.java b/spring-soap/src/main/java/com/baeldung/springsoap/client/gen/Currency.java
new file mode 100644
index 0000000000..12fdef58c2
--- /dev/null
+++ b/spring-soap/src/main/java/com/baeldung/springsoap/client/gen/Currency.java
@@ -0,0 +1,47 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.3.0
+// See https://javaee.github.io/jaxb-v2/
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2020.04.25 at 03:18:49 PM IST
+//
+
+
+package com.baeldung.springsoap.client.gen;
+
+import javax.xml.bind.annotation.XmlEnum;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * Java class for currency. + * + *
The following schema fragment specifies the expected content contained within this class. + *
+ *
+ * <simpleType name="currency">
+ * <restriction base="{http://www.w3.org/2001/XMLSchema}string">
+ * <enumeration value="GBP"/>
+ * <enumeration value="EUR"/>
+ * <enumeration value="PLN"/>
+ * </restriction>
+ * </simpleType>
+ *
+ *
+ */
+@XmlType(name = "currency")
+@XmlEnum
+public enum Currency {
+
+ GBP,
+ EUR,
+ PLN;
+
+ public String value() {
+ return name();
+ }
+
+ public static Currency fromValue(String v) {
+ return valueOf(v);
+ }
+
+}
diff --git a/spring-soap/src/main/java/com/baeldung/springsoap/client/gen/GetCountryRequest.java b/spring-soap/src/main/java/com/baeldung/springsoap/client/gen/GetCountryRequest.java
new file mode 100644
index 0000000000..5739ee3b96
--- /dev/null
+++ b/spring-soap/src/main/java/com/baeldung/springsoap/client/gen/GetCountryRequest.java
@@ -0,0 +1,71 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.3.0
+// See https://javaee.github.io/jaxb-v2/
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2020.04.25 at 03:18:49 PM IST
+//
+
+
+package com.baeldung.springsoap.client.gen;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * Java class for anonymous complex type. + * + *
The following schema fragment specifies the expected content contained within this class. + * + *
+ * <complexType>
+ * <complexContent>
+ * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * <sequence>
+ * <element name="name" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ * </sequence>
+ * </restriction>
+ * </complexContent>
+ * </complexType>
+ *
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "", propOrder = {
+ "name"
+})
+@XmlRootElement(name = "getCountryRequest")
+public class GetCountryRequest {
+
+ @XmlElement(required = true)
+ protected String name;
+
+ /**
+ * Gets the value of the name property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * Sets the value of the name property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setName(String value) {
+ this.name = value;
+ }
+
+}
diff --git a/spring-soap/src/main/java/com/baeldung/springsoap/client/gen/GetCountryResponse.java b/spring-soap/src/main/java/com/baeldung/springsoap/client/gen/GetCountryResponse.java
new file mode 100644
index 0000000000..ba1ab56cf8
--- /dev/null
+++ b/spring-soap/src/main/java/com/baeldung/springsoap/client/gen/GetCountryResponse.java
@@ -0,0 +1,71 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.3.0
+// See https://javaee.github.io/jaxb-v2/
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2020.04.25 at 03:18:49 PM IST
+//
+
+
+package com.baeldung.springsoap.client.gen;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * Java class for anonymous complex type. + * + *
The following schema fragment specifies the expected content contained within this class. + * + *
+ * <complexType>
+ * <complexContent>
+ * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * <sequence>
+ * <element name="country" type="{http://www.baeldung.com/springsoap/gen}country"/>
+ * </sequence>
+ * </restriction>
+ * </complexContent>
+ * </complexType>
+ *
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "", propOrder = {
+ "country"
+})
+@XmlRootElement(name = "getCountryResponse")
+public class GetCountryResponse {
+
+ @XmlElement(required = true)
+ protected Country country;
+
+ /**
+ * Gets the value of the country property.
+ *
+ * @return
+ * possible object is
+ * {@link Country }
+ *
+ */
+ public Country getCountry() {
+ return country;
+ }
+
+ /**
+ * Sets the value of the country property.
+ *
+ * @param value
+ * allowed object is
+ * {@link Country }
+ *
+ */
+ public void setCountry(Country value) {
+ this.country = value;
+ }
+
+}
diff --git a/spring-soap/src/main/java/com/baeldung/springsoap/client/gen/ObjectFactory.java b/spring-soap/src/main/java/com/baeldung/springsoap/client/gen/ObjectFactory.java
new file mode 100644
index 0000000000..88b27245be
--- /dev/null
+++ b/spring-soap/src/main/java/com/baeldung/springsoap/client/gen/ObjectFactory.java
@@ -0,0 +1,63 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.3.0
+// See https://javaee.github.io/jaxb-v2/
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2020.04.25 at 03:18:49 PM IST
+//
+
+
+package com.baeldung.springsoap.client.gen;
+
+import javax.xml.bind.annotation.XmlRegistry;
+
+
+/**
+ * This object contains factory methods for each
+ * Java content interface and Java element interface
+ * generated in the com.baeldung.springsoap.client.gen package.
+ * An ObjectFactory allows you to programatically
+ * construct new instances of the Java representation
+ * for XML content. The Java representation of XML
+ * content can consist of schema derived interfaces
+ * and classes representing the binding of schema
+ * type definitions, element declarations and model
+ * groups. Factory methods for each of these are
+ * provided in this class.
+ *
+ */
+@XmlRegistry
+public class ObjectFactory {
+
+
+ /**
+ * Create a new ObjectFactory that can be used to create new instances of schema derived classes for package: com.baeldung.springsoap.client.gen
+ *
+ */
+ public ObjectFactory() {
+ }
+
+ /**
+ * Create an instance of {@link GetCountryRequest }
+ *
+ */
+ public GetCountryRequest createGetCountryRequest() {
+ return new GetCountryRequest();
+ }
+
+ /**
+ * Create an instance of {@link GetCountryResponse }
+ *
+ */
+ public GetCountryResponse createGetCountryResponse() {
+ return new GetCountryResponse();
+ }
+
+ /**
+ * Create an instance of {@link Country }
+ *
+ */
+ public Country createCountry() {
+ return new Country();
+ }
+
+}
diff --git a/spring-soap/src/main/java/com/baeldung/springsoap/client/gen/package-info.java b/spring-soap/src/main/java/com/baeldung/springsoap/client/gen/package-info.java
new file mode 100644
index 0000000000..eefed169a8
--- /dev/null
+++ b/spring-soap/src/main/java/com/baeldung/springsoap/client/gen/package-info.java
@@ -0,0 +1,9 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.3.0
+// See https://javaee.github.io/jaxb-v2/
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2020.04.25 at 03:18:49 PM IST
+//
+
+@javax.xml.bind.annotation.XmlSchema(namespace = "http://www.baeldung.com/springsoap/gen", elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED)
+package com.baeldung.springsoap.client.gen;
diff --git a/spring-soap/src/main/resources/countries.wsdl b/spring-soap/src/main/resources/countries.wsdl
new file mode 100644
index 0000000000..2a2eaf05bb
--- /dev/null
+++ b/spring-soap/src/main/resources/countries.wsdl
@@ -0,0 +1,74 @@
+
+