Jersey merupakan product open source yang dibuat untuk implementasi RESTful  Web Service, untuk lebih lanjut tentang Jersey silahkan kunjungi ini. Tutorial ini berasumsi di komputer telah tersedia Eclipse dan Tomcat.

Langkah yang akan kita lakukan saat ini adalah membuat service kemudian bagaimana memanggil service tersebut.

    1. Buatlah sebuah project dengan eclipse

      Create Dinamic Web Project
    2. Ekstrak dan copikan seluruh *.jar yang ada pada file ini ke dalam direktori lib dibawah WEB-INF.
    3. Kemudian buatlah sebuah class dengan nama CalculatorService.java. Pada file memiliki 3 fungsi, 2 fungsi memakai method @GET dan 1 fungsi memakai method @POST. Fungsi yang menggunakan method @GET menggunakan @QueryParam untuk penentuan nama parameter sedangkan method @POST menggunakan @FormParam.
      package com.jersey.service;
      
      import javax.ws.rs.POST;
      import javax.ws.rs.GET;
      import javax.ws.rs.Path;
      import javax.ws.rs.*;
      
      @Path("calculatorservice")
      public class CalculatorService {
      	  @GET
      	  @Path("addNumbers")
      	  public String add(@QueryParam("number1") int number1, @QueryParam("number2") int number2) {
      	    return String.valueOf(number1 + number2);
      	  }
      
      	  @GET
      	  @Path("subtractNumbers")
      	  public String subtract(@QueryParam("number1") int number1, @QueryParam("number2") int number2) {
      	    return String.valueOf(number1 - number2);
      	  }
      
      	  @POST
      	  @Consumes("application/x-www-form-urlencoded")
      	  @Produces("text/plain")
      	  @Path("multiplyNumbers")
      	  public String multiply(@FormParam("number1") int number1, @FormParam("number2") int number2) {
      		    return String.valueOf(number1 * number2);
      	  }
      }
      
    4. Update web.xml yang berada didalam direktori WEB-INF seperti ini :
      <?xml version="1.0" encoding="UTF-8"?>
      <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
        <display-name>ServiceCalculator</display-name>
        <welcome-file-list>
          <welcome-file>index.html</welcome-file>
          <welcome-file>index.htm</welcome-file>
          <welcome-file>index.jsp</welcome-file>
          <welcome-file>default.html</welcome-file>
          <welcome-file>default.htm</welcome-file>
          <welcome-file>default.jsp</welcome-file>
        </welcome-file-list>
        <servlet>
          <servlet-name>Jersey REST Service</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.jersey.service</param-value>
          </init-param>
          <load-on-startup>1</load-on-startup>
        </servlet>
        <servlet-mapping>
          <servlet-name>Jersey REST Service</servlet-name>
          <url-pattern>/rest/*</url-pattern>
        </servlet-mapping>
      </web-app>
      
    5. Kemudian buatlah sebuah class dengan nama CalculatorClient.java, perhatikan perbedaan cara memanggil method @GET dan @POST.
      package com.jersey.client;
      
      import com.sun.jersey.core.util.*;
      import com.sun.jersey.api.client.Client;
      import com.sun.jersey.api.client.ClientResponse;
      import com.sun.jersey.api.client.WebResource;
      
      public class CalculatorClient {
      public static void main(String[] args)
      throws Exception{
      
      Client client = Client.create();
      String _url="";
      String _param1 = "16";
      String _param2 = "5";
      
      WebResource webResource;
      
      MultivaluedMapImpl  params = new MultivaluedMapImpl();
      params.add("number1", _param1);
      params.add("number2", _param2);
      
      _url = "http://localhost:8080/de.vogella.jersey.first/rest/calculatorservice/addNumbers";
      webResource = client.resource(_url);
      String s = webResource.queryParams(params).get(String.class);
      System.out.println(s);
      
      _url = "http://localhost:8080/de.vogella.jersey.first/rest/calculatorservice/subtractNumbers";
      webResource = client.resource(_url);
      s = webResource.queryParams(params).get(String.class);
      System.out.println(s);
      
      _url = "http://localhost:8080/de.vogella.jersey.first/rest/calculatorservice/multiplyNumbers";
      webResource = client.resource(_url);
      ClientResponse response = webResource.type("application/x-www-form-urlencoded").post(ClientResponse.class, params);
      String textEntity = response.getEntity(String.class);
      System.out.println(textEntity);
      }
      }
      
    6. Jalankan Tomcat kemudian jalannya CalculatorClient run as Java Application, maka akan ada tampilan seperti ini:
    7. Bila dipanggil dengan browser http://localhost:8080/calculatorservice/rest/calculatorservice/addNumbers?number1=10&number2=2
      Maka akan menghasilkan 12.

Demikian cara sederhana membuat dan memanggil service.

Referensi :

  1. REST with Java (JAX-RS) using Jersey – Tutorial
  2. An Introduction to Creating RESTful Web Services Using Jersey and Java