Rest service Hello World with Restlet


Tools and Technologies used


Helloworld_restlet

Project structure


restlet_hello_world_proj_structure

Step 1

Create a new Maven project with name “RestletHelloWold” in eclipse.

Refer Step 1 in this article for the same.

Step 2

Add the Restlet related dependencies to pom.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<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>RestletHelloWorld</groupId>
  <artifactId>RestletHelloWorld</artifactId>
  <packaging>war</packaging>
  <version>0.0.1-SNAPSHOT</version>
  <name>RestletHelloWorld 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>org.restlet.jee</groupId>
             <artifactId>org.restlet</artifactId>
             <version>2.3.4</version>
      </dependency>
 
     <dependency>
            <groupId>org.restlet.jee</groupId>
            <artifactId>org.restlet.ext.jaxrs</artifactId>
            <version>2.3.2</version>
     </dependency>
 
     <dependency>
           <groupId>org.restlet.jee</groupId>
           <artifactId>org.restlet.ext.servlet</artifactId>
           <version>2.3.4</version>
     </dependency>
 
 </dependencies>
 
  <repositories>
        <repository>
            <id>maven-restlet</id>
            <name>Public  Restlet repository</name>
            <url>http://maven.restlet.org</url>
        </repository>
  </repositories>
 
  <build>
    <finalName>RestletHelloWorld</finalName>
  </build>
</project>
<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>RestletHelloWorld</groupId>
  <artifactId>RestletHelloWorld</artifactId>
  <packaging>war</packaging>
  <version>0.0.1-SNAPSHOT</version>
  <name>RestletHelloWorld 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>org.restlet.jee</groupId>
             <artifactId>org.restlet</artifactId>
             <version>2.3.4</version>
      </dependency>

     <dependency>
            <groupId>org.restlet.jee</groupId>
            <artifactId>org.restlet.ext.jaxrs</artifactId>
            <version>2.3.2</version>
     </dependency>

     <dependency>
           <groupId>org.restlet.jee</groupId>
           <artifactId>org.restlet.ext.servlet</artifactId>
           <version>2.3.4</version>
     </dependency>
 
 </dependencies>

  <repositories>
        <repository>
            <id>maven-restlet</id>
            <name>Public  Restlet repository</name>
            <url>http://maven.restlet.org</url>
        </repository>
  </repositories>

  <build>
    <finalName>RestletHelloWorld</finalName>
  </build>
</project>

We have defined a maven restlet Repository to download the Restlet related dependencies.


Step 3

Update web.xml file with Restlet servlet container

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<!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>
  <context-param>
        <param-name>org.restlet.application</param-name>
        <param-value>com.kb.rest.MyRestletApplication</param-value>
 </context-param>
 
 <servlet>
     <servlet-name>RestletServlet</servlet-name>
     <servlet-class>
             org.restlet.ext.servlet.ServerServlet
     </servlet-class>
 </servlet>
 
 <servlet-mapping>
     <servlet-name>RestletServlet</servlet-name>
     <url-pattern>/rest/*</url-pattern>
 </servlet-mapping>
</web-app>
<!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>
  <context-param>
        <param-name>org.restlet.application</param-name>
        <param-value>com.kb.rest.MyRestletApplication</param-value>
 </context-param>

 <servlet>
     <servlet-name>RestletServlet</servlet-name>
     <servlet-class>
             org.restlet.ext.servlet.ServerServlet
     </servlet-class>
 </servlet>
 
 <servlet-mapping>
     <servlet-name>RestletServlet</servlet-name>
     <url-pattern>/rest/*</url-pattern>
 </servlet-mapping>
</web-app>

We have defined the context param to point the application class where the Restlet servlet has to look for any resource mapping class.

In our case, it is MyRestletApplication class which will assist the Restlet service to find the mapping resource.

Step 4

Create the MyRestletApplication class

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
package com.kb.rest;
 
import org.restlet.Application;
import org.restlet.Context;
import org.restlet.Restlet;
import org.restlet.routing.Router;
 
public class MyRestletApplication extends Application {
    
public MyRestletApplication(Context parentContext) {
    super(parentContext);
  }
 
  @Override
  public  Restlet createInboundRoot() {
    Router router = new Router(getContext());
    router.attach("/hello", HelloWorldRestService.class);
    return router;
  }
}
package com.kb.rest;

import org.restlet.Application;
import org.restlet.Context;
import org.restlet.Restlet;
import org.restlet.routing.Router;

public class MyRestletApplication extends Application {
	
public MyRestletApplication(Context parentContext) {
    super(parentContext);
  }

  @Override
  public  Restlet createInboundRoot() {
    Router router = new Router(getContext());
    router.attach("/hello", HelloWorldRestService.class);
    return router;
  }
}

This class maps the request URL to appropriate Rest service class.

In our case, it is “/hello” which is mapped to HelloWorldRestService class.

Step 5

Create the Rest service class

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
package com.kb.rest;
 
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
 
import org.restlet.resource.Get;
import org.restlet.resource.ServerResource;
 
@Path("/hello")
public class HelloWorldRestService extends ServerResource {
 
    @Get
    @Produces(MediaType.TEXT_PLAIN)
    public String getMessage(){
        return "Restlet Hello World";
        
    }
} 
package com.kb.rest;

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

import org.restlet.resource.Get;
import org.restlet.resource.ServerResource;

@Path("/hello")
public class HelloWorldRestService extends ServerResource {

	@Get
	@Produces(MediaType.TEXT_PLAIN)
	public String getMessage(){
		return "Restlet Hello World";
		
	}
} 

@Path – to specify the root path of the resource which is “/hello”

@GET – It’s the HTTP method that is supported by the service

@Produces – It’s used to specify the MIME type that service is supporting which is Plain Text here.

Step 6

Build and Deploy the project in the Tomcat server

Step 7

Start the server

Step 8

Access the Rest service using below URL

http://localhost:8080/RestletHelloWorld/rest/hello

restlet_hello_world_output

Download this project RestletHelloWorld.zip

About the Author

Karibasappa G C (KB)
Founder of javainsimpleway.com
I love Java and open source technologies and very much passionate about software development.
I like to share my knowledge with others especially on technology 🙂
I have given all the examples as simple as possible to understand for the beginners.
All the code posted on my blog is developed,compiled and tested in my development environment.
If you find any mistakes or bugs, Please drop an email to kb.knowledge.sharing@gmail.com

Connect with me on Facebook for more updates

Share this article on