

{"id":20378,"date":"2018-07-08T04:10:30","date_gmt":"2018-07-08T04:10:30","guid":{"rendered":"https:\/\/data-flair.training\/blogs\/?p=20378"},"modified":"2019-08-05T11:26:23","modified_gmt":"2019-08-05T05:56:23","slug":"spring-web-services","status":"publish","type":"post","link":"https:\/\/data-flair.training\/blogs\/spring-web-services\/","title":{"rendered":"Spring Web Services Tutorial For Beginners | Spring WS Integration"},"content":{"rendered":"<h2>1. Objective<\/h2>\n<p>In our previous Spring Framework tutorial, we studied\u00a0<a href=\"https:\/\/data-flair.training\/blogs\/spring-dependency-injection\/\"><strong>Bean Definition Inheritance<\/strong><\/a>. Today, in this article, we will learn about the Spring Web services. Moreover, we will see the features along with a working example of Spring Web Services. Along with this, we will discuss Architecture of web service in<a href=\"https:\/\/data-flair.training\/blogs\/spring-framework-tutorial\/\"><strong> Spring Framework<\/strong><\/a>.<br \/>\nSo, let&#8217;s start Spring Web Services.<\/p>\n<div id=\"attachment_20444\" style=\"width: 1211px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/07\/Spring-Web-Services-01.jpg\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-20444\" class=\"wp-image-20444 size-full\" src=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/07\/Spring-Web-Services-01.jpg\" alt=\"Spring Web Services Tutorial For Beginners | Spring WS Integration\" width=\"1201\" height=\"635\" srcset=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/07\/Spring-Web-Services-01.jpg 1201w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/07\/Spring-Web-Services-01-150x79.jpg 150w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/07\/Spring-Web-Services-01-300x159.jpg 300w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/07\/Spring-Web-Services-01-768x406.jpg 768w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/07\/Spring-Web-Services-01-1024x541.jpg 1024w\" sizes=\"auto, (max-width: 1201px) 100vw, 1201px\" \/><\/a><p id=\"caption-attachment-20444\" class=\"wp-caption-text\">Spring Web Services Tutorial For Beginners | Spring WS Integration<\/p><\/div>\n<h2>2. What is Spring Web Services?<\/h2>\n<p>The main focus of Spring Webservice is to facilitate contract-first SOAP service development. It provides several ways to create flexible web services which help in manipulate XML payloads. Also, the Spring Web services are Spring based which has concepts like DI and configurations etc. Therefore, before moving forward the readers should have the understanding of <a href=\"https:\/\/data-flair.training\/blogs\/java-tutorial\/\"><strong>Java programming language<\/strong><\/a> and Spring Framework along with working of Eclipse IDE so as to get going with examples.<br \/>\n<a href=\"https:\/\/data-flair.training\/blogs\/beanpostprocessors\/\"><strong>Read about Spring BeanPostProcessors &#8211; Latest Tutorial 2018<\/strong><\/a><\/p>\n<h2>3. Features of Spring Web Services<\/h2>\n<p>Some of the notable features of Spring Web services:<\/p>\n<div id=\"attachment_20439\" style=\"width: 1211px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/07\/Spring-WS-Features-01.jpg\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-20439\" class=\"wp-image-20439 size-full\" src=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/07\/Spring-WS-Features-01.jpg\" alt=\"Features of Spring Web Services\" width=\"1201\" height=\"635\" srcset=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/07\/Spring-WS-Features-01.jpg 1201w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/07\/Spring-WS-Features-01-150x79.jpg 150w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/07\/Spring-WS-Features-01-300x159.jpg 300w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/07\/Spring-WS-Features-01-768x406.jpg 768w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/07\/Spring-WS-Features-01-1024x541.jpg 1024w\" sizes=\"auto, (max-width: 1201px) 100vw, 1201px\" \/><\/a><p id=\"caption-attachment-20439\" class=\"wp-caption-text\">Features of Spring Web Services<\/p><\/div>\n<ul>\n<li><strong>Spring-based configurations<\/strong><\/li>\n<\/ul>\n<p>As you know Spring Web services uses Spring Application contexts for its configurations having the very similar architecture to that of Spring MVC framework.<\/p>\n<ul>\n<li><strong>XML mapping to objects<\/strong><\/li>\n<\/ul>\n<p>The XML based requests can be mapped to any of the objects using info from SOAP Action header, Message Payload etc.<\/p>\n<ul>\n<li><strong>Multiple API Support to parse XML<\/strong><\/li>\n<\/ul>\n<p>Apart from JAXP APIs to parse XML requests other libraries such as don4j or XOM etc. are also supported by Spring Web services.<\/p>\n<ul>\n<li><strong>Support for Acegi security<\/strong><\/li>\n<\/ul>\n<p>With the Spring Webservice implementation of WS-security you can sign, encrypt, decrypt SOAP messages and authenticate them.<br \/>\n<a href=\"https:\/\/data-flair.training\/blogs\/spring-bean-scope\/\"><strong>Let&#8217;s Discuss\u00a05 Major Types of Scope in Spring<\/strong><\/a><\/p>\n<h2>4. Architecture of Spring Web Services<\/h2>\n<p>The components of the architecture are described as follows:<\/p>\n<div id=\"attachment_20441\" style=\"width: 1211px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/07\/Spring-Web-Services-Architecture.jpg\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-20441\" class=\"wp-image-20441 size-full\" src=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/07\/Spring-Web-Services-Architecture.jpg\" alt=\"Architecture of Spring Web services\" width=\"1201\" height=\"635\" srcset=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/07\/Spring-Web-Services-Architecture.jpg 1201w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/07\/Spring-Web-Services-Architecture-150x79.jpg 150w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/07\/Spring-Web-Services-Architecture-300x159.jpg 300w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/07\/Spring-Web-Services-Architecture-768x406.jpg 768w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/07\/Spring-Web-Services-Architecture-1024x541.jpg 1024w\" sizes=\"auto, (max-width: 1201px) 100vw, 1201px\" \/><\/a><p id=\"caption-attachment-20441\" class=\"wp-caption-text\">Architecture of Spring Web services<\/p><\/div>\n<ul>\n<li><strong>Spring-WS core<\/strong><\/li>\n<\/ul>\n<p>It is the primary module of the Spring Web services architecture. It provides Central interfaces like SoapMessage and WebServiceMessage, the server side framework and support classes to implement \u2018web service endpoints.<\/p>\n<ul>\n<li><strong>Spring-WS Support<\/strong><\/li>\n<\/ul>\n<p>This module is responsible for providing support for Java Messaging Services, emails etc.<\/p>\n<ul>\n<li><strong>Spring-WS Security<\/strong><\/li>\n<\/ul>\n<p>This module provides WS-Security implementation with core Webservice module integration. Using this you can add principal tokens, sign, encrypt and decrypt SOAP messages.<\/p>\n<div id=\"attachment_20442\" style=\"width: 583px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/07\/springWebservices-1.jpg\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-20442\" class=\"wp-image-20442 size-full\" src=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/07\/springWebservices-1.jpg\" alt=\"Architecture of Spring Web services\" width=\"573\" height=\"337\" srcset=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/07\/springWebservices-1.jpg 573w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/07\/springWebservices-1-150x88.jpg 150w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/07\/springWebservices-1-300x176.jpg 300w\" sizes=\"auto, (max-width: 573px) 100vw, 573px\" \/><\/a><p id=\"caption-attachment-20442\" class=\"wp-caption-text\">Spring Web Services &#8211;\u00a0Architecture &amp; Components<\/p><\/div>\n<ul>\n<li><strong>Spring XML<\/strong><\/li>\n<\/ul>\n<p>This module is responsible for providing XML support classes for Spring Web services and it is internally used by Spring-WS framework.<\/p>\n<ul>\n<li><strong>Spring-OXM<\/strong><\/li>\n<\/ul>\n<p>This module is for providing support classes for XML vs Object mapping.<br \/>\n<a href=\"https:\/\/data-flair.training\/blogs\/spring-bean-life-cycle\/\"><strong>Follow this link to know about the Spring Bean Life Cycle\u00a0<\/strong><\/a><\/p>\n<h2>5. Spring Web Service Example<\/h2>\n<p>Now after understanding the Spring WS along with its features, you will see a working example.<br \/>\nYou will see a simple Spring WS application which exposes a web service method to book a leave in the HR portal.<br \/>\nSince the Spring Web services use contract first approach which means you should have XML structures ready before using Java-based code.<br \/>\nSo, you will now define a LeaveRequest object having Leave and Employee as sub-objects.<br \/>\n<strong>Leave.xml<\/strong><\/p>\n<pre class=\"EnlighterJSRAW\">&lt;Leave xmlns = \"http:\/\/example.com\/hr\/schemas\"&gt;\r\n\u00a0\u00a0 &lt;StartDate&gt;2018-06-23&lt;\/StartDate&gt;\r\n\u00a0\u00a0 &lt;EndDate&gt;2018-06-27&lt;\/EndDate&gt;\r\n&lt;\/Leave&gt;<\/pre>\n<p><strong>Employee.xml<\/strong><\/p>\n<pre class=\"EnlighterJSRAW\">&lt;Employee xmlns = \"http:\/\/example.com\/hr\/schemas\"&gt;\u00a0\u00a0 &lt;Number&gt;404&lt;\/Number&gt;\u00a0\u00a0 &lt;FirstName&gt;Mahesh&lt;\/FirstName&gt;\u00a0\u00a0 &lt;LastName&gt;Parashar&lt;\/LastName&gt;&lt;\/Employee&gt;<\/pre>\n<p><strong>LeaveRequest.xml<\/strong><\/p>\n<pre class=\"EnlighterJSRAW\">&lt;LeaveRequest xmlns = \"http:\/\/example.com\/hr\/schemas\"&gt;\u00a0\u00a0 &lt;Leave&gt;\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;StartDate&gt;2018-06-23&lt;\/StartDate&gt;\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;EndDate&gt;2018-07-27&lt;\/EndDate&gt;\u00a0\u00a0 &lt;\/Leave&gt;\u00a0\u00a0 \u00a0\u00a0\u00a0&lt;Employee&gt;\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;Number&gt;404&lt;\/Number&gt;\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;FirstName&gt;Mahesh&lt;\/FirstName&gt;\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;LastName&gt;Parashar&lt;\/LastName&gt;\u00a0\u00a0 &lt;\/Employee&gt;&lt;\/LeaveRequest&gt;<\/pre>\n<p><strong>\u00a0Hr.xsd<\/strong><\/p>\n<pre class=\"EnlighterJSRAW\">&lt;xs:schema xmlns:xs = \"http:\/\/www.w3.org\/2001\/XMLSchema\"\u00a0\u00a0 xmlns:hr = \"http:\/\/example.com\/hr\/schemas\"\u00a0\u00a0 elementFormDefault = \"qualified\"\u00a0\u00a0 targetNamespace = \"http:\/\/example.com\/hr\/schemas\"&gt;\u00a0\u00a0 \u00a0\u00a0\u00a0&lt;xs:element name = \"LeaveRequest\"&gt;\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;xs:complexType&gt;\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;xs:all&gt;<\/pre>\n<pre class=\"EnlighterJSRAW\">\u00a0\u00a0\u00a0 &lt;xs:element name = \"Leave\" type = \"hr:LeaveType\"\/&gt;\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;xs:element name = \"Employee\" type = \"hr:EmployeeType\"\/&gt;\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;\/xs:all&gt;\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;\/xs:complexType&gt;\u00a0\u00a0 &lt;\/xs:element&gt;\u00a0\u00a0 \u00a0\u00a0\u00a0&lt;xs:complexType name = \"LeaveType\"&gt;\u00a0\u00a0 \u00a0\u00a0\u00a0&lt;xs:sequence&gt;\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;xs:element name = \"StartDate\" type = \"xs:date\"\/&gt;\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;xs:element name = \"EndDate\" type = \"xs:date\"\/&gt;\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;\/xs:sequence&gt;\u00a0\u00a0 &lt;\/xs:complexType&gt;\u00a0\u00a0 \u00a0\u00a0\u00a0&lt;xs:complexType name = \"EmployeeType\"&gt;\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;xs:sequence&gt;\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;xs:element name = \"Number\" type = \"xs:integer\"\/&gt;\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;xs:element name = \"FirstName\" type = \"xs:string\"\/&gt;\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;xs:element name = \"LastName\" type = \"xs:string\"\/&gt;\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;\/xs:sequence&gt;\u00a0\u00a0 &lt;\/xs:complexType&gt;&lt;\/xs:schema&gt;<\/pre>\n<div id=\"attachment_20440\" style=\"width: 1211px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/07\/Spring-WS-Example-01.jpg\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-20440\" class=\"wp-image-20440 size-full\" src=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/07\/Spring-WS-Example-01.jpg\" alt=\"Example of Spring Web Services\" width=\"1201\" height=\"635\" srcset=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/07\/Spring-WS-Example-01.jpg 1201w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/07\/Spring-WS-Example-01-150x79.jpg 150w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/07\/Spring-WS-Example-01-300x159.jpg 300w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/07\/Spring-WS-Example-01-768x406.jpg 768w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/07\/Spring-WS-Example-01-1024x541.jpg 1024w\" sizes=\"auto, (max-width: 1201px) 100vw, 1201px\" \/><\/a><p id=\"caption-attachment-20440\" class=\"wp-caption-text\">Spring Web Service Example<\/p><\/div>\n<h4>a. Project Creation<\/h4>\n<p>Now open the command console and go to directory C:\\MVN and execute the following:<br \/>\nC:\\MVN&gt;mvn archetype:generate -DarchetypeGroupId = org.springframework.ws-DarchetypeArtifactId = spring-ws-archetype -DgroupId = com.example.hr-DartifactId = leaveService<br \/>\n<a href=\"https:\/\/data-flair.training\/blogs\/spring-beans-autowiring\/\"><strong>Have a look Spring Beans Autowiring &#8211; Modes with Eclipse IDE Example<\/strong><\/a><br \/>\nMaven will then start processing and will then create the <strong><a href=\"https:\/\/data-flair.training\/blogs\/java-use-cases\/\">Java Application<\/a><\/strong> Project Structure. Now go to C:\/MVN directory you will see a project named leaveService. There update the pom.xml and add java files HumanResourceService and HumanResourceServiceImpl in the folder:<br \/>\n<strong>C:\\MVN\\leaveService\\src\\main\\java\\com\\example\\hr\\service<\/strong><br \/>\nAfter this is done open the folder <strong>C:\\MVN\\leaveService\\src\\main\\java\\com\\example\\hr\\ws<\/strong> and add LeaveEndpoint.java in it.<u>\u00a0<\/u><br \/>\n<strong>Pom.xml<\/strong><\/p>\n<pre class=\"EnlighterJSRAW\">&lt;?xml version = \"1.0\" encoding = \"UTF-8\"?&gt;\r\n&lt;project xmlns = \"http:\/\/maven.apache.org\/POM\/4.0.0\"\r\n\u00a0 \u00a0xmlns:xsi = \"http:\/\/www.w3.org\/2001\/XMLSchema-instance\"\r\n\u00a0\u00a0 xsi:schemaLocation = \"http:\/\/maven.apache.org\/POM\/4.0.0\r\n\u00a0\u00a0 http:\/\/maven.apache.org\/maven-v4_0_0.xsd\"&gt;\u00a0\r\n\u00a0\u00a0 &lt;modelVersion&gt;4.0.0&lt;\/modelVersion&gt;\r\n\u00a0\u00a0 &lt;groupId&gt;com.example.hr&lt;\/groupId&gt;\r\n\u00a0\u00a0 &lt;artifactId&gt;leaveService&lt;\/artifactId&gt;\r\n\u00a0\u00a0 &lt;packaging&gt;war&lt;\/packaging&gt;\r\n\u00a0\u00a0 &lt;version&gt;1.0-SNAPSHOT&lt;\/version&gt;\r\n\u00a0\u00a0 &lt;name&gt;leaveService Spring-WS Application&lt;\/name&gt;\r\n\u00a0\u00a0 &lt;url&gt;http:\/\/www.springframework.org\/spring-ws&lt;\/url&gt;\u00a0\r\n\u00a0\u00a0 &lt;build&gt;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;finalName&gt;leaveService&lt;\/finalName&gt;\r\n\u00a0\u00a0 &lt;\/build&gt;\u00a0\u00a0\r\n\u00a0\u00a0 &lt;dependencies&gt;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;dependency&gt;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;groupId&gt;org.springframework.ws&lt;\/groupId&gt;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;artifactId&gt;spring-ws-core&lt;\/artifactId&gt;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;version&gt;2.4.0.RELEASE&lt;\/version&gt;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;\/dependency&gt;\u00a0\u00a0\u00a0\u00a0\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;dependency&gt;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;groupId&gt;jdom&lt;\/groupId&gt;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;artifactId&gt;jdom&lt;\/artifactId&gt;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;version&gt;1.0&lt;\/version&gt;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;\/dependency&gt;\u00a0\u00a0\u00a0\u00a0\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;dependency&gt;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;groupId&gt;jaxen&lt;\/groupId&gt;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;artifactId&gt;jaxen&lt;\/artifactId&gt;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;version&gt;1.1&lt;\/version&gt;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;\/dependency&gt;\u00a0\u00a0\u00a0\u00a0\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;dependency&gt;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;groupId&gt;wsdl4j&lt;\/groupId&gt;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;artifactId&gt;wsdl4j&lt;\/artifactId&gt;\r\n  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;version&gt;1.6.2&lt;\/version&gt;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;\/dependency&gt;\r\n\u00a0\u00a0 &lt;\/dependencies&gt;\r\n&lt;\/project&gt;<\/pre>\n<p><strong>HumanResourceService.java<\/strong><\/p>\n<pre class=\"EnlighterJSRAW\">package com.example.hr.service;\r\nimport java.util.Date;\r\npublic interface HumanResourceService {\r\n\u00a0\u00a0 void bookLeave(Date startDate, Date endDate, String name);\r\n}<\/pre>\n<p><strong>HumanResourceServiceImpl.java<\/strong><\/p>\n<pre class=\"EnlighterJSRAW\">package com.example.hr.service;\r\nimport java.util.Date;\r\nimport org.springframework.stereotype.Service;\r\n@Service\r\npublic class HumanResourceServiceImpl implements HumanResourceService {\r\n\u00a0\u00a0 public void bookLeave(Date startDate, Date endDate, String name) {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 System.out.println(\"Booking holiday for [\" + startDate + \"-\" + endDate + \"]\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 for [\" + name + \"] \");\r\n\u00a0\u00a0 }\r\n}<\/pre>\n<p><strong>LeaveEndpoint.java<\/strong><\/p>\n<pre class=\"EnlighterJSRAW\">package com.example.hr.ws;\r\nimport java.text.SimpleDateFormat;\r\nimport java.util.Date;\r\nimport org.springframework.beans.factory.annotation.Autowired;\r\nimport org.springframework.ws.server.endpoint.annotation.Endpoint;\r\nimport org.springframework.ws.server.endpoint.annotation.PayloadRoot;\r\nimport org.springframework.ws.server.endpoint.annotation.RequestPayload;\r\nimport com.example.hr.service.HumanResourceService;\r\nimport org.jdom.Element;\r\nimport org.jdom.JDOMException;\r\nimport org.jdom.Namespace;\r\nimport org.jdom.xpath.XPath;\r\n@Endpoint\r\npublic class LeaveEndpoint {\r\n\u00a0\u00a0 private static final String NAMESPACE_URI = \"http:\/\/example.com\/hr\/schemas\";\r\n\u00a0\u00a0 private XPath startDateExpression;\r\n\u00a0\u00a0 private XPath endDateExpression;\r\n\u00a0\u00a0 private XPath nameExpression;\r\n\u00a0\u00a0 private HumanResourceService humanResourceService;\r\n\u00a0\u00a0 @Autowired\r\n\u00a0\u00a0 public LeaveEndpoint(HumanResourceService humanResourceService) throws JDOMException {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 this.humanResourceService = humanResourceService;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 Namespace namespace = Namespace.getNamespace(\"hr\", NAMESPACE_URI);\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 startDateExpression = XPath.newInstance(\"\/\/hr:StartDate\");\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 startDateExpression.addNamespace(namespace);\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 endDateExpression = XPath.newInstance(\"\/\/hr:EndDate\");\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 endDateExpression.addNamespace(namespace);\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 nameExpression = XPath.newInstance(\"concat(\/\/hr:FirstName,' ',\/\/hr:LastName)\");\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 nameExpression.addNamespace(namespace);\r\n\u00a0\u00a0 }\r\n\u00a0\u00a0 @PayloadRoot(namespace = NAMESPACE_URI, localPart = \"LeaveRequest\")\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\r\n\u00a0\u00a0 public void handleLeaveRequest(@RequestPayload Element leaveRequest) throws Exception {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 SimpleDateFormat dateFormat = new SimpleDateFormat(\"yyyy-MM-dd\");\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 Date startDate = dateFormat.parse(startDateExpression.valueOf(leaveRequest));\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 Date endDate = dateFormat.parse(endDateExpression.valueOf(leaveRequest));\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 String name = nameExpression.valueOf(leaveRequest);\r\n \u00a0\u00a0\u00a0\u00a0 humanResourceService.bookLeave(startDate, endDate, name);\r\n\u00a0\u00a0 }\r\n}<\/pre>\n<p><strong>\/WEB_INF\/spring-ws-servlet.xml<\/strong><\/p>\n<pre class=\"EnlighterJSRAW\">&lt;beans xmlns = \"http:\/\/www.springframework.org\/schema\/beans\"\r\n\u00a0\u00a0 xmlns:xsi = \"http:\/\/www.w3.org\/2001\/XMLSchema-instance\"\r\n\u00a0\u00a0 xmlns:context = \"http:\/\/www.springframework.org\/schema\/context\"\r\n\u00a0\u00a0 xmlns:sws = \"http:\/\/www.springframework.org\/schema\/web-services\"\r\n\u00a0\u00a0 xsi:schemaLocation = \"http:\/\/www.springframework.org\/schema\/beans\u00a0\r\n\u00a0\u00a0 http:\/\/www.springframework.org\/schema\/beans\/spring-beans-3.0.xsd\r\n\u00a0\u00a0 http:\/\/www.springframework.org\/schema\/web-services\r\n\u00a0\u00a0 http:\/\/www.springframework.org\/schema\/web-services\/web-services-2.0.xsd\r\n\u00a0\u00a0 http:\/\/www.springframework.org\/schema\/context\r\n\u00a0\u00a0 http:\/\/www.springframework.org\/schema\/context\/spring-context-3.0.xsd\"&gt;\r\n\u00a0\u00a0 &lt;context:component-scan base-package = \"com.example.hr\"\/&gt;\r\n\u00a0\u00a0 &lt;bean id = \"humanResourceService\"\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 class = \"com.example.hr.service.HumanResourceServiceImpl\" \/&gt;\r\n\u00a0\u00a0 &lt;sws:annotation-driven\/&gt;\r\n\u00a0\u00a0 &lt;sws:dynamic-wsdl id = \"leave\"\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 portTypeName = \"HumanResource\"\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 locationUri = \"\/leaveService\/\"\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 targetNamespace = \"http:\/\/example.com\/hr\/definitions\"&gt;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;sws:xsd location = \"\/WEB-INF\/hr.xsd\"\/&gt;\r\n\u00a0\u00a0 &lt;\/sws:dynamic-wsdl&gt;\r\n&lt;\/beans&gt;<\/pre>\n<p><strong>\/WEB_INF\/web.xml<\/strong><\/p>\n<pre class=\"EnlighterJSRAW\">&lt;web-app xmlns = \"http:\/\/java.sun.com\/xml\/ns\/j2ee\"\r\n\u00a0\u00a0 xmlns:xsi = \"http:\/\/www.w3.org\/2001\/XMLSchema-instance\"\r\n\u00a0\u00a0 xsi:schemaLocation = \"http:\/\/java.sun.com\/xml\/ns\/j2ee\r\n\u00a0\u00a0 http:\/\/java.sun.com\/xml\/ns\/j2ee\/web-app_2_4.xsd\"\r\n\u00a0\u00a0 version = \"2.4\"&gt;\r\n\u00a0\u00a0 &lt;display-name&gt;Example HR Leave Service&lt;\/display-name&gt;\r\n\u00a0  &lt;servlet&gt;\r\n \u00a0\u00a0\u00a0\u00a0\u00a0 &lt;servlet-name&gt;spring-ws&lt;\/servlet-name&gt;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;servlet-class&gt;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 org.springframework.ws.transport.http.MessageDispatcherServlet\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;\/servlet-class&gt;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;init-param&gt;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;param-name&gt;transformWsdlLocations&lt;\/param-name&gt;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;param-value&gt;true&lt;\/param-value&gt;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;\/init-param&gt;\r\n\u00a0\u00a0 &lt;\/servlet&gt;\r\n\u00a0\u00a0 &lt;servlet-mapping&gt;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;servlet-name&gt;spring-ws&lt;\/servlet-name&gt;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;url-pattern&gt;\/*&lt;\/url-pattern&gt;\r\n\u00a0\u00a0 &lt;\/servlet-mapping&gt;\r\n&lt;\/web-app&gt;<\/pre>\n<p><strong>\/WEB_INF\/hr.wsd<\/strong><\/p>\n<pre class=\"EnlighterJSRAW\">&lt;xs:schema xmlns:xs = \"http:\/\/www.w3.org\/2001\/XMLSchema\"\r\n\u00a0\u00a0 xmlns:hr = \"http:\/\/example.com\/hr\/schemas\"\r\n\u00a0\u00a0 elementFormDefault = \"qualified\"\r\n\u00a0\u00a0 targetNamespace = \"http:\/\/example.com\/hr\/schemas\"&gt;\r\n\u00a0\u00a0 &lt;xs:element name = \"LeaveRequest\"&gt;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;xs:complexType&gt;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;xs:all&gt;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;xs:element name = \"Leave\" type = \"hr:LeaveType\"\/&gt;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;xs:element name = \"Employee\" type = \"hr:EmployeeType\"\/&gt;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;\/xs:all&gt;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;\/xs:complexType&gt;\r\n\u00a0\u00a0 &lt;\/xs:element&gt;\r\n\u00a0\u00a0 &lt;xs:complexType name = \"LeaveType\"&gt;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;xs:sequence&gt;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;xs:element name = \"StartDate\" type = \"xs:date\"\/&gt;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;xs:element name = \"EndDate\" type = \"xs:date\"\/&gt;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;\/xs:sequence&gt;\r\n\u00a0\u00a0 &lt;\/xs:complexType&gt;\r\n\u00a0\u00a0 &lt;xs:complexType name = \"EmployeeType\"&gt;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;xs:sequence&gt;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;xs:element name = \"Number\" type = \"xs:integer\"\/&gt;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;xs:element name = \"FirstName\" type = \"xs:string\"\/&gt;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;xs:element name = \"LastName\" type = \"xs:string\"\/&gt;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;\/xs:sequence&gt;\r\n\u00a0\u00a0 &lt;\/xs:complexType&gt;\r\n&lt;\/xs:schema&gt;<\/pre>\n<h4>b. Project Build<\/h4>\n<p>Now after creating and writing all the code let\u2019s build the project. Open a command console and go to C:\\MVN\\leaveService directory and execute the below command:<\/p>\n<pre class=\"EnlighterJSRAW\">C:\\MVN\\leaveService&gt;mvn clean package<\/pre>\n<p>Maven will start building the project.<br \/>\n<strong><a href=\"https:\/\/data-flair.training\/blogs\/spring-framework-career\/\">Do you the Jobs &amp; Salary Trends of Spring Framework<\/a><\/strong><\/p>\n<h4>c. Import the project in Eclipse<\/h4>\n<p>Following are the steps to import the project in Eclipse:<\/p>\n<ul>\n<li>Open Eclipse application.<\/li>\n<li>Select the option File-&gt;Import.<\/li>\n<li>Click on Maven Projects option and click on the next button.<\/li>\n<li>Select the location of your project.<\/li>\n<li>Click the finish button.<\/li>\n<\/ul>\n<h4>d. Run the project<\/h4>\n<p>Now your project is ready for execution. Right click on an application and use the option Export-&gt;WAR File and save leaveService.war in Tomcat web apps.<br \/>\nStart the Tomcat server and make save you are able to access the other web pages using your browser. Access the URL- <strong>http:\/\/localhost:8080\/leaveService\/leave.wsdl.<\/strong><br \/>\nIf there is no problem with your code the Spring Web application will run and you will see the following message in your URL site with document tree:<br \/>\nThis XML file does not appear to have any style information associated with it.<br \/>\nSo, this was all about\u00a0Spring Web Services. Hope you like our explanation.<\/p>\n<h2>6. Conclusion<\/h2>\n<p>Hence, in this session, you learned about the Spring Framework integration with Web Services and its features. You got the detailed knowledge of Spring Web Services with the help of a working example. This session was a step forward for those developers who need more understanding of the Spring Framework and its integration with others. Still, you have a doubt, feel free to ask in the comment section.<br \/>\nSee Also-\u00a0<strong><a href=\"https:\/\/data-flair.training\/blogs\/spring-boot-cli\/\">Spring Boot CLI <\/a><\/strong><br \/>\n<strong><a href=\"https:\/\/spring.io\/projects\/spring-ws\">For reference<\/a><\/strong><span hidden class=\"__iawmlf-post-loop-links\" data-iawmlf-links=\"[{&quot;id&quot;:1897,&quot;href&quot;:&quot;https:\\\/\\\/spring.io\\\/projects\\\/spring-ws&quot;,&quot;archived_href&quot;:&quot;http:\\\/\\\/web-wp.archive.org\\\/web\\\/20250909210303\\\/https:\\\/\\\/spring.io\\\/projects\\\/spring-ws\\\/&quot;,&quot;redirect_href&quot;:&quot;&quot;,&quot;checks&quot;:[{&quot;date&quot;:&quot;2025-12-10 07:08:34&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-02-02 16:39:09&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-03-05 19:54:01&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-04-04 14:59:32&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-04-11 16:27:45&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-05-24 09:33:06&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-06-20 21:39:20&quot;,&quot;http_code&quot;:200}],&quot;broken&quot;:false,&quot;last_checked&quot;:{&quot;date&quot;:&quot;2026-06-20 21:39:20&quot;,&quot;http_code&quot;:200},&quot;process&quot;:&quot;done&quot;}]\"><\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>1. Objective In our previous Spring Framework tutorial, we studied\u00a0Bean Definition Inheritance. Today, in this article, we will learn about the Spring Web services. Moreover, we will see the features along with a working&#46;&#46;&#46;<\/p>\n","protected":false},"author":5,"featured_media":20444,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[64],"tags":[1090,4641,13388,13389,13390,13392,13393,13394,13979,15461,16313],"class_list":["post-20378","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-spring","tag-architecture-of-spring-web-services","tag-features-of-spring-web-services","tag-spring-ws-example","tag-spring-xml","tag-spring-based-configurations","tag-spring-oxm","tag-spring-ws-security","tag-spring-ws-support","tag-support-for-acegi-security","tag-web-services-in-spring-framework","tag-xml-mapping-to-objects"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.8 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Spring Web Services Tutorial For Beginners | Spring WS Integration - DataFlair<\/title>\n<meta name=\"description\" content=\"Spring web services tutorial step by step,Features of Web service in Spring Framework, Spring web services Architecture,Spring-WS core,Spring WS Integration\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/data-flair.training\/blogs\/spring-web-services\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Spring Web Services Tutorial For Beginners | Spring WS Integration - DataFlair\" \/>\n<meta property=\"og:description\" content=\"Spring web services tutorial step by step,Features of Web service in Spring Framework, Spring web services Architecture,Spring-WS core,Spring WS Integration\" \/>\n<meta property=\"og:url\" content=\"https:\/\/data-flair.training\/blogs\/spring-web-services\/\" \/>\n<meta property=\"og:site_name\" content=\"DataFlair\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/DataFlairWS\/\" \/>\n<meta property=\"article:published_time\" content=\"2018-07-08T04:10:30+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2019-08-05T05:56:23+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/07\/Spring-Web-Services-01.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1201\" \/>\n\t<meta property=\"og:image:height\" content=\"635\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"DataFlair Team\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@DataFlairWS\" \/>\n<meta name=\"twitter:site\" content=\"@DataFlairWS\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"DataFlair Team\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"11 minutes\" \/>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Spring Web Services Tutorial For Beginners | Spring WS Integration - DataFlair","description":"Spring web services tutorial step by step,Features of Web service in Spring Framework, Spring web services Architecture,Spring-WS core,Spring WS Integration","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/data-flair.training\/blogs\/spring-web-services\/","og_locale":"en_US","og_type":"article","og_title":"Spring Web Services Tutorial For Beginners | Spring WS Integration - DataFlair","og_description":"Spring web services tutorial step by step,Features of Web service in Spring Framework, Spring web services Architecture,Spring-WS core,Spring WS Integration","og_url":"https:\/\/data-flair.training\/blogs\/spring-web-services\/","og_site_name":"DataFlair","article_publisher":"https:\/\/www.facebook.com\/DataFlairWS\/","article_published_time":"2018-07-08T04:10:30+00:00","article_modified_time":"2019-08-05T05:56:23+00:00","og_image":[{"width":1201,"height":635,"url":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/07\/Spring-Web-Services-01.jpg","type":"image\/jpeg"}],"author":"DataFlair Team","twitter_card":"summary_large_image","twitter_creator":"@DataFlairWS","twitter_site":"@DataFlairWS","twitter_misc":{"Written by":"DataFlair Team","Est. reading time":"11 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/data-flair.training\/blogs\/spring-web-services\/#article","isPartOf":{"@id":"https:\/\/data-flair.training\/blogs\/spring-web-services\/"},"author":{"name":"DataFlair Team","@id":"https:\/\/data-flair.training\/blogs\/#\/schema\/person\/7f83c342f5d1632d6f7b4b0b0f447823"},"headline":"Spring Web Services Tutorial For Beginners | Spring WS Integration","datePublished":"2018-07-08T04:10:30+00:00","dateModified":"2019-08-05T05:56:23+00:00","mainEntityOfPage":{"@id":"https:\/\/data-flair.training\/blogs\/spring-web-services\/"},"wordCount":988,"commentCount":0,"publisher":{"@id":"https:\/\/data-flair.training\/blogs\/#organization"},"image":{"@id":"https:\/\/data-flair.training\/blogs\/spring-web-services\/#primaryimage"},"thumbnailUrl":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/07\/Spring-Web-Services-01.jpg","keywords":["architecture of Spring Web services","Features of Spring Web Services","Spring WS Example","Spring XML","Spring-based configurations","Spring-OXM","Spring-WS Security","Spring-WS Support","Support for Acegi security","Web Services in Spring Framework","XML mapping to objects"],"articleSection":["Spring Tutorials"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/data-flair.training\/blogs\/spring-web-services\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/data-flair.training\/blogs\/spring-web-services\/","url":"https:\/\/data-flair.training\/blogs\/spring-web-services\/","name":"Spring Web Services Tutorial For Beginners | Spring WS Integration - DataFlair","isPartOf":{"@id":"https:\/\/data-flair.training\/blogs\/#website"},"primaryImageOfPage":{"@id":"https:\/\/data-flair.training\/blogs\/spring-web-services\/#primaryimage"},"image":{"@id":"https:\/\/data-flair.training\/blogs\/spring-web-services\/#primaryimage"},"thumbnailUrl":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/07\/Spring-Web-Services-01.jpg","datePublished":"2018-07-08T04:10:30+00:00","dateModified":"2019-08-05T05:56:23+00:00","description":"Spring web services tutorial step by step,Features of Web service in Spring Framework, Spring web services Architecture,Spring-WS core,Spring WS Integration","breadcrumb":{"@id":"https:\/\/data-flair.training\/blogs\/spring-web-services\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/data-flair.training\/blogs\/spring-web-services\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/data-flair.training\/blogs\/spring-web-services\/#primaryimage","url":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/07\/Spring-Web-Services-01.jpg","contentUrl":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/07\/Spring-Web-Services-01.jpg","width":1201,"height":635,"caption":"Spring Web Services Tutorial For Beginners | Spring WS Integration"},{"@type":"BreadcrumbList","@id":"https:\/\/data-flair.training\/blogs\/spring-web-services\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Blog Home","item":"https:\/\/data-flair.training\/blogs\/"},{"@type":"ListItem","position":2,"name":"Spring Tutorials","item":"https:\/\/data-flair.training\/blogs\/category\/spring\/"},{"@type":"ListItem","position":3,"name":"Spring Web Services Tutorial For Beginners | Spring WS Integration"}]},{"@type":"WebSite","@id":"https:\/\/data-flair.training\/blogs\/#website","url":"https:\/\/data-flair.training\/blogs\/","name":"DataFlair","description":"Learn Today. Lead Tomorrow.","publisher":{"@id":"https:\/\/data-flair.training\/blogs\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/data-flair.training\/blogs\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/data-flair.training\/blogs\/#organization","name":"DataFlair","url":"https:\/\/data-flair.training\/blogs\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/data-flair.training\/blogs\/#\/schema\/logo\/image\/","url":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2016\/07\/Data-Flair.png","contentUrl":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2016\/07\/Data-Flair.png","width":106,"height":48,"caption":"DataFlair"},"image":{"@id":"https:\/\/data-flair.training\/blogs\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/DataFlairWS\/","https:\/\/x.com\/DataFlairWS","https:\/\/www.linkedin.com\/company\/dataflair-web-services-pvt-ltd\/","https:\/\/www.youtube.com\/user\/DataFlairWS"]},{"@type":"Person","@id":"https:\/\/data-flair.training\/blogs\/#\/schema\/person\/7f83c342f5d1632d6f7b4b0b0f447823","name":"DataFlair Team","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/4cf3a74600d131330b8c481d519afd1574093ed89f6d3396a95393ad223eb7cd?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/4cf3a74600d131330b8c481d519afd1574093ed89f6d3396a95393ad223eb7cd?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/4cf3a74600d131330b8c481d519afd1574093ed89f6d3396a95393ad223eb7cd?s=96&d=mm&r=g","caption":"DataFlair Team"},"description":"DataFlair Team creates expert-level guides on programming, Java, Python, C++, DSA, AI, ML, data Science, Android, Flutter, MERN, Web Development, and technology. Our goal is to empower learners with easy-to-understand content. Explore our resources for career growth and practical learning.","url":"https:\/\/data-flair.training\/blogs\/author\/dfteam1\/"}]}},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/posts\/20378","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/comments?post=20378"}],"version-history":[{"count":4,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/posts\/20378\/revisions"}],"predecessor-version":[{"id":66863,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/posts\/20378\/revisions\/66863"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/media\/20444"}],"wp:attachment":[{"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/media?parent=20378"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/categories?post=20378"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/tags?post=20378"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}