Bài viết được sự cho phép của tác giả Giang Phan
Trong bài trước chúng ta đã cùng tìm hiểu cách xây dựng ứng dụng Java Restful web service với Jersey 1.x. Trong bài này, chúng ta sẽ cùng tìm hiểu cách tạo ra ứng dụng Java Restful web service với Jersey 2.x và ứng dụng Java RESTful Client sử dụng Jersey Client API để gọi tới RESTful web service.
Xem thêm tuyển dụng Java hấp dẫn trên TopDev
1. Tạo Jersey project
Trong bài trước chúng ta đã tạo Restful web service sử dụng Jersey version 1.x. Trong bài này, chúng ta sẽ tạo Jersey project với version 2.x.
- Jersey 1.x : các thư viện nằm trong package com.sun.
- Jersey 2.x : các thư viện nằm trong package org.glassfish.
Vào Menu File -> New -> Dynamic Web Project -> Finish.
Nhấn chuột phải lên project vừa tạo -> Configure -> Convert to Maven Project:
Nhập thông tin Maven project như sau:
Chúng ta có project như sau:
Mở file pom.xml và cập nhật lại như sau:
<
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/xsd/maven-4.0.0.xsd"
>
<
modelVersion
>4.0.0</
modelVersion
>
<
groupId
>RestfulWebServiceWithJersey2Example</
groupId
>
<
artifactId
>RestfulWebServiceWithJersey2Example</
artifactId
>
<
version
>0.0.1-SNAPSHOT</
version
>
<
packaging
>war</
packaging
>
<
properties
>
<
project.build.sourceEncoding
>UTF-8</
project.build.sourceEncoding
>
<
maven.compiler.source
>1.8</
maven.compiler.source
>
<
maven.compiler.target
>1.8</
maven.compiler.target
>
<
jersey.version
>2.28</
jersey.version
>
<
lombok.version
>1.16.20</
lombok.version
>
</
properties
>
<
dependencies
>
<!-- https://mvnrepository.com/artifact/org.glassfish.jersey.core/jersey-server -->
<
dependency
>
<
groupId
>org.glassfish.jersey.core</
groupId
>
<
artifactId
>jersey-server</
artifactId
>
<
version
>${jersey.version}</
version
>
</
dependency
>
<
dependency
>
<
groupId
>org.glassfish.jersey.containers</
groupId
>
<
artifactId
>jersey-container-servlet</
artifactId
>
<
version
>${jersey.version}</
version
>
</
dependency
>
<
dependency
>
<
groupId
>org.glassfish.jersey.inject</
groupId
>
<
artifactId
>jersey-hk2</
artifactId
>
<
version
>${jersey.version}</
version
>
</
dependency
>
<!-- https://mvnrepository.com/artifact/org.glassfish.jersey.core/jersey-client -->
<
dependency
>
<
groupId
>org.glassfish.jersey.core</
groupId
>
<
artifactId
>jersey-client</
artifactId
>
<
version
>${jersey.version}</
version
>
</
dependency
>
<!-- https://mvnrepository.com/artifact/org.glassfish.jersey.core/jersey-common -->
<
dependency
>
<
groupId
>org.glassfish.jersey.core</
groupId
>
<
artifactId
>jersey-common</
artifactId
>
<
version
>${jersey.version}</
version
>
</
dependency
>
<!-- https://mvnrepository.com/artifact/org.glassfish.jersey.media/jersey-media-json-jackson -->
<
dependency
>
<
groupId
>org.glassfish.jersey.media</
groupId
>
<
artifactId
>jersey-media-json-jackson</
artifactId
>
<
version
>${jersey.version}</
version
>
</
dependency
>
<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
<
dependency
>
<
groupId
>org.projectlombok</
groupId
>
<
artifactId
>lombok</
artifactId
>
<
version
>${lombok.version}</
version
>
<
scope
>provided</
scope
>
</
dependency
>
</
dependencies
>
<
build
>
<
sourceDirectory
>src</
sourceDirectory
>
<
plugins
>
<
plugin
>
<
groupId
>org.apache.maven.plugins</
groupId
>
<
artifactId
>maven-compiler-plugin</
artifactId
>
<
version
>3.8.0</
version
>
<
configuration
>
<
source
>1.8</
source
>
<
target
>1.8</
target
>
</
configuration
>
</
plugin
>
<
plugin
>
<
groupId
>org.apache.maven.plugins</
groupId
>
<
artifactId
>maven-war-plugin</
artifactId
>
<
version
>3.2.1</
version
>
<
configuration
>
<
warSourceDirectory
>WebContent</
warSourceDirectory
>
</
configuration
>
</
plugin
>
</
plugins
>
</
build
>
</
project
>
Lưu ý: đối với project chỉ bao gồm Client (không bao gồm Server), chúng ta chỉ cần 2 thư viện jersey-client và jersey-media-json-jackson.
Sau khi đã cập nhật file pom.xml, chúng ta cần update lại mavent project: Nhấn chuột phải lên project -> Maven -> Update Project… -> OK.
Tạo file jersey config: file này bao gồm config package chứa api và logging.
JerseyServletContainerConfig.java
Tạo file WebContent/WEB-INF/web.xml với nội dung như sau:
<?
xml
version
=
"1.0"
encoding
=
"UTF-8"
?>
<
web-app
xmlns:xsi
=
"http://www.w3.org/2001/XMLSchema-instance"
xmlns
=
"http://xmlns.jcp.org/xml/ns/javaee"
xsi:schemaLocation
=
"http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version
=
"4.0"
>
<
display-name
>RESTful CRUD Example by gpcoder</
display-name
>
<
servlet
>
<
servlet-name
>jersey2-serlvet</
servlet-name
>
<
servlet-class
>org.glassfish.jersey.servlet.ServletContainer</
servlet-class
>
<
init-param
>
<
param-name
>javax.ws.rs.Application</
param-name
>
<
param-value
>com.gpcoder.config.JerseyServletContainerConfig</
param-value
>
</
init-param
>
<
init-param
>
<
param-name
>jersey.config.server.provider.classnames</
param-name
>
<
param-value
>org.glassfish.jersey.jackson.JacksonFeature</
param-value
>
</
init-param
>
<
load-on-startup
>1</
load-on-startup
>
</
servlet
>
<
servlet-mapping
>
<
servlet-name
>jersey2-serlvet</
servlet-name
>
<
url-pattern
>/rest/*</
url-pattern
>
</
servlet-mapping
>
</
web-app
>
2. Jersey chuyển đổi XML và JSON sang Model Class như thế nào?
Theo mặc định Jersey API sử dụng JAXB là XML-Binding mặc định để chuyển đổi các đối tượng Java thành XML và ngược lại. Chúng ta cần gắn các Annotation của JAXB lên các class model để chú thích cách chuyển đổi cho JAXB. Chi tiết về JAXB Annotation và cách sử dụng các bạn xem lại bài viết: Hướng dẫn chuyển đổi Java Object sang XML và XML sang Java Object sử dụng Java JAXB.
Jersey sử dụng MOXy là JSON-Binding mặc định để Jersey chuyển đổi các đối tượng JSON thành Java và ngược lại. Chúng ta không gần gắn các Annotation lên các class model.
3. Tạo Java REST Web service với Jersey2
Tạo data model:
User.java
Tạo Restful CRUD:
UserService.java
4. Tạo Java REST Client với Jersey2 Client
JsonJerseyRestClientExample.java
Ứng dụng Client ở trên gửi và nhận dữ liệu kiểu json. Để gửi dữ liệu và nhận kiểu dữ liệu xml, các bạn đơn giản thay thế MediaType.APPLICATION_JSON sang MediaType.APPLICATION_XML.
Bài viết gốc được đăng tải tại gpcoder.com
Có thể bạn quan tâm: