Nikos Maravitsas

About Nikos Maravitsas

Nikos has graduated from the Department of Informatics and Telecommunications of The National and Kapodistrian University of Athens. Currently, his main interests are system’s security, parallel systems, artificial intelligence, operating systems, system programming, telecommunications, web applications, human – machine interaction and mobile development.

JAX-WS Web Services On Tomcat

In this tutorial we are going to see how to deploy JAX-WS Web Services on Tomcat. For this tutorial we are going to use Eclipse Eclipse 4.3 Kepler, which will also help us to construct the necessary WAR file for the Web Application.

In order to deploy a Web Service on Tomcat one should follow these steps:

  1. Frist of all you have to download Apache Tomcat.
  2. Copy JAX-WS RI jars in TOMCAT_HOME/lib folder
  3. Create a Dynamic Web Application in Eclipse.
  4. Create a JAX-WS Endpoint (Web Service interface, and Web Service implementation).
  5. Create a sun-jaxws.xml to define the Web Service implemenation class.
  6. Create a web.xml to describe the structure of the web project.
  7. Export WAR file from Eclipse and copy it to TOMCAT_HOME/webapps folder.
  8. Start Tomcat.

1. JAX-WS Dependencies in Tomcat

Tomcat will need some jars in order to deploy a JAX-WS Web Service. You have to go to : http://jax-ws.java.net/ and download JAX-WS RI library. Unzip the folder and copy the jars in TOMCAT_HOME/lib folder. If you don’t want to copy the complete library these are the jars that are necessary:

  • gmbal-api-only.jar
  • jaxb-impl.jar
  • jaxws-api.jar
  • jaxws-rt.jar
  • management-api.jar
  • policy.jar
  • stax-ex.jar
  • streambuffer.jar

2. Create a Dyncamic Web Project in Eclipse

Open Eclipse IDE and go to File -> New -> Project -> Web -> Dynamic Web Project :

create-project

Then create a Project with name JAX-WS-Tomcat.

3. Service Endpoint

In order to create our Web Service Endpoint:

  • First you have to create a Web Service Endpoint Interface. This interface will contain the declerations of all the methods you want to include in the Web Service.
  • Then you have to create a class that actually implements the above interface, which will be your Endpoint implementation.

Web Service Endpoint Interface

WebServiceInterface.java:

package com.javacodegeeks.enterprise.ws;

import javax.jws.WebMethod;
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;
import javax.jws.soap.SOAPBinding.Style;

@WebService
@SOAPBinding(style = Style.RPC)
public interface WebServiceInterface {

	@WebMethod
	String printMessage();

}

Web Service Endpoint Implementation

WebServiceImpl.java:

package com.javacodegeeks.enterprise.ws;

import javax.jws.WebService;

@WebService(endpointInterface = "com.javacodegeeks.enterprise.ws.WebServiceInterface")
public class WebServiceImpl implements WebServiceInterface{

	@Override
	public String printMessage() {
		return "Hello from Java Code Geeks Server";
	}

}

4. Create the web.xml file

Go to WebContent/WEB-INF folder and create a new XML file .This is a classic web.xml file to deploy a Web Service.

web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, 
Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/j2ee/dtds/web-app_2_3.dtd">

<web-app>
	<listener>
		<listener-class>
			com.sun.xml.ws.transport.http.servlet.WSServletContextListener
		</listener-class>
	</listener>
	<servlet>
		<servlet-name>sayhello</servlet-name>
		<servlet-class>
			com.sun.xml.ws.transport.http.servlet.WSServlet
		</servlet-class>
		<load-on-startup>1</load-on-startup>
	</servlet>
	<servlet-mapping>
		<servlet-name>sayhello</servlet-name>
		<url-pattern>/sayhello</url-pattern>
	</servlet-mapping>
	<session-config>
		<session-timeout>30</session-timeout>
	</session-config>
</web-app>

5. Create sun-jaxws.xml file.

You have to define the Service Endpoint Implementation class as the endpoint of your project, along with the URL pattern of the Web Service. Go to WebContent/WEB-INF folder and create a new XML file

sun-jaxws.xml:

<?xml version="1.0" encoding="UTF-8"?>
<endpoints xmlns="http://java.sun.com/xml/ns/jax-ws/ri/runtime"
	version="2.0">
	<endpoint name="WebServiceImpl"
		implementation="com.javacodegeeks.enterprise.ws.WebServiceImpl"
		url-pattern="/sayhello" />
</endpoints>

You can find more info in the JAX-WS Documentation.

This is the Eclipse Project Structure:

project-structure

6. Export WAR file

Now, go to the Package explorer and Right Click on the Project -> Export -> WAR file :

export-war

Now you have to save the WAR file:

war-export

After exporting the WAR file you have to copy it to TOMCAT_HOME/webapps folder. There are quite a few ways to create the WAR file. You can use Maven, Ant, or even the jar command line tool.

Now you can start Tomcat. Then put the following URL in your Web Browser :

http://localhost:8080/JAX-WS-Tomcat/sayhello

If everything is ok this is what you should get:

web-service-deployed

Now you can create a consumer of the Web Service like we did in previous tutorials like JAX-WS Hello World Example – RPC Style.

This was an example on how to deploy JAX-WS Web Services on Tomcat. Download the Eclipse Project of this example : JAX-WS-Tomcat.zip

Do you want to know how to develop your skillset to become a Java Rockstar?

Subscribe to our newsletter to start Rocking right now!

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

JPA Mini Book

Learn how to leverage the power of JPA in order to create robust and flexible Java applications. With this Mini Book, you will get introduced to JPA and smoothly transition to more advanced concepts.

JVM Troubleshooting Guide

The Java virtual machine is really the foundation of any Java EE platform. Learn how to master it with this advanced guide!

Given email address is already subscribed, thank you!
Oops. Something went wrong. Please try again later.
Please provide a valid email address.
Thank you, your sign-up request was successful! Please check your e-mail inbox.
Please complete the CAPTCHA.
Please fill in the required fields.
Examples Java Code Geeks and all content copyright © 2010-2014, Exelixis Media Ltd | Terms of Use | Privacy Policy | Contact
All trademarks and registered trademarks appearing on Examples Java Code Geeks are the property of their respective owners.
Java is a trademark or registered trademark of Oracle Corporation in the United States and other countries.
Examples Java Code Geeks is not connected to Oracle Corporation and is not sponsored by Oracle Corporation.
Do you want to know how to develop your skillset and become a ...
Java Rockstar?

Subscribe to our newsletter to start Rocking right now!

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

Get ready to Rock!
You can download the complementary eBooks using the links below:
Close