[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.

 

Prerequisites

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;

 

@WebService

public class MyWebService {

     public String myServiceMethod() {

          return "Message From myServiceMethod";

     }

}

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

 

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="MyWebService"

    

          implementation="com.javajee.webservices.soap.MyWebService"

 

          url-pattern="/mws" />

</endpoints>

 

Notes:

  • 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.

 

web.xml

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

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

     xmlns="http://xmlns.jcp.org/xml/ns/javaee"

     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">

     <display-name>Sample</display-name>

     <listener>

                    <listener-class>

                             com.sun.xml.ws.transport.http.servlet.WSServletContextListener

</listener-class>

          </listener>

</web-app>

 

Notes:

  • 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!!!