Tru?ng D?i h?c Cong ngh? Thong tin

traderainΛογισμικό & κατασκευή λογ/κού

15 Αυγ 2012 (πριν από 5 χρόνια και 28 μέρες)

611 εμφανίσεις

Trường Đại học Công nghệ Thông tin
-

Khoa Công nghệ Phần mềm


Bộ mon Lập trinh phân tán



Nhóm 23


1

ĐẠI HỌC QUỐC GIA TP.HCM

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN

KHOA CÔNG NGHỆ PHẦN MỀM

------------







------------

Bộ môn:
Lập trình phân tán

Giáo viên hướng dẫn:
Ths.
Nguyễn Trác Thức

Nhóm
23
:

1.

Vũ Ngọc Hưng



06520197

2.

Vương Hà Thanh Mẫn

06520282







BÁO
CÁO CUỐI HỌC KỲ


ĐỀ TÀI:

WEB SERVICE TRONG JAVA

*****


Trường Đại học Công nghệ Thông tin
-

Khoa Công nghệ Phần mềm


Bộ mon Lập trinh phân tán



Nhóm 23


2

Mục lục:


Lời nói đầu

................................
................................
................................
............

3

PHẦN A: JAVA WEB SERVICE

................................
................................
........

4

1.

Tổng quan về Web Service

................................
................................
...........

4

1.1.

Khái niệm

................................
................................
................................
.

4

1.2.

Đặc điểm của web service

................................
................................
........

4

1.3.

Ưu và nhược điểm của web service

................................
.........................

4

1.3.1

Ưu điểm

................................
................................
................................

4

1.3.2

Nhược điểm

................................
................................
..........................

5

2.

Kiến trúc của web service

................................
................................
.............

5

3.

Các giao thức trong web service

................................
................................
...

6

3.1.

XML

................................
................................
................................
.........

6

3.2.

WSDL
-

Web Service Description Language

................................
..........

6

3.3.

Universal Description, Discovery, and Integration (UDDI)

....................

7

3.4.

SOAP
-

Simple Object Access Protocol

................................
..................

8

4.

Xây dựng một web service với các công nghệ của Java

...............................

9

4.1.

Qui trình xây dựng một web service

................................
........................

9

4.2.

Các thư viện dùng để tạo we
b service trong Java

................................
....

9

4.2.1

JAX
-
WS

................................
................................
...............................

9

4.2.1.1

Các bước cơ bản để tự tay tạo một web service với JAX
-
WS

10

4.2.1.2

Các lưu ý khi cài đặt một cụ thể hóa của SEI

.........................

10

4.2.1.3

Ví dụ

................................
................................
........................

11

4.2.2

Apache
Axis

................................
................................
.......................

13

PHẦN B: TRIỂN KHAI ĐỒ ÁN TASK MANAGER

................................
.......

14

1.

Lời nói đầu:

................................
................................
................................
.

14

2.

Project TaskManager

................................
................................
...................

14

2.1.

Giới thiệu

................................
................................
...............................

14

2.2.

Yêu cầu chức năng

................................
................................
.................

14

2.3.

Cấu trúc chương trình

................................
................................
............

16

2.4.

Chạy chương trình phía server

................................
...............................

17

2.5.

Chạy chương trình phía client

................................
................................

18

PHỤ LỤC: XÂY DỰNG VÀ TRIỂN KHAI MỘT WEB SERVICE TỪ CÁC
CÔNG CỤ CÓ SẴN

................................
................................
...........................

20

1.

Các công cụ cần thiết

................................
................................
...................

20

2.

Cài đặt và cấu hình các công cụ

................................
................................
..

20

3.

Tạo một web service trong NetBeans IDE

................................
..................

32

4.

Tạo một Web Serv
ice Client trong NetBeans

................................
.............

33

5.

Cài đặt và chạy ứng dụng

................................
................................
............

34

Lời kết

................................
................................
................................
.................

36

Tài liệu tham khảo

................................
................................
..............................

37


Trường Đại học Công nghệ Thông tin
-

Khoa Công nghệ Phần mềm


Bộ mon Lập trinh phân tán



Nhóm 23


3

Lời nói đầu


Dịch vụ Web (Web Service) là một ứng dụng tuyệt vời của kĩ thuật lập
trình phân tán và được coi là một công nghệ mang đến cuộc cách mạng trong
cách thức hoạt động của các dịch vụ B
2B (Business to Business), B2C (Business
to Customer) và nhiều loại dịch vụ mạng khác.


Giá trị cơ bản của dịch vụ Web là dựa trên việc cung cấp các phương thức
theo chuẩn và cho phép các đối tượng khác nhau ở rất nhiều hệ thống khác nhau
truy cập đến. Bê
n cạnh đó, Java là một ngôn ngữ lập trình thuần hướng đối tượng
và có thể giúp tạo ra các ứng dụng độc lập nền. Chính vì vậy sự kết hợp giữa web
service và Java là một công nghệ thời thượng và mạnh mẽ để tạo ra những hệ
thống hợp nhất với chi phí và độ phứ
c tạp thấp trong việc tích hợp và phát triển
hệ thống.


Với mục đích tiếp cận và ứng dụng một cách nhanh nhất web service
trong Java, bài báo cáo của nhóm
23

sẽ giới thiệu những khái niệm cơ bản và
những công nghệ nền tảng của web service, để từ đó có thể
ứng dụng vào xây
dựng một hệ thống có sử dụng web service.


Do đây là lần đầu tiên nhóm tiếp cận và tìm hiểu về web service nên chắc
chắn sẽ không tránh khỏi những sai sót. Vi vậy, rất mong nhận được những nhận
xét và những ý kiến đóng góp của quý thầy cô
và các bạn để chúng ta có thể cùng
trao dồi và chia sẻ kiến thức, giúp ích được trong học tập và trong công việc.


T
p
. HCM Tháng
05
/200
9

Nhóm
23



Khoa Công nghệ Phần mềm

Trường Đại học Công nghệ Thông tin
-

Khoa Công nghệ Phần mềm


Bộ mon Lập trinh phân tán



Nhóm 23


4

PHẦN A: JAVA WEB SERVICE

1.

Tổng quan về Web Service

1.1.

Khái niệm

