«

Jan 27

RESTful Web Service pada Java menggunakan Jersey (JAX-RS 1.1)

Tutorial ini menjelaskan bagaimana caranya mengembangkan aplikasi RESTful web services pada Java menggunakan Jersey yang mengimplementasi JAX-RS, Saya menggunakan Jersey 1.11 yang menggunakan implementasi dari JAX-RS 1.1. Kamu bisa download Jersey di sini. Pada tutorial ini saya menggunakan Eclipse Indigo, Tomcat 7 dan Jersey 1.11

Seperti biasa, buat dynamic web project di eclipse, lalu copy semua library pada folder Jersey yang baru saja kamu download ke folder “/WEB-INF/lib/”. Sekarang coba buat class Hello.java seperti dibawah ini :

package com.kusandriadi.ws;

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

@Path("/hello")
public class Hello {

	@GET
	@Produces(MediaType.TEXT_HTML)
	public String helloHtml(){
		return "<html> " +
		"<title>" +
	"Hello Kus Andriadi :D" +
	"</title>"
	+ "<body><h1>" + "Hello Kus Andriadi :D" +
	"</body></h1>" +
	"</html> ";
	}

	@GET
	@Produces(MediaType.TEXT_PLAIN)
	public String helloText(){
		return "Hello Kus Andriadi";
	}

	@GET
	@Produces(MediaType.TEXT_XML)
	public String helloXML(){
		return "<?xml version=\"1.0\"?>" +
	"<hello> Kus Andriadi" + "</hello>";
	}
}

Anotasi @Path(“/hello”) diatas maksudnya adalah jika ada request ke path “/hello” akan diolah oleh class ini, anotasi @GET akan menjawab request dari client (begitu juga dengan @POST, @DELETE dan @PUT jika digunakan) sesuai dengan HTTP Standard Methods. Anotasi @Produce berguna sebagai hasil respons dari server, apakah berbentuk text, xml, html, dst.

Jangan lupa untuk mendefinisikan Servlet  Jersey di web.xml 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_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>HelloWS</display-name>
  <servlet>
  	<servlet-name>Jersey</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.kusandriadi</param-value>
  	</init-param>
  	<load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
  	<servlet-name>Jersey</servlet-name>
  	<url-pattern>/rest/*</url-pattern>
  </servlet-mapping>
</web-app>

Pada <param-value> arahkan ke package dimana class Hello tadi berasal. <url-pattern> disitu maksudnya adalah setiap url yang masuk dengan pattern “/rest/*” akan diolah oleh Servlet Jersey. Setelah selesai, mari kita membuat class Client untuk request ke class REST tadi. Buat project baru, copy semua library Jersey tadi ke project yang baru dibuat,  lalu cukup buat class main seperti dibawah ini.

import com.sun.jersey.api.client.Client;
import com.sun.jersey.api.client.ClientResponse;
import com.sun.jersey.api.client.WebResource;
import com.sun.jersey.api.client.config.ClientConfig;
import com.sun.jersey.api.client.config.DefaultClientConfig;
import java.net.URI;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.UriBuilder;

/**
 *
 * @author Kus Andriadi
 */
public class ClientWS {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        ClientConfig clientConfig = new DefaultClientConfig();
        Client client = Client.create(clientConfig);

        WebResource webResource = client.resource(getURI());

        //respon dari uri
        System.out.println(webResource.accept(MediaType.TEXT_PLAIN).get(ClientResponse.class).toString());

        //xml
        System.out.println(webResource.accept(MediaType.TEXT_XML).get(String.class).toString());

        //html
        System.out.println(webResource.accept(MediaType.TEXT_HTML).get(String.class).toString());

        //text
        System.out.println(webResource.accept(MediaType.TEXT_PLAIN).get(String.class).toString());
    }

    private static URI getURI() {
        return UriBuilder.fromUri("http://localhost:8080/HelloWS/rest/hello").build();
    }
}

Jalankan class main tersebut, lalu akan output seperti dibawah ini :

GET http://localhost:8080/HelloWS/rest/hello returned a response status of 200 OK
<?xml version="1.0"?><hello> Kus Andriadi</hello>
<html> <title>Hello Kus Andriadi :D</title><body><h1>Hello Kus Andriadi :D</body></h1></html>
Hello Kus Andriadi

Jika masih ada error, ulangi langkah diatas, aplikasi ini sudah saya cek seharusnya tidak ada error :D, kamu juga bisa langsung menjalankan aplikasi ini dari eclipse. Langsung saja hit ke url “http://localhost:8080/HelloWS/rest/hello”. HelloWS disitu adalah nama project saya, jadi itu tergantung nama project yang anda buat.

Regards,

1 comment

  1. anugrah baguz

    nice post gan…mau nyoba dlu

    [Reply]

Leave a Reply

Your email address will not be published.

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Get Adobe Flash playerPlugin by wpburn.com wordpress themes