4.4.1. Yêu cầu ban đầu
Trước khi tiến hành xây dựng một RESTful Web Service đơn giản, máy tính cần được chuẩn bị sẵn một số thành phần sau:
JDK hoặc JRE 7. Tải về và cài đặt JDK hoặc JRE tại địa chỉ sau: http://www.oracle.com/technetwork/java/javase/downloads/jre7-downloads-
1880261.html
Một server Java như Jboss, Apache Tomcat,… Tải về và cài đặt server Apache Tomcat 7 tại địa chỉ sau: http://tomcat.apache.org/download-70.cgi
Thư viện JAX-RS Jersey. Tải về thư viện Jersey tại địa chỉ sau: https://jersey.java.net/download.html
4.4.2. Xây dựng Web service đơn giản
28
Hình 4.1. Tạo một Dynamic Web Project
Copy tất cả các tập tin trong thư viện Jersey vào trong thư mục WEB-INF/lib. Tạo một lớp tài nguyên như sau.
package com.example; 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 {
// Phương thức được gọi nếu yêu cầu kiểu TEXT
@GET
29 public String sayPlainTextHello() { return "Hello Jersey";
}
// Phương thức được gọi nếu yêu cầu XML
@GET
@Produces(MediaType.TEXT_XML)
public String sayXMLHello() {
return "<?xml version=\"1.0\"?>" + "<hello> Hello Jersey" +
"</hello>"; }
// Phương thức được gọi nếu yêu cầu HTML
@GET
@Produces(MediaType.TEXT_HTML)
public String sayHtmlHello() {
return "<html> " + "<title>" + "Hello Jersey" + "</title>"
+ "<body><h1>" + "Hello Jersey" + "</body></h1>" + "</html> "; }
}
Lớp này đăng ký chính nó như là một nguồn tài nguyên thông qua annotation
@GET. Thông qua annotation @Produces nó xác định kiểu MIME lần lượt là TEXT, XML và HTML. Annotation @Path xác định tài nguyên được gọi trên URL
thông qua đường dẫn /hello. Nếu yêu cầu được gửi từ trình duyệt web thì kết quả trả về là HTML.
Cần phải đăng ký Jersey là điều phối servlet cho các yêu cầu REST. Mở tập tin web.xml và chỉnh sửa như sau:
<?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">
30 <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.example</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>
Tham số "com.sun.jersey.config.property.packages" định nghĩa packet nào Jersey sẽ tìm kiếm các lớp web service. Thuộc tính này phải trỏ đến các lớp tài nguyên của bạn. Mẫu URL xác định một phần của URL cơ sở ứng dụng của bạn.