Nói một cách đơn giản, w
eb service là một ứng dụng, một tiện ích mà các
nhà phát triển muốn cung cấp rộng rãi cho nhiểu người, nhiều tổ chức có thể
sử dụng. Tương tự như khi chúng ta xây dựng một trang web là để cả thế giới
có thể vào xem. Web service là những ứng dụng chạy trên

nền web, điều khác
biệt so với các ứng dụng web bình thường khác là khách hàng hay client của
các web service không chỉ là trình duyệt web (web browser) mà còn có thể là
những ứng dụng chạy trên máy tính cá nhân (desktop) hay trên các thiết bị di
động (mo
bile device).

1.2.

Đặc điểm của web service



Theo đặc tả của W3C (World Wide Web Consortium), dịch vụ Web có
khả năng tương tác với các hệ thống khác thông qua một giao diện
chung được mô tả bằng XML.



Dịch vụ Web cho phép client và server tương tác được với nhau

ngay cả
trong những môi trường khác nhau. Ví dụ, đặt Web server cho ứng dụng
trên một máy chủ chạy hệ điều hành Linux trong khi người dùng sử
dụng máy tính chạy hệ điều hành Windows, ứng dụng vẫn có thể chạy
và xử lý bình thường mà không cần thêm yêu cầu
đặc biệt để tương
thích giữa hai hệ điều hành này.



Một Dịch vụ Web có bao gồm có nhiều mô
-
đun và công bố lên mạng
Internet.



Một ứng dụng khi được triển khai sẽ hoạt động theo mô hình client
-
server. Nó có thể được triển khai bởi một phần mềm ứng dụng phía
s
erver ví dụ như PHP, Java, Oracle Application server hay
Microsoft.
NET


1.3.

Ưu và nhược điểm của web service

1.3.1

Ưu điểm



Dịch vụ Web cung cấp khả năng hoạt động rộng lớn
và linh hoạt
với các
ứng dụng phần mềm khác nhau chạy trên những nền tảng khác nhau.



Nền tảng
của web service là công nghệ XML. Hầu hết các hệ thống đều
thể đọc và “hiểu” được tập tin XML.



Thúc

đẩy phát triển các

hệ thống phần mềm đã tồn tại bằng cách cho
phép các tiến trình/chức năng nghiệp vụ đóng
gói trong giao diện dịch
vụ Web và công bố rộng r
ãi trên mạng Internet.



Tạo mối quan hệ tương tác lẫn nhau và mềm dẻo giữa các thành phần
trong hệ thống, dễ dàng cho việc phát triển các ứng dụng phân tán.

Trường Đại học Công nghệ Thông tin
-

Khoa Công nghệ Phần mềm


Bộ mon Lập trinh phân tán



Nhóm 23


5



Thúc đẩy hệ thống tích hợp, giảm sự phức tạp của hệ thống, hạ giá thành
dịch vụ
, phát triển hệ thống

nhanh và tương tác hiệu quả với hệ thống
của các doanh nghiệp khác.



Ở góc độ doanh nghiệp, web service là một công nghệ phục vụ rất tốt
trong việc quảng bá dịch vụ của mình cho đa dạng khách hàng.

1.3.2

Nhược điểm



Có quá nhiều chuẩn cho dịch vụ Web khiến người
dùng khó nắm bắt
cũng như gây khó khăn cho các nhà phát triển.



An toàn và bảo mật

thông tin là một vấn đề nan giải

của web service.



Có nhiều vấn đề về các tác vụ đòi hỏi transaction (ví dụ như chuyển tiền
qua lại giữa các ngân hàng) chưa được giải quyết ho
àn chỉnh.



Tốc độ thực thi (performance) của web service phụ thuộc rất nhiều vào
tốc độ đường truyền Internet và nhìn chung các web service thực thi
chậm hơn các ứng dụng bình thường khác.



Vấn đề
Quality of Service (QoS)

còn chưa được đảm bảo, nhất lả khi
w
eb service bị rơi vào tình trạng quá tải (peak load) và có thể gây những
thiệt hại lớn cho phía máy khách.

2.

Ki
ế
n tr
ú
c c
ủa

web service



Kiến trúc của web service.


Dịch vụ Web gồm có ba chuẩn chính: SOAP (Simple Object Access
Protocol), WSDL (Web Service D
escription Language) và UDDI (Universal
Description, Discovery, and Integration). Hình 1 mô tả chồng giao thức của dịch
vụ Web, trong đó UDDI được sử dụng để đăng ký và khám phá dịch vụ Web đã
được miêu tả cụ thể trong WSDL. Giao tác UDDI sử dụng SOAP để n
ói chuyện
với UDDI server, sau đó các ứng dụng SOAP yêu cầu một dịch vụ Web. Các
thông điệp SOAP được gửi đi chính xác bởi giao th

c HTTP và TCP/IP.

Trường Đại học Công nghệ Thông tin
-

Khoa Công nghệ Phần mềm


Bộ mon Lập trinh phân tán



Nhóm 23


6

Chồng giao thức dịch vụ Web là tập hợp các giao thức mạng máy tính
được sử dụng để định nghĩa, xác định vị
trí, thi hành và tạo nên dịch vụ Web
tương tác với những ứng dụng hay dịch vụ khác. Chồng giao thức này có 4 thành
phần chính:



Dịch vụ vận chuyển (Service Transport):

có nhiệm vụ truyền thông
điệp giữa các ứng dụng mạng, bao gồm những giao thức như HTTP,
S
MTP, FTP, JSM và gần đây nhất là giao thức thay đổi khổi mở rộng
(Blocks Extensible Exchange Protocol
-

BEEP).




Thông điệp XML:

có nhiệm vụ giải mã các thông điệp theo định dạng
XML để có thể hiểu được ở mức ứng dụng tương tác với người dùng.
Hiện tại, nhữn
g giao thức thực hiện nhiệm vụ này là XML
-
RPC, SOAP
và REST.




Mô tả dịch vụ:

được sử dụng để miêu tả các giao diện chung cho một
dịch vụ Web cụ thể. WSDL thường được sử dụng cho mục đích này, nó
là một ngôn ngữ mô tả giao tiếp và thực thi dựa trên XML. Dịc
h vụ Web
sẽ sử dụng ngôn ngữ này để truyền tham số và các loại dữ liệu cho các
thao tác và chức năng mà dịch vụ Web cung cấp.




Khám phá dịch vụ:

tập trung dịch vụ vào trong một nơi được đăng ký,
từ đó giúp một dịch vụ Web có thể dễ dàng khám phá ra những d
ịch vụ
nào đã có trên mạng, tốt hơn trong việc tìm kiếm những dịch vụ khác để
tương tác. Một dịch vụ Web cũng phải tiến hành đăng ký để các dịch vụ
khác có thể truy cập và giao tiếp. Hiện tại, UDDI API thường được sử
dụng để thực hiện công việc này.

3.

C
á
c gi
ao th

c trong web service

3.1.

XML

Do dịch vụ Web là sự kết hợp của nhiều thành phần khác nhau nên nó sử
dụng các tính năng và đặc trưng của các thành phần đó để giao tiếp. XML là
công cụ chính để giải quyết vấn đề này và là kiến trúc nền tảng cho việc xây
dựng

một dịch vụ Web
.

3.2.

WSDL
-

Web Service Description Language

WSDL định nghĩa cách mô tả dịch vụ Web theo cú pháp tổng quát của
XML, bao gồm các thông tin:



Tên dịch vụ.



Giao thức và kiểu mã hóa sẽ được sử dụng k
hi gọi các hàm của dịch vụ
Web.



Loại thông tin: t
hao tác, tham số, những kiểu dữ liệu (có thể là giao diện
của dịch vụ Web cộng với tên cho giao diện này).


Trường Đại học Công nghệ Thông tin
-

Khoa Công nghệ Phần mềm


Bộ mon Lập trinh phân tán



Nhóm 23


7

Một WSDL hợp lệ gồm hai phần: phần giao diện (mô tả giao diện và
phương thức kết nối) và phần thi hành mô tả thông tin truy xuất
c
ơ

s


d


li

u
(CSDL
)
. Cả hai phần này sẽ được lưu trong 2 tập tin XML tương ứng là tập tin
giao diện dịch vụ và tập tin thi hành dịch vụ. Giao diện của một dịch vụ Web
được miêu tả trong phần này đưa ra cách thức làm thế nào để giao tiếp qua dịch
vụ Web. Tên, giao thức liên
kết và định dạng thông điệp yêu cầu để tương tác với
dịch vụ Web được đưa vào thư mục của WSDL.


WSDL thường được sử dụng kết hợp với XML schema và SOAP để cung
cấp dịch vụ Web qua Internet. Một client khi kết nối tới dịch vụ Web có thể đọc
WSDL để xác địn
h những chức năng sẵn có trên server. Sau đó, client có thể sử
dụng SOAP để lấy ra chức năng chính xác có trong WSDL.




T

p tin .wsdl

do GoogleSearch cung cấp


3.3.

Universal Description, Discovery, and Integration
(UDDI)

Để có thể sử dụng các dịch vụ, trước
tiên client phải tìm dịch vụ, ghi nhận
thông tin về cách sử dụng và biết được đối tượng nào cung cấp dịch vụ. UDDI
định nghĩa một số thành phần cho biết các thông tin này, cho phép các client truy
tìm và nhận những thông tin được yêu cầu khi sử dụng dịch v
ụ Web.

Cấu trúc UDDI :



Trang trắng


White pages:

chứa thông tin liên hệ và các định dạng
chính yếu của dịch vụ Web, chẳng hạn tên giao dịch, địa chỉ, thông tin
nhận dạng… Những thông tin này cho phép các đối tượng khác xác định
được dịch vụ.

Trường Đại học Công nghệ Thông tin
-

Khoa Công nghệ Phần mềm


Bộ mon Lập trinh phân tán



Nhóm 23


8



Trang vàng


Yellow pages:

chứa thông tin mô tả dịch vụ Web theo
những loại khác nhau. Những thông tin này cho phép các đối tượng thấy
được dịch vụ Web theo từng loại với nó.



Trang xanh


Green pages:

chứa thông tin kỹ thuật mô tả các hành vi
và các chức năng của dịch
vụ Web.



Loại dịch vụ


tModel:


chứa các thông tin về loại dịch vụ được sử
dụng.

Những thông tin về dịch vụ Web được sử dụng và công bố lên mạng sử dụng
giao thức này. Nó sẽ kích hoạt các ứng dụng để tìm kiếm thông tin của dịch vụ
Web khác nhằm xác định xe
m dịch vụ nào sẽ cần đến nó.

3.4.

SOAP
-

Simple Object Access Protocol

Chúng ta đã hiểu cơ bản dịch vụ Web như thế nào nhưng vẫn còn một vấn
đề khá quan trọng. Đó là làm thế nào để truy xuất dịch vụ khi đã tìm thấy? Câu
trả lời là các dịch vụ Web có thể truy xu
ất bằng một giao thức là Simple Object
Access Protocol


SOAP. Nói cách khác chúng ta có thể truy xuất đến UDDI
registry bằng các lệnh gọi hoàn toàn theo định dạng của SOAP.


SOAP là một giao thức giao tiếp có cấu trúc như XML. Nó được xem là
cấu trúc xươn
g sống của các ứng dụng phân tán được xây dựng từ nhiều ngôn
ngữ và các hệ điều hành khác nhau. SOAP là giao thức thay đổi các thông điệp
dựa trên XML qua mạng máy tính, thông thường sử dụng giao thức HTTP.



<?xml version="1.0" encoding="UTF
-
8"?>


<S:
Envelope xmlns:S="sayHello xmlns:ns2="http://helloservice/">


<S:Header/>


<S:Body>


<ns2:sayHello xmlns:ns2="http://service/">


<arg0>Joe</arg0>


</ns2:sayHello>


</S:Body>


</S:Envelope>

Một request s
ử dụng giao thức SOAP



<?xml version="1.0" encoding="UTF
-
8"?>


<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">


<S:Body>


<ns2:sayHelloResponse xmlns:ns2="http://helloservice/">


<return>Hello, Joe.</retu
rn>


</ns2:sayHelloResponse>


</S:Body>


</S:Envelope>


Và respons
e tương ứng của nó.

Trường Đại học Công nghệ Thông tin
-

