Enterprise Java

Web service application with JAX-WS and Spring

1. Introduction

It has been a long wait, but I am finally publishing a tutorial on creating the first SOAP based web service application with Spring. JAX-WS (Java API for XML Web Services) is a set of APIs for creating web services in XML format, which we also most commonly call as SOAP based web service, which hope we all are aware of the basic architecture.

2. Implementation

To start with, let’s check out the pom file configuration –


<!-- Spring dependencies -->
<!-- JAX-WS -->


<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         id="WebApp_ID" version="2.5">

Let’s create the Customer entity for our application.


package com.jcombat.entity;
public class Customer {
	private int id;
	private String name;
	public int getId() {
		return id;
	public void setId(int id) {
		this.id = id;
	public String getName() {
		return name;
	public void setName(String name) {
		this.name = name;

Let’s now create the service interface and its corresponding service implementation class.


package com.jcombat.services.customers;
import com.jcombat.entity.Customer;
public interface CustomerService {
	public Customer getCustomerById(String customerId);


package com.jcombat.services.customers;
import com.jcombat.entity.Customer;
public class CustomerServiceImpl implements CustomerService {
	public Customer getCustomerById(String customerId) {
		Customer customer = new Customer();
		return customer;

Below is how the applicationContext should look like.


<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ws="http://jax-ws.dev.java.net/spring/core"
	<bean id="customerService" class="com.jcombat.services.customers.CustomerServiceImpl">
	<bean id="customerEndpoint" class="com.jcombat.ws.CustomerEndpoint">
		<property name="service" ref="customerService" />
	<wss:binding url="/customer">
			<ws:service bean="#customerEndpoint" />

Note that a URL pattern (/customer) is bound to the web service endpoint implementation class (customerEndpoint), as can be seen in the above snippet. Below is how our customerEndpoint bean implementation class looks like.


package com.jcombat.ws;
import javax.jws.WebMethod;
import javax.jws.WebService;
import com.jcombat.entity.Customer;
import com.jcombat.services.customers.CustomerService;
@WebService(serviceName = "customerService")
public class CustomerEndpoint {
	private CustomerService service;
	@WebMethod(exclude = true)
	public void setService(CustomerService service) {
		this.service = service;
	@WebMethod(operationName = "getCustomer")
	public Customer getCustomerById(String customerId) {
		Customer customer = service.getCustomerById(customerId);
		return customer;

Note that @WebService annotation tells the server runtime environment to expose all the public methods of that class as web service methods. If we want to prevent any of the methods to be exposed as web service method, we need to annotation the method with @WebMethod(exclude = true), as can be seen in the above snippet. Similarly if we want to name the web service method to something different from the actual method name specified in the class (getCustomerById()), we need to add an operationName attribute to the @WebMethod annotation.

  • If you face any dependency issues while setting up the project, you can refer this link.

3. Running the application

  • http://localhost:8080/SOAPWebServiceExample/customer?wsdl

Once we hit the above URL, we can see the WSDL content displayed, as can be seen in the below snapshot.


We can also test the endpoint with SOAP UI as well. Create the new SOAP project with the same WSDL location as mentioned above.


4. Download the source code

Reference: Web service application with JAX-WS and Spring from our JCG partner Abhimanyu Prasad at the jCombat blog.

Want to know how to develop your skillset to become a Java Rockstar?

Join our newsletter to start rocking!

To get you started we give you our best selling eBooks for FREE!


1. JPA Mini Book

2. JVM Troubleshooting Guide

3. JUnit Tutorial for Unit Testing

4. Java Annotations Tutorial

5. Java Interview Questions

6. Spring Interview Questions

7. Android UI Design


and many more ....


Receive Java & Developer job alerts in your Area

I have read and agree to the terms & conditions


Abhimanyu Prasad

Abhimanyu is a passionate tech blogger and senior programmer, who has an extensive end-to-end development experience with wide range of technologies. He is the founder and administrator at jCombat.
Notify of

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Inline Feedbacks
View all comments
Back to top button