Build RESTful web service and test with Java Client

Build RESTful web service and test with Java Client

This demo application will show you how to create Simple Hello World Application Using JAX-RS and Jersey and test it with java client class.

Note: If you are not familiar with RESTful web service and need depth introduction on it before developing application please read this documentation: RESTful web service introduction

In this example, the method helloWorld() is annotated with @GET and the @Produces(“text/html”) annotation. This method will process HTTP GET requests and produce content in HTML.

Below technology are needed to build application:

  • Eclipse Kepler
  • Java 1.6
  • Tomcat 7.0
  • JAX-RS 1.1
  • Jersey 1.8
  • Maven 3.0

Steps:

  • Create maven project name: FirstRESTfulHelloWorld (If you are not sure how to create maven project in eclipse please follow this tutorial: Create Maven project eclipse)
  • Configure Tomcat server in eclipse (If you are not sure please follow this tutorial: Configure Tomcat server in eclipse)
  • Now create package name: com.javahonk inside src/main/java folder
  • Create class name HelloWorld.java and copy paste below code:
package com.javahonk;

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;

@Path("/user")
public class HelloWorld {

	@GET
	@Path("/helloWorld")
	@Produces(MediaType.TEXT_HTML)
	public String helloWorld() {

		return "<html> " + "<title>" + "Hello World!" + "</title>"+ "<body><h1>" + "Hello World!" + "</body></h1>" + "</html> ";

	}
}

 

  • Now create java client class to test RESTful web service. Create class name RESTfulTestClient.java inside package test and copy paste below code:
package test;

import java.net.URI;

import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.UriBuilder;

import com.sun.jersey.api.client.Client;
import com.sun.jersey.api.client.WebResource;
import com.sun.jersey.api.client.config.ClientConfig;
import com.sun.jersey.api.client.config.DefaultClientConfig;

public class RESTfulTestClient {

	public static void main(String[] args) {
	    ClientConfig config = new DefaultClientConfig();
	    Client client = Client.create(config);
	    WebResource service = client.resource(getBaseURI());
	    System.out.println(service.path("rest/user/helloWorld").accept(MediaType.TEXT_HTML).get(String.class));
	  }

	  private static URI getBaseURI() {
	    return UriBuilder.fromUri("http://localhost:8080/RestFulService/").build();
	  }

}

 

  • Now copy paste below code in your web.xml file:
<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
  <display-name>First RESTful Hello World</display-name>
  <servlet>
		<servlet-name>rest-servlet</servlet-name>
		<servlet-class>
			com.sun.jersey.spi.container.servlet.ServletContainer
		</servlet-class>
		<init-param>
			<param-name>com.sun.jersey.config.property.packages</param-name>
			<param-value>com.javahonk</param-value>
		</init-param>
		<init-param>
			<param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name>
			<param-value>true</param-value>
		</init-param>
		<load-on-startup>1</load-on-startup>
	</servlet>

	<servlet-mapping>
		<servlet-name>rest-servlet</servlet-name>
		<url-pattern>/rest/*</url-pattern>
	</servlet-mapping>

	<welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>

</web-app>

 

  • Copy below maven dependency jar into your pom.xml file:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.javahorn</groupId>
  <artifactId>RestFulService</artifactId>
  <packaging>war</packaging>
  <version>0.0.1-SNAPSHOT</version>
  <name>RestFulService Maven Webapp</name>
  <url>http://maven.apache.org</url>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>com.sun.jersey</groupId>
        <artifactId>jersey-server</artifactId>
        <version>1.8</version>
    </dependency>
    <dependency>
        <groupId>com.sun.jersey</groupId>
        <artifactId>jersey-json</artifactId>
        <version>1.8</version>
    </dependency>  
    <dependency>
	<groupId>com.sun.jersey</groupId>
	<artifactId>jersey-bundle</artifactId>
	<version>1.10-b01</version>
</dependency>  
  </dependencies>
  <build>
    <finalName>RestFulService</finalName>
  </build>
</project>
  • After all steps your project should look as below:

Build RESTful web service and test with Java Client

  • Now refresh and clean your project.
  • Deploy application on tomcat: Right click project –> Run As –> Run on Server
  • Now let’s test this with our java client RESTfulTestClient class. Run java test class: Right click java class –>Run As –> Java application. You will see below on your console. Great our test got successful.

Build RESTful web service and test with Java Client

 

 

download2 Download project: FirstRESTfulHelloWorld

2 thoughts on “Build RESTful web service and test with Java Client

  1. hello,
    thanks for this page.
    i just downloaded ur zip file and imported it into eclipse kelper(after unzipping it).
    once i excute the server.
    when i deploy the proegram on tomcat ; i hace the jsp page but when i click the submit button i have the followiong error
    HTTP Status 500 – Servlet.init() for servlet rest-servlet threw exception

    on the client side(test) when i runon java application.

    xception in thread “main” com.sun.jersey.api.client.UniformInterfaceException: GET http://localhost:8080/RestFulService/rest/user/helloWorld returned a response status of 500 Internal Server Error

    advance thanks

    • For HTTP Status 500 – Servlet.init() for servlet rest-servlet threw exception:
      • Please check your web.xml file if your package is matching if you have created your own package then change name accordingly.

      For Exception in thread “main” com.sun.jersey.api.client.UniformInterfaceException:
      • Because its maven project please check your pom.xml file if all jersey dependency have been added:
      • Also check your web.xml if below is matching:

Leave a Reply

Your email address will not be published. Required fields are marked *