Khoa Công nghệ Phần mềm


Bộ mon Lập trinh phân tán



Nhóm 23


9

4.

Xây dựng một web service v
ới

c
á
c c
ô
ng ngh


c
ủa

Java

4.1.

Qui trình xây dựng một
web service

1)

Định nghĩa và xây dựng các chức năng, các dịch vụ mà dịch vụ sẽ c
ung
cấp (sử dụng ngôn ngữ Java chẳng hạn).

2)

Tạo WSDL cho dịch vụ

3)

Xây dựng SOAP server

4)

Đăng ký WSDL với UDDI registry để cho phép các client có thể tìm thấy
và truy xuất.

5)

Client nhận file WSDL và từ đó xây dựng SOAP client để có thể kết nối
với SOAP server
.

6)

Xây dựng ứng dụng phía client (chẳng hạn sử dụng Java) và sau đó gọi
thực hiện dịch vụ thông qua việc kết nối tới SOAP server.

7)

Lựa chọn một ngôn ngữ, xây dựng các tiến trình nghiệp vụ và chúng ta bắt
đầu tạo nên một dịch vụ Web như ý muốn. Sau đó là cung c
ấp dịch vụ
Web này trên Internet.

4.2.

Các t
h
ư

vi

n d
ù
ng đ


t
ạo

web service trong Java

Trong Java c
ó

hai th
ư

vi

n
phổ biến nhất
th
ườ
ng
được

s

d

ng đ


x
â
y d

ng
m

t web service,
đó

l
à

JAX
-
WS

v
à

Apache Axis.

4.2.1

JAX
-
WS

JAX
-
WS (
Java API for XML Web Services
) l
à

m

t b


th
ư

vi

n
đượ
c ph
á
t
tri

n d
ướ
i s


qu

n l
ý

c
ủa

Sun Microsystem. Trang ch


c
ủa

d


án

https://jax
-
ws.dev.java.net/

l
à

n
ơi

cung c

p c
á
c t
à
i li

u h
ướng

d

n, c
á
c b
ản

c

p nh

t th
ườ
ng
xuy
ê
n c
ủa

b


th
ư

vi

n n
ày
.


JAX
-
WS

gi
ú
p t
ạo

ra c
á
c d

ch v


web s


d

ng giao th

c XML. V
ới

vi

c
đượ
c t
í
ch h
ợp

s
ẵn

trong b


Java EE SDK v
à

đượ
c
đó
ng g
ói

k
è
m theo trong c
á
c
b


c

ng c


t
í
ch h
ợp

d
à
nh cho Java EE. n
ê
n JAX
-
WS l
à

b


th
ư

vi

n r

t ph


bi
ế
n
đ


t
ạo

ra nh

ng d

ch v


web.


H
ì
nh b
ê
n d
ướ
i

th


hi

n qu
á

tr
ì
nh li
ê
n l

c gi
ữa

m

t d
ịc
h v


web vi
ế
t d
ựa

tr
ê
n JAX
-
WS v
ới

client.



Ki
ế
n tr
úc

c
ủa

JAX
-
WS

Trường Đại học Công nghệ Thông tin
-

Khoa Công nghệ Phần mềm


Bộ mon Lập trinh phân tán



Nhóm 23


10

4.2.1.1

C
á
c b
ướ
c c
ơ

b

n đ


t


tay t
ạo

m

t web service v
ới

JAX
-
WS

Th
ô
ng th
ườ
ng m

t web service c

n c
ó

m

t
service endpoint interface (SEI)

l
à

m

t interface d
ù
ng đ


khai b
áo

c
á
c phư
ơ
ng th

c m
à

client c
ó

th


g
ọi

đ
ế
n. Tuy
nhi
ê
n khi x
ây

d

ng web service v
ới

JAX
-
WS c
á
c SEI c

n thi
ế
t ph
ải

c
ó
. Sau
đó

c
ác

interface SEI s


đượ
c c


th


h
ó
a b

ng phi
ê
n b

n c
ài

đ

t c
ủa

web service
(implementation class). C
á
c b
ướ
c c
ơ

b

n g

m

c
ó
:



Cài đặt các phương thức cho web service.



Biên dịch các class của web service thành một tập tin WAR.



Cài đặt và triển khai tập tin WAR

lên server
. Các class thành phần dùng
cho việc giao tiếp với client sẽ được tạo ra bởi server trong quá trình cài
đặ
t (deploy)


Viết một ứng dụng client để gọi web service:



S


d

ng
công cụ
wsimport

(c
ó

s

n trong
J
ava JDK) đ


t
ạo

v
à

bi
ê
n d
ịc
h
c
á
c stub files c
ủa

web service.



Bi
ê
n d

ch client.



Ch
ạy

client.

4.2.1.2

C
á
c l
ư
u
ý

khi c
ài

đ

t m

t
cụ thể hóa của SEI



Lớp cài đặt của web se
rvice phải được đánh dấu là các class
javax.jws.WebService

hoặc
javax.jws.WebServiceProvider

(dùng annotation @).



Lớp cài đặt phải được chỉ rõ là cài đặt cho interface SEI nào thông qua
thuộc tính endpointInterface của
@WebService
, nhưng việc này không
bắt

buộc. Nếu không có endpointInterface

n
à
o
đượ
c ch


ra, th
ì

class c
à
i
đ

t
đó

s


đượ
c ng

m
đị
nh l
à

c
ó

m

t SEI.



C
á
c ph
ươ
ng th

c c
ủa

l
ớp

c
ài

đ

t ph
ải

l
à

c
á
c ph
ươ
ng th

c public v
à

kh
ô
ng
đượ
c l
à

c
á
c ph
ươ
ng th

c t
ĩ
nh static hay final



C
á
c ph
ươ
ng th

c c
ủa

web serv
ice cho ph
é
p client g
ọi

c

n ph

i c
ó

khai
b
áo

annotation l
à

@
javax.jws.WebMethod
.



C
á
c tham s


v
à

c
á
c ki

u tr


v


c
ủa

c
á
c ph
ươ
ng th
ức

web service cung
c

p cho client ph
ải

l
à

c
á
c ki

u n

m trong JAX
-
B
-
compatible parameters
and return types. Xem
Default Data Type Bindings
.



L
ớp

c
ài

