[Lab] Developing Bottum-up SOAP Web Service in Tomcat Container using JAX-WS RI

We did not had to do any extra configurations for deploying our web service class in Glassfish server. This is because Java EE 5 and above compliant application servers such as Glassfish, comply to JSR 109 (Web services 1.2/1.3) and JSR 224 (JAX-WS 2.0/2.1/2.2).

However, to deploy web service on a web container like tomcat, you will need to do some additional steps. These additional steps include creating a a proprietary deployment descriptor file called sun-jaxws.xml, making some entries in the standard deployment descriptor web.xml and placing some JAX-WS jars in the lib folder of Apache Tomcat.



Before trying out this example, you will need to configure Tomcat to work with eclipse as given @ http://javajee.com/configuring-apache-tomcat-with-eclipse.


Getting Started

  • Start the Eclipse (Java EE eclipse configured with Glassfish server)

  • Create a Dynamic Web Project selecting Glassfish server as the Target runtime.


Screenshot: Dynamic Web Project


Web Service class

package com.javajee.webservices.soap;

import javax.jws.WebService;



public class MyWebService {

     public String myServiceMethod() {

          return "Message From myServiceMethod";



Note: This is the same class used for the Glassfish example.



<?xml version="1.0" encoding="UTF-8"?>


<endpoints xmlns="http://java.sun.com/xml/ns/jax-ws/ri/runtime"




     <endpoint name="MyWebService"




          url-pattern="/mws" />




  • Place the file under WEB-INF folder.

  • The <endpoints> element of sun-jaxws.xml contains one or more <endpoint> elements.

  • Each endpoint represents a port in the WSDL.



<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"


     xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"

     id="WebApp_ID" version="3.1">










  • This file has to be present under WEB-INF folder.

  • The WSServletContextListener configured in the web.xml as a listener class parses sun-jaxws.xml and sets up all deployed endpoints.


Dependent Jars

Download JAX-WS RI from https://jax-ws.java.net  and copy below jars to the lib folder of Tomcat:

  • jaxws-rt.jar

  • jaxb-core.jar

  • jaxb-impl.jar

  • streambuffer.jar

  • policy.jar

  • stax-ex.jar

  • gmbal-api-only.jar

  • management-api.jar

  • ha-api.jar

Note: You may also copy all jars from jaxws-ri\lib into tomcat lib directory to save time.


Verifying the service

Once the war (with above contents) is deployed, you can access the url as specified in your sun-jaxws.xml.

In this case it will be: http://localhost:8080/WebServiceTomcatDemo/mws

You should get the result as below.


You may also look into the note on common issues while deploying JAX-WS services in Tomcat.

Search the Web

Custom Search

Searches whole web. Use the search in the right sidebar to search only within javajee.com!!!