Home » Enterprise Java » rest » resteasy » Creating JAX-RS web service using RESTEasy Example

About Alvin Reyes

Alvin Reyes
Alvin has an Information Technology Degree from Mapua Institute of Technology. During his studies, he was already heavily involved in a number of small to large projects where he primarily contributes by doing programming, analysis design. After graduating, he continued to do side projects on Mobile, Desktop and Web Applications.

Creating JAX-RS web service using RESTEasy Example

Introduction

RESTEasy is a JBoss Project and an implementation of JAX-RS specification.  It’s simplified nature made a huge noise on the backend developers community and to this day, one of the widely used JAX-Rs implementation. How easy is it? Let’s find out.

What are we doing?

We are doing a step by step guide on how to create a RESTEasy service.
 
 
 

1. Create a webapp using Maven and plug in the RESTEasy dependency.

We need to add the dependency first on your web app.

pom.xml

<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.javacodegeeks.areyes</groupId>
	<artifactId>resteasy-sample</artifactId>
	<packaging>war</packaging>
	<version>0.0.1-SNAPSHOT</version>
	<name>resteasy-sample Maven Webapp</name>
	<url>http://maven.apache.org</url>
	<repositories>
	   <repository>
		  <id>JBoss repository</id>
		  <url>https://repository.jboss.org/nexus/content/groups/public-jboss/</url>
	   </repository>
	</repositories>
	
	<dependencies>
		<dependency>
			<groupId>org.jboss.resteasy</groupId>
			<artifactId>resteasy-jaxrs</artifactId>
			<version>2.2.1.GA</version>
		</dependency>
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>3.8.1</version>
			<scope>test</scope>
		</dependency>
	</dependencies>
	<build>
		<finalName>resteasy-sample</finalName>
	</build>
</project>

2. Additional configuration on the webapp

We also need to put additional configurations on the web.xml file as we need the app to recognize our service.

web.xml

	
 <!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>Archetype Created Web Application</display-name>
  
  <!-- Auto scan REST service -->
	<context-param>
		<param-name>resteasy.scan</param-name>
		<param-value>true</param-value>
	</context-param>
 
	<!-- this need same with resteasy servlet url-pattern -->
	<context-param>
		<param-name>resteasy.servlet.mapping.prefix</param-name>
		<param-value>/rservices</param-value>
	</context-param>
 
	<listener>
		<listener-class>
			org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap
		</listener-class>
	</listener>
 
	<servlet>
		<servlet-name>resteasy-servlet</servlet-name>
		<servlet-class>
			org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher
		</servlet-class>
	</servlet>
 
	<servlet-mapping>
		<servlet-name>resteasy-servlet</servlet-name>
		<url-pattern>/rservices/*</url-pattern>
	</servlet-mapping>
	
</web-app>

3. Create the service

The fun part! Let’s create the service!

CustomerRestService.java

package com.javacodegeeks.areyes;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.core.Response;
 
@Path("/customer")
public class CustomerRestService {
 
	@GET
	@Path("/printmessage/{param}")
	public Response printMessage(@PathParam("param") String msg) {
 
		String result = "Restful Return! : " + msg;
 
		return Response.status(200).entity(result).build();
 
	}
 
}

As it can be seen above, there’s a bunch of Annotations that we used. These annotations are crucial as it allows the JVM to categorize this source code to have a configuration injected to it. The following annotations are described below:

  • @Path – The endpoint url path.
  • @Get – This means that the method is called using the GET http method.
  • @PathParam – Query parameters passed via the URL.

What I really liked about RESTEasy is that it lives up to it’s name. It’s just plain simple. Just annotate and your service is ready to go!

4. Let’s test it

Deploy your app to a J2EE container and go to:

http://localhost:8080/resteasy-sample/rservice/customer/printmessage/<your message>

Figure 1: RESTeasy sample output

Download the Eclipse Project

This was an example of creating a JAX-RS compliant web service using RESTEasy

Download
You can download the full source code of this example here: resteasy-sample.zip
(No Ratings Yet)
1 Comment Views Tweet it!

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

 

1
Leave a Reply

avatar
1 Comment threads
0 Thread replies
0 Followers
 
Most reacted comment
Hottest comment thread
1 Comment authors
sobia aijaz Recent comment authors
  Subscribe  
newest oldest most voted
Notify of
sobia aijaz
Guest
sobia aijaz

i deployed ur war, and got this error

Message /resteasy-sample/rservice/customer/printmessage/message

Description The origin server did not find a current representation for the target resource or is not willing to disclose that one exists.

Apache Tomcat/8.5.42

any ideas?