đ

t kh
ô
ng
đượ
c l
à

m

t l
ớp

final hay abstract.



L
ớp

c
ài

đ

t ph

i c
ó

m

t constructor m

c
đị
nh.



L
ớp

c
ài

đ

t kh
ô
ng
đượ
c phép định ngh
ĩa

ph
ư
ơ
ng th

c
finalize
.



Lớp cài đặt cần sử dụng các annotation là

javax.annotation
.
PostConstruct

ho

c
javax.annotation.PreDestroy

trong
c
á
c h
à
m ph
ục

v


vi

c qu

n l
ý

v
ò
ng
đời

c
ủa

c
á
c s


ki

n trong Web
service:m

t ph
ươ
ng th

c
@PostConstruct

đượ
c g
ọi

b
ởi

web servi
ce
container tr
ướ
c khi class c
ài

đ

t c
ủa

web service ph

n h
ồi

l
ại

client; c
á
c
ph
ươ
ng th

c
đượ
c khai b
á
o v
ới

@PreDestroy

web service container
tr
ướ
c khi web service
được

g


b

.

Trường Đại học Công nghệ Thông tin
-

Khoa Công nghệ Phần mềm


Bộ mon Lập trinh phân tán



Nhóm 23


11

4.2.1.3

Ví dụ



Tiến hành cài đặt một web service đơn giản như sau:

package helloservice
.endpoint;


import javax.jws.WebService;


@WebService()

public class Hello {


private String message = new String("Hello, ");



public void Hello() {}



@WebMethod()


public String sayHello(String name) {


return message + name + ".";


}

}




Biên d
ịch web service
: các web service thường được biên dịch bởi công
cụ Ant
. Để có thể tiến hành biên dịch Ant yêu cầu chúng ta phải cấu
hình các quá trình sẽ thực thi trong lúc cài đặt bằng một tập tin XML.
Đây là một tập tin… khá phức tạp và thường có mẫu sẵn

trong các IDE
và chúng ta chỉ việc chỉnh sửa
. Thông tin về Ant build file được cung
cấp rất đầy đủ tại
http://ant.apache.org/manual/using.html
, hay có thể
tham khảo các project có sẵn trong JDK (đượ
c đặt trong jdk1.version
.
x
\

sample
\
webservices
\
)
Sau khi đã làm tập tin build.xml. Vào màn hình
console (Run > cmd) và di chuyển đến thư mục có chứa tập tin
build.xml (thường được đặt ở ngoài cùng của project), gõ dòng lệnh sau:
build



Đóng gói và triển kha
i web service:

vào thư mục của project, chạy dòng
lệnh:

asant create
-
war



Kiểm tra server đã được khởi động hay chưa.



Thiết lập username và password của admin để Ant có thể deploy lên
server trong tập tin b
uild.properties.



Chạy dòng lệnh:
asant deploy



Sau k
hi deploy chúng ta có thể xem tập tin WSDL được tạo ra bằng cách
mở trình duyệt và vào địa chỉ:

http://servername:port/project_name/tên_webservce?wsdl

Ví dụ:
http://localhost:8080/hell
oservice/hello?wsdl



Để gỡ bỏ web service (undeploy) gõ dòng lệnh
: asant undeploy



Tiến hành tạo một web service client:

có hai cách



Dùng trực tiếp URL của WSDL:

-

Tạo một đối tượng của Web service một cách trực tiếp:

@WebServiceRef(wsdlLocation="
http://loc
alhost:8080/


helloservice/hello?wsdl
")

static HelloService service;


Trường Đại học Công nghệ Thông tin
-

Khoa Công nghệ Phần mềm


Bộ mon Lập trinh phân tán



Nhóm 23


12

-

Lấy một đại diện (proxy) của web service:

Hell
o port = service.getHelloPort();


-

Đối tượng port kiểu
Hello

là class mà chúng ta cài đặt. Còn đối tượng
service có kiểu là một interface
HelloService
, đó là một SEI do JAX
-
WS
mặc định tạo ra khi chúng ta cài đặt một web service.


-

Bây giờ chỉ việc gọi hàm:

String response = port.sayHello(name);

-

Source code hoàn chỉnh:

package simpleclient;


import javax.xml.ws.WebServiceRef;

import helloserv
ice.endpoint.HelloService;

import helloservice.endpoint.Hello;


public class HelloClient {


@WebServiceRef(wsdlLocation="http://localhost:8080/


helloservice/hello?wsdl")


static HelloService service;



public static void main(String[] args) {


try {


HelloClient client = new HelloClient();


client.doTest(args);


} catch(Exception e) {


e.printStackTrace();


}


}



public void doTest(String[] args) {


try {


System.out.println("Retrieving the port from


th
e following service: " + service);


Hello port = service.getHelloPort();


System.out.println("Invoking the sayHello operation


on the port.");



String name;


if (args.length > 0) {


name = args[0];


} else {



name = "No Name";


}



String response = port.sayHello(name);


System.out.println(response);


} catch(Exception e) {


e.printStackTrace();


}


}

}


Trường Đại học Công nghệ Thông tin
-

Khoa Công nghệ Phần mềm


Bộ mon Lập trinh phân tán



Nhóm 23


13



Ngoài cách trên, chúng ta còn có thể dùng công cụ
wsimport

được cung
cấp tron
g JDK để tạo các class từ URL của tập tin WSDL:

-

Vào màn hình dòng lệng và di chuyển đến thư mục src của client. Gõ
dòng lệnh sau:

wsimport
-
keep
http://localhost:8080/helloservice/hello?wsdl
"


-

Sau quá trình parse web service thành các class, chúng ta sẽ có các tập tin
sau:

HelloService.java

Hello.java

HelloResponse.java

ObjectFactory.java


-

Các bước tạo đối tượng web service tương tự nhu cách trên nhưng với một
khác biệt nhỏ:

static HelloService
service;


Chúng ta không cần URL tới WSDL nữa vì đã có các class dưới client.

-

Về bản chất cách đầu tiên cũng thực hiện các bước ở cách thứ hai.

4.2.2

Apache Axis

Đây là bộ thư viện mã nguồn mở được phát triển bởi Apache Software
Foundation. Axis hỗ trợ tạo ra cá
c web service dựa trên giao thức SOAP.


Trong báo cáo này, nhóm
23

chỉ tập trung vào xây dựng web service với
JAX
-
WS. Các thông tin về Axis được cung cấp rất đầy đủ tại
http://ws.apache.org/axis/

.


Trường Đại học Công nghệ Thông tin
-

Khoa Công nghệ Phần mềm


Bộ mon Lập trinh phân tán



Nhóm 23


14

PHẦN B:

TRIỂ
N KHAI ĐỒ ÁN
TASK MANAGER

1.

Lời nói đầu:


Sau đây là đồ án triển khai áp dụng một trong kỹ thuật Webservice
(SOAP) , một trong các kỹ thuật cần thiết trong nền tảng J2EE


Do đây là đồ án nghiên cứu nền tảng cơ bản J2EE , nên nhóm chúng tôi
tránh nhờ đến sự
giíp đỡ của các framework như Spring , Hibernate hay Strut …
mà sẽ tự xây dựng mô hình MVC dựa trên các kỹ thuật cơ bản của JSP , Servlet


Tuy nhiên chắc chắn sẽ không tránh khỏi những sai sót. Vi vậy, rất mong
nhận được những nhận xét và những ý kiến đón
g góp của quý thầy cô và các bạn
để chúng ta có thể cùng trao dồi và chia sẻ kiến thức, giúp ích được trong học tập
và trong công việc.


2.

Project TaskManager

2.1.

Giới thiệu

TaskManager là một ứng dụng web được cài đặt dựa trên nền tảng Java
EE. Chức năng chính
của hệ thống là cung cấp một công cụ cho các nhóm làm
việc vừa và nhỏ để có thể quản lý các dự án, giúp trưởng nhóm có thể phân công
công việc cho các thành viên trong nhóm cũng như quản lý được các dự án.


Ngo
à
i một hệ thống chạy trên nền web, TaskManager

còn cung cấp một
web service, cho phép các thành viên không cần đăng nhập vào trang web của hệ
thống mà vẫn có thể theo dõi được những công việc mà mình mới được giao, cập
nhật trạng thái của công việc, cũng như cập nhật thông về các dự án hay các công
vi
ệc mới nhất.


2.2.

Yêu cầu chức năng


Chương trình phải cho phép người dùng (leader hay project manager ,
member) được phép có các thao tác cơ bản để quản lý task trong project


a.

Leader

(admin , project manager)



Trường Đại học Công nghệ Thông tin
-

Khoa Công nghệ Phần mềm


Bộ mon Lập trinh phân tán



Nhóm 23


15



Trưởng nhóm hay người quản trị có thể:

-

Tạo mớ
i thành viên.

-

Tạo mới project.

-

Chỉnh sửa thông tin của các thành viên.

-

Chỉnh sửa thông tin của các dự án

-

Phân công nhiệm vụ (task) cho các thành viên.

-

Chỉ có admin mới có quyền xóa, hủy bỏ một project, một task hay một
thành viên khác.


b.

Member




Các thàn
h viên trong nhóm có thể:

-

Truy cập vào hệ thống thông qua giao diện web

-

Truy cập vào hệ thống thông qua một ứng dụng desktop phía client.

Trường Đại học Công nghệ Thông tin
-

Khoa Công nghệ Phần mềm


Bộ mon Lập trinh phân tán



Nhóm 23


16

-

Xem các project mà mình đã tham gia.

-

Cập nhật các task mà mình được giao.

-

Cập nhật trạng thái cho các task (đang làm,
đã hoàn thanh hay từ chối).

-

Các thành viên có thể xem được các task và các project mới nhất hiện
chưa có thành viên nào tham gia.

-

Mỗi thành viên có thể tham gia nhiều task.


Lưu ý

: Một project hay một task sẽ có số lượng thành viên nhất định do
admin định

trước.

2.3.

Cấu trúc chương trình

Chương trình được thiết kế từ đầu theo mô hình MVC (Model


Controller
-

View):



Controller : đóng vai trò quản lý điều phôi toàn bộ chương trình.



Model : Xử lý các thao tác business , kết nối db , mapping object với db,
trả về

dữ liệu cần thiết.



View : đóng vai trò hiển thị với người dùng cuối ,ngoài ra nhóm còn cài
đặt cơ chế thay đổi template tùy thích dựa vào kỹ thuật định nghĩa các
Custom Tag

Ngoài việc cho phép user quản lý (theo dõi) task thông qua giao diện web ,
nhóm c
òn hổ trợ cho các thành viên của project theo dõi và cập nhật trạng thái
task của mình thông qua một chương trình nền Destop bằng kỹ thuật webservice




Trường Đại học Công nghệ Thông tin
-

Khoa Công nghệ Phần mềm


Bộ mon Lập trinh phân tán



Nhóm 23


17


2.4.

Chạy chương trình phía server

Chọn File > Open Project, mở project có tên TaskManager_
Server

được
đín
h kèm theo báo cáo này.


Nhấp phải p
\
vào project chọn RUN, giao diện chính của màn hình xuất
hiện:





Nhập user và password để đăng nhập vào hệ thống:




Trường Đại học Công nghệ Thông tin
-

Khoa Công nghệ Phần mềm


Bộ mon Lập trinh phân tán



Nhóm 23


18


2.5.

Chạy chương trình phía client

Chọn File > Open Project, mở project có tên TaskManager_Client được
đính kèm theo báo cáo này.

N
hấp phải chọn RUN để chạy ứng dụng.




Nếu đăng nhập thành công thì màn hình giao diện cơ bản của Task
Manager client sẽ hiện ra:





Trường Đại học Công nghệ Thông tin
-

Khoa Công nghệ Phần mềm


Bộ mon Lập trinh phân tán



Nhóm 23


19

Để xem các tasks của user hiện tại chọn Show Tasks:



Trường Đại học Công nghệ Thông tin
-

Khoa Công nghệ Phần mềm


Bộ mon Lập trinh phân tán



Nhóm 23


20

PHỤ LỤC:
XÂY DỰNG VÀ TRIỂN KHAI MỘT
WEB
SERVICE TỪ CÁC CÔNG CỤ CÓ SẴN

Thực sự, việc tự tay xây dựng một web service là điều có thể, nhưng sẽ là rất
phức tạp đối với những người mới bắt đầu vì một web service cần rất nhiều tập
tin cấu hình, các bước biên dịch,… Vì vậy hầu như ngày nay các we
b service
đều được tạo ra bàng các bộ công cụ tích hợp sẵn như NetBeans IDE, Eclipse,…
Trong phần này chúng ta sẽ cùng tìm hiểu cách sử dụng các công cụ sẳn có để
tạo và sử dụng một web service.

1.

Các công cụ cần thiết



JDK 6 update 13 hay m
ới

h
ơn

(
http://java.sun.com/javase/downloads/index.jsp
)



NetBeans IDE 6.5 hay cao h
ơ
n, ch
ú

ý

n
ê
n t

i g
ói

đ
ầy

đủ

c
á
c

ng d

ng
(kho

ng 240 MB) t
ại

http://www.net
beans.org/downloads/




Ngo
ài

ra, do c
á
c v
í

d


v
à


ng d

ng c
ủa

nh
ó
m c
ó

s


d

ng c
ơ

s


d


li

u
MYSQL n
ê
n c

n c
ài

đ

t MySQL. Download b


c
ô
ng c


tich h
ợp
:
(Apache, PHP, MySQL v
à

PHPMyAdmin)
XAMPP for Windows

phiên bản
1.7.1
tại
http://www.apachefriends.org/download.php?xampp
-
win32
-
1.7.1
-
installer.exe




Driver d
ù
ng đ


k
ế
t n
ối

v
ới

c
ơ

s


d


li

u MySQL

cho Java: version
5.1.7

http://dev.mysql.com/downloads/connector/j/

2.

Cài đặt và cấu hình c
á
c c
ô
ng c




C
à
i đ

t JDK


Trường Đại học Công nghệ Thông tin
-

Khoa Công nghệ Phần mềm


Bộ mon Lập trinh phân tán



Nhóm 23


21




C
ài

đ

t NetBeans IDE:





C
ài

đ

t XAMP
P

for Windows:





C
ài

đ

t MySQL driver cho m
á
y ch


Glassfish:

Trường Đại học Công nghệ Thông tin
-

Khoa Công nghệ Phần mềm


Bộ mon Lập trinh phân tán



Nhóm 23


22

-

Extract gói driver MySql.

-

Copy tập tin
mysql
-
connector
-
java
-
5.1.7
-
bin
.jar vào thư mục lib trong
Glassfish v2.1 (mặc định là
C:
\
Program Files
\
glassfish
-
v2.1
\
lib)





Tạo c
ơ

sở dữ liệu:

-

Khởi động máy chủ Apache: trên desktop hay vào Program Files >
XAMP
P

>
xampp
-
control
.


Trường Đại học Công nghệ Thông tin
-

Khoa Công nghệ Phần mềm


Bộ mon Lập trinh phân tán



Nhóm 23


23


-

Ở mục Apache, nhấn Start để khởi động

máy chủ Apache.

-

Vào trình duyệt, gõ
http://localhost
:




-

Nếu lần đầu tiên sử dụng, cần chọn ngôn ngữ hiển thị.Ở đây chúng ta chọn
English.

-

Ở vùng phía bên trái màn hình, chọn “PhpMyAdmin”:



Trường Đại học Công nghệ Thông tin
-

Khoa Công nghệ Phần mềm


Bộ mon Lập trinh phân tán



Nhóm 23


24

-

Giao diện PHPMyAdmin xuất hi
ện:



-

Trong mục “Create New Databse” gõ “mytimer”, nhấn enter.



Trường Đại học Công nghệ Thông tin
-

Khoa Công nghệ Phần mềm


Bộ mon Lập trinh phân tán



Nhóm 23


25

Cơ sở dữ liệu “mytimer” đã được tạo:


-

Chọn tab “SQL” trên thanh công cụ:



-

Mở tập tin
mytimer
,sql (được đính kèm trong thư mục của project này).


Trường Đại học Công nghệ Thông tin
-

Khoa Công nghệ Phần mềm


Bộ mon Lập trinh phân tán



Nhóm 23


26


-

Copy nội dung của tập tin này vào và dá
n vào vùng

Run SQL
query/queries on database mytimer”
trong PHPMyAdmin
:



-

Nhấn “Go” để thực thi câu Query.

-

Như vậy chúng ta đã cài đặt thành công CSDL mytimer cho ví dụ này:





Khởi động NetBeans IDE.



Chọn File > Open Project. Mở project TaskMananger_Serv
er được kèm
theo trong báo cáo này.

Trường Đại học Công nghệ Thông tin
-

Khoa Công nghệ Phần mềm


Bộ mon Lập trinh phân tán



Nhóm 23


27





Chọn tab “Services”





Chọn mục Servers, nếu chưa có server nào thì nhấp phải chọn Add
Server…

Trường Đại học Công nghệ Thông tin
-

Khoa Công nghệ Phần mềm


Bộ mon Lập trinh phân tán



Nhóm 23


28





Hộp thoại tạo server hiện ra:





Làm theo các bước như hướng dẫn để thêm một server mới. Lưu ý là để
TaskManager có thể

chạy được server cần được được chọn là GlassFish
V2.



Sau khi đã có server, click phải chuột, chọn Start để khởi động Server:

Trường Đại học Công nghệ Thông tin
-

Khoa Công nghệ Phần mềm


Bộ mon Lập trinh phân tán



Nhóm 23


29





Sau khi server đã khởi động thành công.Chúng ta sẽ tiến hành tạo
Connection Pool cho cơ sở dữ liệu mytimer đã tạo ở các bước tr
ước.



Mở Xamp
p

control. Kiểm tra xem MySQL server đã được khởi động
hay chưa:





Vào trình duyệt, gõ
http://localhost:4848

để vào trang admin của
GlassFish:

Trường Đại học Công nghệ Thông tin
-

Khoa Công nghệ Phần mềm


Bộ mon Lập trinh phân tán



Nhóm 23


30





Đăng nhập vào với user và password được thiết lập lúc cài

đặt (mặc định
là admin


adminadmin).



Trong phần
Common Tasks

ở khung phía bên trái, chọn Resources:




Trường Đại học Công nghệ Thông tin
-

Khoa Công nghệ Phần mềm


Bộ mon Lập trinh phân tán



Nhóm 23


31

Nhấn Connection Pool, chọn New…





Trong mục Name, gõ
mytimer
.



Trong mục Resource Type chọn

javax.sql.ConnectionPoolDataSource
.



Mục
Database Vendor

ch
ọn MySQL.



Nhấn Next để đến bước tiếp theo.



Trong phần
Additional Propertie
s ở dưới cùng, chúng ta chỉ cần thíêt lập
các thông tin sau:

-

User:
root

-

Passsword: 123456 (user name và password đăng nhập vào database).

-

DatabaseName:
mytimer

-

ServerName:
localhost.

-

Url
:
jdbc:mysql://localhost:3306/mytimer

-

U
RL (chú ý có 2 url):
jdbc:mysql://localhost:3306/mytimer

-

Nhấp Finish.

-

Nhấn Ping để test xem connection pool có liên kết được với server
MySQL hay chưa.



Tạo JDBC Resource:

-

Ở khung bên trái màn hình, chọn JDBC resour
ces,chọn New:

Trường Đại học Công nghệ Thông tin
-

Khoa Công nghệ Phần mềm


Bộ mon Lập trinh phân tán



Nhóm 23


32





Thiết lập giá trị cho các mục:

-

JNDI Name:

jdbc/mytimer

-

Pool Name:
mytimer



Nhấn OK để hoàn tất.

3.

Tạo một web service trong NetBeans IDE



Trong NetBeans, chọn File > New Project.



Trong mục Categories chọn Java Web.



Ở khung phía bên phải chọn W
eb Application.

Trường Đại học Công nghệ Thông tin
-

Khoa Công nghệ Phần mềm


Bộ mon Lập trinh phân tán



Nhóm 23


33





Các bước thiết lập khác cứ để mặc định hoặc có thể tùy chỉnh lại theo ý
muốn. Nhấn Finish.



Sau đó trong mục Web Services, nhấp phải, chọn New > Web Service…




Các bước còn lại có thể làm như ví dụ trên hay làm theo các chỉ dẫn rất
trực q
uan của NetBeans.

4.

Tạo một Web Service Client trong NetBeans

Các hướng dẫn chi tiết về tạo một web service và web service client có thể tham
khảo tại
http://www.netbeans.org/kb/docs/websvc/j
ax
-
ws.html
.

Trường Đại học Công nghệ Thông tin
-

Khoa Công nghệ Phần mềm


Bộ mon Lập trinh phân tán



Nhóm 23


34



Trong NetBeans chọn New > Project.



Chọn Java > Java Application.





Click phải vào project và chọn New > Web Service client.





Sau đó làm theo hướng dẫn của NetBeans.

5.

Cài đặt

và chạy ứng dụng

Trong

NetBeans IDE, vào thẻ Projects, nhấp phải lê
n project TaskManager, chọn
Deploy:

Trường Đại học Công nghệ Thông tin
-

Khoa Công nghệ Phần mềm


Bộ mon Lập trinh phân tán



Nhóm 23


35






Sau khi deploy thành công, vào Web Services trong project
TaskManager, nhấp phải lên MyTimerWs chọn Test Web Service để test
web service:






Tuy nhiên bước này không cần thiết vì sau khi deploy thì web service đã


thể sử dụng được từ phía client.

Trường Đại học Công nghệ Thông tin
-

Khoa Công nghệ Phần mềm


Bộ mon Lập trinh phân tán



Nhóm 23


36

Lời

kết

Web service với khả năng chạy linh động và không phụ thuộc nền, được
xây dựng với nền tảng Java là một sự kết hợp tuyệt vời để tạo ra những hệ thống
tích hợp với chi phí thấp và đạt hiệu quả cao.


Với sự hỗ trợ c
ủa các công cụ có sẵn, việc tạo một web service không phải
là điều khó trong Java. Tuy nhiên để thực sự có thể hiểu được thấu đáo vấn đề thì
rất phức tạp. Đồ án TaskManager hiện đang mới ở giai đoạn hình thành nên còn
khá thô sơ, nhưng nó hứa hẹn sẽ là một

ứng dụng hữu dụng cho các nhóm làm
việc vừa và nhỏ phục vụ rất tốt trong việc học tập của sinh viên.


ooOoo

Trường Đại học Công nghệ Thông tin
-

Khoa Công nghệ Phần mềm


Bộ mon Lập trinh phân tán



Nhóm 23


37



Tài liệu tham khảo



“Khái niệm web service”
-

http://en.wikipedia.org/wiki/Web_service



“Phát triển Web Service với các công nghệ chuẩn của java”
-

http://www.javavietnam.org/javavn/mvnforum/viewthread_thread,13718




GlassFish and MySQL, Part 3: Creating and Us
ing a Web Service

-

http://java.sun.com/developer/technicalArticles/glassfish/GFandMySQL
_Part3.html




Web Services Tutorial

-

http://www.w3schools.com/webservices/default.asp



SOAP
-

http://www.w3c.org/TR/soap



WSDL
-

http://www.w3c.org/TR/wsdl



UDDI
-

http://www.uddi.org




Getting Started with JAX
-
WS Web Services

-

http://www.netbeans.org/kb/docs/websvc/jax
-
ws.html




Metro Web Services Overview

-

http://java.sun.com/webservices/



JAX
-
WS
-

https://jax
-
ws.dev.java.net/



Apache Axis
-

http://ws.apache.org/axis/




Creating a Web
Service
with Glassfish“
-

http://java.sun.com/webservices/reference/tutorials/wsit/doc/Examples_
glassfish4.html




The Java™ Web Services Tutorial

-

http://java.sun.com/webservices/docs/2.0/tutorial/doc/JavaWSTutorial.p
df



Ant build file
-

http://ant.apache.org/man
ual/using.html



Sample build.xml
-

http://www.adp
-
gmbh.ch/java/ant/build_xml.html



Các ví dụ về web service trong Java JDK (thường được đặt trong
C:
\
Program Files
\
Java
\
jdk1.6.0_07
\
sample
\
webser
vices
\
)



Các ví dụ có sẵn trong GlassFish (thường được đặt trong
\
Sun
\
AppServer
\
samples

hay glassfish
\
samples).