JAX-RS with Jersey – RESTful Webservice


Bài viết hôm nay mình xin giới thiệu các bạn về sự hỗ trợ của JAVA về REST, nói tóm gọn trong bài này chúng ta sử dụng JAX-RS (JAVA API cho việc tạo RESTful Webservices). JAX-RS sử dụng các annotations to định nghĩa REST tương tác cới Class JAVA

Jersey is một kỹ thuật để thực hiện việc này 1 cách khá là đơn giản. Jersey 1 một REST server và 1 REST client. Và phía client có thể đươc cung cấp các thư viện để giao tiếp với Server 1 cách dể dàng

Tại phía server Jersey sử dụng một Servlet với việc tìm các Class Java và tạo nên nguồn tài nguyên phía server (RESTful resource ). Thông qua việc cấu hình trong web.xml của web app của chúng ta. Việc đăng kí servlet này được củng cấp bởi Sersey.

OK chúng ta có đối chút hiểu biết về nó rồi.

1 – Đầu tiên chúng ta Download Jersey từ trang

http://jersey.java.net/ 

2 – Tạo project with Jersey Libraries được download ở trên về.
tạo ra 1 new dynamic web project : như hình vẻ sau

d1

Các bạn tạo ra class Hello.java như sau :

</pre>
package thaihoanghai.jersey.first;
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 {

// This method is called if TEXT_PLAIN is request
 @GET
 @Produces(MediaType.TEXT_PLAIN)
 public String sayPlainTextHello() {
 return "Hello Jersey";
 }

// This method is called if XML is request
 @GET
 @Produces(MediaType.TEXT_XML)
 public String sayXMLHello() {
 return "<?xml version=\"1.0\"?>" + "<hello> Hello Jersey" + "</hello>";
 }

// This method is called if HTML is request
 @GET
 @Produces(MediaType.TEXT_HTML)
 public String sayHtmlHello() {
 return "<html> " + "<title>" + "Hello Jersey" + "</title>"
 + "<body><h1>" + "Hello Jersey" + "</body></h1>" + "</html> ";
 }

}
<pre>

3 – Cấu hình lại file web.xml như sau

</pre>
<?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>WS-Jersey-A</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>thaihoanghai.jersey.first</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>

4 – OK h chúng ra run Tomcat server lên .

và gõ url vào browser : http://localhost:8080/WS-Jersey-A/rest/hello nhận được:

d1

OK thế là chúng ta xong phía Server , giờ chúng ta triển khai bên phía Client nào.

1 – Chúng ta 1 project Client như hình sau :

d1

2 – Chúng ta class Test.Java để test và lấy data từ REST Server

</pre>
package thaihoanghai.jersey.first.client;

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.ClientResponse;
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 Test {
 public static void main(String[] args) {
 ClientConfig congif = new DefaultClientConfig();
 Client client = Client.create(congif);
 WebResource service = client.resource(getBaseURI());

 // Flurent interface
 System.out.println(service.path("rest").path("hello").accept(MediaType.TEXT_PLAIN).get(ClientResponse.class).toString());
 // Get plain text
 System.out.println(service.path("rest").path("hello").accept(MediaType.TEXT_PLAIN).get(String.class));
 // Get XML
 System.out.println(service.path("rest").path("hello").accept(MediaType.TEXT_XML).get(String.class));
 // The HTML
 System.out.println(service.path("rest").path("hello").accept(MediaType.TEXT_HTML).get(String.class));

 }

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

3 – OK zậy là xong rồi. Chúng ta run và sẻ nhận được kết quả như sau :

d1

OK quá là đơn giản đúng không nào. Chỉ mất 5p để làm việc chúng ta đả có 1 ví dụ đơn giản về việc tạo Webservice sữ dung Jersey. ^^! Chúc các bạn thành công.

2 Responses to “JAX-RS with Jersey – RESTful Webservice”

  1. kobee Says:

    java.lang.OutOfMemoryError: PermGen space

    If you’re using Tomcat as a Server of Eclipse, go to Server view, then double click on Tomcat, then “Open Launch Configuration”, go to Arguments tab, and after setting -Dcatalina.base=”” put this


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: