1. Trang chủ
  2. » Luận Văn - Báo Cáo

Ứng dụng ADF Framework của Oracle vào quản lý nhân sự tiền lương

78 772 1
Tài liệu được quét OCR, nội dung có thể không chính xác
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Ứng dụng ADF Framework của Oracle vào quản lý nhân sự tiền lương
Trường học University of Economics Ho Chi Minh City
Chuyên ngành Management Information Systems
Thể loại Nghiên cứu sinh viên
Năm xuất bản 2023
Thành phố Ho Chi Minh City
Định dạng
Số trang 78
Dung lượng 3,48 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

J2EE Components Đặc điểm kỹ thuật J2EE định nghĩa theo các thành phần J2EE: e Ung dung client va applets là các thành phần thực thi trên máy “standard” Java class là J2EE component là J2

Trang 1

TRƯỜNG ĐẠI HỌC KỸ THUẬT CÔNG NGHỆ TP.HCM BỘ GIÁO DỤC VÀ ĐÀO TẠO

KHOA CÔNG NGHỆ THÔNG TIN

BỘ MÔN MẠNG MÁY TÍNH

css

LUẬN VĂN TÓT NGHIỆP

Ung dung ADF framework

cua Oracle vao quan ly

nhan su - tién luong

Trang 2

BỘ GIÁO DỤC & ĐÀO TẠO CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM

ĐẠI HỌC KỸ THUẬT CÔNG NGHỆ TP.HCM ĐỘC LẬP - TỰ DO - HẠNH PHÚC 144/24 Điện Biên Phủ - Q Bình Thạnh - TP.HCM 000

ĐT : 5120254 ~ 5120294

Khoa : Công Nghệ Thông Tin NHIỆM VỤ THỰC HIỆN ĐỒ ÁN TỐT

Họ và tên: Lê Tiến Hưng MSSV: 02DHTH079

Ngành: Mạng Máy Tính Lớp: 02DHMMT

1 Đầu đề đô án tốt nghiệp :

AP DUNG ADF FRAMEWORK CUA ORACLE VAO

QUAN LY NHAN SV - TIEN LUONG

2 Nhiém vu :

a Dữ liệu ban đầu :

Oracle Application Development Framework (Oracle ADF) 14 mét framework tng dụng end-to-end được xây dựng trên chuẩn J2EE và công nghệ mã nguồn mé nhằm đơn giản hoá việc thực thi các ứng dụng hướng

dịch vụ Tuy nhiên, ADE là một amework mạnh và phức tạp, do đó ở đây

chỉ tìm hiểu về các công nghệ nền tâng và các quy trinh trong ADF

Mục tiêu:

- Tìm hiểu ADF framework

- Áp dụng tạo ra phần mềm quản ly Nhân sự - Tiền lương

b Nội dung

> Phần tìm biểu công nghệ :

o_ TopLink: Oracle TopLink là một framework đối tượng thường trực và đối tượng biến đổi tiên tiến để cung cấp các công cụ phát triển và môi trường runtime để giảm thiểu thời gian phát triển và bảo trì, đồng thời tăng cường các chức năng ứng dụng doanh nghiệp

o J2EE: cung cap mot thanh phần cơ sở áp dụng vào việc thiết kế, phát triển

và triển khai ứng dụng doanh nghiệp J2EE platform đưa ra một mô hình ứng dụng phân phối đa tầng, các thành phần tái sửa dụng và một mô hình

bảo mật thống nhất, điều khiển giao dịch linh động và dịch vụ web hỗ trợ

thông qua việc hợp nhất dữ liệu trao đổi trên XML (Extensible Markup Language), dựa trên chuẩn và giao thức mở

o_ JDeveloper: Oracle JDeveloper là một môi trường phát triển tích hợp (IDE

— Integrated Development Environment) cho việc xây dựng các ứng dụng hướng dịch vụ sử dụng các chuẩn công nghệ mới nhất cho Java, XML, Web

service va SQL

o ADF: Oracle ADF 1a framework cai tiến từ framework J2EE.Nó đơn giản hóa viêc phát triển ứng dụng J2EE, hạn chế tối đa việc viết code cho giao

Trang 3

diện, cung cấp các công cụ giúp phát triển ứng dụng J2EE một cách trực

quan và dễ dàng hơn

> Phần phân tích, thiết kế & xây dụng ứng dụng minh hga :

Phân tích và thiết kế hệ thống thông tin tiến đến xây dựng phần mềm Quản lý

Nhân sự - Tiền lương cho công ty

3 Ngày giao nhiệm vụ đô án :

23/10/2006

4 Ngày hòan thành nhiệm vụ :

22/01/2007

5 Họ tên giáo viên hướng dẫn : Thầy Dương Thiên Tứ

Nội dung và yêu cầu đề án tốt nghiệp đã thông GIÁO VIÊN HƯỚNG DẪN CHÍNH

Ngày bảo vệ :

Điểm tổng quát : ác ccc H121 ccccec

Trang 4

ĐẠI HỌC KỸ THUẬT CÔNG NGHỆ TPHCM TP Hồ Chí Minh, ngày tháng năm

HOI DONG CHAM THI TOT NGHIEP

NGANHS: vinvevecnccsnsnsesetnsnrmensesesnsneasess

PHIẾU CHẤM ĐIỂM HƯỚNG DẪN ĐỒ ÁN TỐT NGHIỆP

Tên sinh viÊn: -.2- St nn2n2.21321221 2100111011111 2S esacevecesessescussevevenesesssensssssansesessessetenesesscevacavausneseesueeseessvevevecevesevavsteseseeees MSSV:

Nhận xét:

Những ưu điểm chính: 2-©2s+ Sa 2E122211112211E1711E1211.12T11112.111117112711.11 11e 1e

lãi) 1840) NA 44

Chi tiết

nêu ra trong đổ án Mức độ hòan thành công việc của

sinh viên

3 | Tinh thân và thái độ làm việc: chăm chỉ, cần cù, nghiêm tic va tinh than tự lập trong khi lam viéc /1,5

4 | Kha nang đọc sách ngọai ngữ tham khảo /0,5

7 _¡ Thời gian hòan thành và nộp báo cáo /0,5

Giáo viên hướng dẫn

(ký và ghi rõ họ tên)

Trang 5

ĐẠI HỌC KỸ THUẬT CÔNG NGHỆ TP.HCM 7P Hồ Chí Minh, ngày tháng năm

HỘI ĐÔNG CHẤM THỊ TỐT NGHIỆP

he):

^

PHIEU CHAM PHAN BIỆN ĐỒ ÁN TỐT NGHIỆP

Họ và tên sinh vIÊn: .s- ca các HH HE 115621111222 MSSV:

Điểm sốt nguyên) /10 Điểm bằng chữ: cccL.LLLkLr.rrcecee

Giáo viên hướng dẫn

(ký và ghi rõ họ tên)

Trang 6

LỜI CẢM ƠN

Con đường học tập quả là miệt mài, trong suốt gần 5 năm học ở trường chúng em đã tiếp thu rất nhiều kiến thức từ các thầy cô Luận văn tốt nghiệp này chính là tổng hợp những gì mà chúng em học tập được bấy lâu nay

Trước hết chúng em xin chân thành cảm ơn tất cả các thầy cô trong trường Đại học Kỹ Thuật Công Nghệ TP.HCM đã dạy dỗ, truyền đạt những kiến thức quý báu cho đến ngày hôm nay, nhất là các thay cô trong khoa Công Nghé Thong Tin

Chân thành cảm ơn công ty Tâm Việt đã tận tình hướng dẫn, giúp đỡ, và tạo mọi điều kiện thuận lợi cho chúng em hoàn thành khoá luận

Đặc biệt cảm ơn thầy Dương Thiến Tứ và anh Hiển, người đã gợi ý,

hướng dẫn chúng em thực hiện tôt khoá luận tôt nghiệp này

Cảm ơn tất cả những người đã gián tiếp tạo điều kiện thuận lợi trong quá trình làm khoá luận Dù đã cố gắng nhưng do hạn chế về thời gian và kinh nghiệm nên khoá luận này không tránh những thiếu sót Chúng em rất mong nhận được được sự đóng góp ý kiến, hướng dẫn chân tình của quý thây cô

Trang 7

MỤC LỤC

Phần 1: Cơ sở lý luận -:5- 12 22.220ee 2

Chương 1: Cơng nghệ J2EE - 2-25 25s ks+kczerkersrx 2

Can 2

HH J2EE Componenfs + - t2 212321221 10x tr gykt 2 00/1006 an m4 2

| Container Se€rVIG€ cv nen ri 2

2 Cac loại COnaÏT€F .- SG SH ngư tre rez 3

TV J2ZEE Platform 4

1 J2EE Platform là gì? St vn L2 11211, 4

2 Những lợi ích của J2EE Platform . 5-5 -<- 4

3 Các cơng nghệ của J2EE, Platform - 5-55 4

3.1JSP — JavaServer Pag€S cover 5 E1 .Ơ 6 3.3 JSF — Java Server Faces code, § 3.4 EJB — Enterprise Java Bean - 15

IL TopLink là gì? . - cv 2 hưu 20

0n na 20

2 Cac tinh nang chính của TopLink -¿ 21

3 Kiến trúc ứng dụng TopLink ccc:s+5cszee 21

Il Xây dựng ứng dụng TopLink . S555 5+ 26

l Xây dựng ứng dụng với TopLink . 26

2 Chọn một cấu trúc với TopLinkk cscs=s 27

3 Xây dựng và sử dụng Persistence Layer 28

4 Triển khai ứng dụng - 2s cccecxeesrrkeerree 31

Chuong HI: Oracle JDeveloper .- 32

I Giới thiệu LH HH HH de 32

2 Productivity with Choice© c.so- sec rrces 32

3 Standard, Open và Extensible . scsc<ec+ 33

II Visual và Declare J2EE Development 33

1 Business Layer 33

2 Model LAY€T Ă cà HH HH HH krrkp 34

3 Controller Lay€r -.- ccccccce 34

A, Vi€W LAY€T HQ SH HH ngư, 35

TH Full Live Cyele 36

1 UML Modeling va MDA .ecsceescesessseseseeesesseesenesens 36

3 Debugging và Tesfing -.- co ccc sec cc sec, 38

4 Code Profiling va Optimization 38

5 Deployment oo ecceeeeseeeeeeseesesenseseseesseeseessesseseeseaee 38

6 Team Developm€ht . - cccc xe rerrèt 39

Trang 8

T in 40

II Kiến trúc Oracle ADE -cccsccirrrrrirrerrier 40 ID an 41

2 Controller Lay€r -Ặ St Ssnerreeeereee 41 3 Business Service LLaY€r series 4I An, na 4I IH.ADEF Business Componenfs .- - -+-<+5 4I 1 ADF Entity Object Definitions .- 42

2 ADE AÀSSOCIAtÏOPS Series 45 EV\V)) PT 46

4 ADF View Object Delnitions .- 48

5 ADF View Link Definitions - -<~~- 50 6 ADF Application Module Definitions 51

7 ADF Business Components Design Decisions 54

IV Đặc tính Databinding trong ADF 56

1 Những lợi ích chính của ADF Model Layer 57

2 Model Layer Component . -cc+cxressrrke 37 V Lợi ích của Oracle AE -.- 2ĂccSĂseieseeeees 59 Phần 2: Phân tích, thiết kế và xây dựng ứng dụng 61

I Phân tích, thiết kế 5ccersrriirrrtrirrrrrirrrrrrrree 61 1 Quản lý nhân SỰ - Ăn nh HH về Hy re 61 2 Quản lý tiền WON oo ees eee essesecscesscescsscsnsanesesseserenneaeeas 61 3 Các modul trong hệ thống . . .2- 255552 c5<+scsee 62 H Xây dựng ứng dụng LG S St SH re cenrerree 62 1 Phân tích sơ đồ chức năng (BFD) 2-c-2©c< c2 c2 62 2 Phân tích sơ đồ quan hệ thực thể (ERD) .63

3 Phân tích sơ đồ dòng dữ liệu (DED) -. cs-cs 64 4 Cac Table trong chương trình . -c ce- 65 HI Các tính năng và ưu điểm của hệ thống HT KH HH nh 66 Phần 3: Kết luận và hướng phát triển của đề tài 68

I.Tóm tắt và nhận Xét - + St SE rkerkerkerrrrei 68 II Hướng phát triển của đề tài 5-52-5525 snrerxeerkered 69 L0 ái in 70

Trang 9

Lê Tiền Hưng - 02DHTH079

Huỳnh Quốc Huy - 02DHKT047

MO DAU

Từ giữa thế kỷ 20, nhân loại đã chứng kiến cuộc cách mạng khoa học kỹ

thuật phát triển mạnh mẽ trên toàn thế giới Đặc trưng của cuộc cách mạng

khoa học kỹ thuật này là kỹ thuật máy tính và công nghệ thông tin

Bước vào thế kỷ 21, Công nghệ thông tin đã có những bước phát triển vượt bậc Nó được xem như là một ngành trọng điểm của quốc gia Đặc biệt là lĩnh vực công nghệ phần mềm đã có những tiên triển sắc nét Các chuyên gia lập trình đã tạo ra nhiều sản phẩm để hỗ trợ cho con người trong quá trình làm việc cũng như trong cuộc sống

Con người giờ đây đã rất quen thuộc với máy tính Các tổ chức, công ty

không còn làm việc quản lý số sách, giấy tờ bằng tay nữa, mà họ đã chuyên sang dùng máy tính, việc này giúp họ làm việc thật dễ dàng và có hiệu quả cao hơn

Ngày nay các doanh nghiệp hầu như đều có phần mềm quản lý công ty của mình, họ dùng nó để quản lý sản phẩm, nhân viên, tiền lương, hay các vấn

đề khác Nhận thây được nhu cầu thiết yếu này, chúng em đã thực hiện khoá luận: “Ứng dụng ADF Framework của Oracle vào quản lý Nhân sự - Tiền

lương”, với mục đích nghiên cứu, ứng dụng và tạo ra một phan mém dé ap

dụng vào công ty

Oracle là một công cụ rất mạnh trong việc quản lý cơ sở dữ liệu, ứng dụng để tạo ra các sản phẩm doanh nghiệp Nó hỗ trợ nhiều framework mạnh, nhưng do thời gian hạn chế nên trong khoá luận này chúng em chỉ tập trung nghiên cứu một trong các framework của Oracle, đó là Oracle Application Development Framework — ADE

Khoá luận bao gồm các phần:

Phần 1: Cơ sở lý luận

Tổng hợp tất cả các kiến thức liên quan đến luận đề tài, bao gồm các

công nghệ có trong ADF frame work

Phan 2: Phan tích, thiết kế và xây đựng ứng dụng

Nghiên cứu, tìm hiéu hiện trạng của các doanh nghiệp nước ta hiện nay

Từ đó phân tích, xem xét tình hình và thiết kế nên ứng dụng

Phan 3: Két luận và hướng phát triển của đề tài

Trang 10

Lê Tiến Hưng - 02DHTH079

Huynh Quéc Huy — 02DHKT047

Phan 1

CO SO LY LUAN Chuong I `

CONG NGHE J2EE

tử và công nghệ thông tin, các ứng dụng doanh nghiệp phải được thiết kế, xây dựng và sản phẩm phải có giá thành thấp, tốc độ cao và nhiều tài nguyên hơn trước kia

Để hạ giá thành, đây nhanh tiến độ thiết kế ứng dụng và phát triển sản phẩm thì JavaTM2Platform, Enterprise Edition (J2EETM) cung cấp một thành phần cơ sở áp dụng vào việc thiết kế, phát triển và triển khai ứng dụng doanh nghiệp J2EE platform đưa ra một mô hình ứng dụng phân phối

đa tâng, các thành phần tái sửa dụng và một mô hình bảo mật thống nhất, điều khiển giao dịch linh động và dịch vụ web hỗ trợ thông qua việc hợp nhất dữ liệu trao đổi trên XML (Extensible Markup Language), dựa trên chuẩn và giao thức mở

J2EE Components

Đặc điểm kỹ thuật J2EE định nghĩa theo các thành phần J2EE:

e Ung dung client va applets là các thành phần thực thi trên máy

“standard” Java class là J2EE component là J2EE được tích hợp vào

trong một ứng dụng J2EE, được xác định là một hính thức tốt và tuân theo

những kỹ thuật của J2EE

J2EE Container

1 Container Service

Container là giao diện giữa một component và chức năng platform

cụ thể cấp thấp để hỗ trợ cho component Trước khi một web component, enterprise bean, hoặc thành phần ứng dụng client được thực thi, nó phải được tích hợp vào trong module J2EE và được triển khai trong container

Quá trình tích hợp đòi hỏi phải chỉ rõ container setting cho mỗi component trong ứng dụng J2EE và cho chính ứng dụng J2EE Container setting bao gồm các dịch vụ như: bảo mật, quản lý giao dịch, Java Naming and Directory Interface (INDI) va két néi tt xa

Trang 2

Trang 11

Lê Tiền Hưng - 02DHTH079

Huỳnh Quộc Huy —- 02DHK T047

e Mô hình bảo mật J2EE giúp bạn cầu hình một web component

hoặc các enterprise bean để người dùng hợp pháp mới có thể truy cập vào tài nguyên hệ thống

e© Mô hình giao dich J2EE giúp bạn chỉ rõ mối quan hệ giữa các phương thức tạo ra một giao dịch đơn để tất cả các phương thức

trong một giao dịch được xem như một đơn vị riêng lẻ

e© Mô hình kết nỗi từ xa J2EE quản lý các giao tiếp cấp thấp giữa

client va enterprise bean Sau khi mét enterprise bean được tao,

một client triệu gọi các phương thức của nó néu client va enterprise bean cùng nằm trên một máy ảo

Bởi vì kiến trúc J2EE cung cấp các dịch vụ cấu hình, thành phần ứng dụng cùng trong ứng dụng J2EE nên có thể được thực thi khác nhau dựa vào nơi chúng được triển khai Ví đụ, một enterprise bean có thể có thiết lập bảo mật để cho phép nó truy xuất đến cơ sở đữ liệu ở một cấp độ nào

đó

Container cũng quản lý các dịch vụ không cau hinh nhu enterprise bean va chu ky séng ctia servlet, ving tai nguyén két néi database, dit liệu thường tric (data persistence)

Quá trình triên khai cài đặt các thành phân ứng dụng J2EE trong J2EE

container dugc minh hoa ở hình sau:

Enterprise JavaBeans (EJB) container: Quản lý việc thực thi của các

canterprise bean cho ứng dụng J2EE Các Enterprise bean và container

của chúng chạy trên máy server

Trang 3

Trang 12

Lê Tiến Hưng - 02DHTH079

Huỳnh Quốc Huy - 02DHKT047

Web container: Quản lý việc thực thi trang JSp và các thành phần servlet cho ứng dụng J2EE Các thành phần Web và container của chúng chạy trên máy server

Application clien( container: Quản lý việc thực thi hoặc các thành phần ứng dụng client Các ứng dụng client và container của chúng chạy trên máy client

Applet container: Quan ly viéc thuc thi ctta cac applet

IV Java 2 Platform, Enterprise Edition J2EE

1 J2EE Platform là gi?

Java 2 Platform, Enterprise Edition (J2ZEE) la mot tap cac cho

phép các giải pháp cho việc phát triển, triển khai, va quan lý các dịch vụ trung tâm đa tầng Được xây dựng dựa trên J2SE (Java 2 Platform, Standard Edition), J2EE platform thêm vào các công cụ cần thiết để hoàn thành, én định, bảo mật và nhanh chóng trên nền Java đối với các ứng dụng ở cấp độ doanh nghiệp Nó làm giảm giá thành và độ phức tạp cho các giải pháp đang phát triển và triển khai

2 Những lợi ích của J2EE Platform

e Hỗ trợ dịch vụ Web: J2EE platform cung cấp một framework cho

việc phát triển và triển khai dịch vụ Web trên nên Java

e© Thời gian phạn phối các giải pháp ra ngoài thị trường nhanh hon: J2EE platform sử dụng “container” để đơn giản hoá sự phát triển J2EE container cung cấp các business logic riêng biệt từ nguồn tài nguyên và quản lý chu kỳ sống của nó, có nghĩa là lập trình viên tập

trung vào viết business logic hơn là viết cơ sở hạ tầng doanh nghiệp

Vi du, EJB container xu ly viéc phân phối các giao tiếp, lập tiễn độ, chia tỉ lệ và quản lý giao địch v.v Tương tư, Java Servlet làm đơn giản hoá việc phát triển web bằng cách cung cấp cơ sở hạ tầng cho các thành phần, giao tiếp và quản lý phiên làm việc trong web container được tích hợp với web server

Tự do chọn lựa

e© Kết nối đơn giản: Kỹ thuật J2EE làm đơn giản việc kết nối các ứng dụng với hệ thống của bạn

3 Các công nghệ của J2EE Platform

Java API for XML-Based RPC (JAX-RPC), JavaServer Pages, Java Servlets, Enterprise JavaBeans components, J2EE Connector Architecture, J2EE Management Model, J2EE Deployment API, Java Management Extensions (JMX), J2EE Authorization Contract for

Containers, Java API for XML Registries (JAXR), Java Message Service (JMS), Java Naming and Directory Interface (JNDI), Java

Transaction API (JTA), CORBA, and JDBC data access API O day, trong giới hạn đề tài này ta chỉ chú trọng đến 1 vài công nghệ : JSP, Servlet, EJB, JSF

Trang 4

Trang 13

Lê Tiền Hưng - 02DHTH079

Huynh Quoc Huy — 02DHKT047

gọn mà không cần quan tâm gì tới cầu trúc bên trong của API

JSP hỗ trợ những đối tượng ngầm định được định nghĩa sẵn: Request, response, out, session, applicaion, config, pageContext , page, exception

b Cú pháp trang JSP

Gồm 3 phần chính :

e© Directive elements: cung cấp thông tin dẫn hướng biên dịch

trang JSP

<%@ directive attributel="Vvaluel" attribute2="value2" %o>

Có 3 kiểu directive chinh :

- Page directives

- Include directives :

- Tag library directives

¢ Scripting elements: cdc yếu tố mô tả cho phép nhúng 1 doan ma Java vào trong | trang JSP

Có 3 kiểu chính :

- Scriptlets : bat đầu và kết thúc bằng : <% .đoạn mã java .%>

- Declarations : khai bao bién va hàm Bắt đầu và kết thúc bằng:

sp:setProperty: thiết lập và thay đổi giá trị thuộc tinh

jsp:getProperty: Lấy giá trị thuộc tính

jsp:param: sử dụng tham số jsp:include: thêm tài nguyên jsp:forward: chuyên sang nguồn tài nguyên mới jsp:plugin: download java software

servlet này sẽ được load lên bộ nhớ, và nó sẽ hiện hữu trên bộ nhớ

Trang 14

Lê Tiến Hưng - 02DHTH079

Huỳnh Quốc Huy - 02DHKT047

trong 1 khoảng thời gian được ấn định trước, khi gọi trang jsp lần thứ 2,3,4, Thi téc độ xử lý sẽ nhanh hơn vì không cần phải load

servlet class này nữa mà xài trực tiếp từ bộ nhớ, sau khi hết I khoảng

thời gian time out, ta phải tiến hành cập nhật lại servlet class

d Lợi ích của JSP

- _ Nó khắc phục nhược điểm của serviet và tách rời được giữa trình diễn logic và trình diễn vật lý( presentation logic and presentation physic) \

- _ Nó có thể được viết bằng ngôn ngữ đanh dấu tĩnh HTML, XML, cho phép nhúng các thẻ tùy ý, tùy biến giao diện, và có thể nhúng

vào 1 đoạn mã java bất cứ lúc nào cần thiết

3.2 Servlet

a Dinh nghia Servlet:

Servlet là lớp một ngôn ngữ lập trình Java được dùng để mở rộng khả năng làm việc của server Mặc dù servlet có thể đáp ứng các loại request, nhưng chúng thường dùng để mở rộng các ứng dụng của máy chủ bằng các web server

Package javax.servlet và javax.servlet.hffp cung cấp giao diện

va cdc class cho viéc viét servlet Tat cả các servlet phải được thực

thi trên giao diện Servlet, nơi định nghĩa các phương thức chu kỳ

sống Khi thực thi các dịch vụ giống nhau, bạn có thể dùng hoặc kế

thức từ class GenericServlet được cung cấp bởi Java Servlet API Class HttpServlet cung cấp các phương thức như là doGet và doPost

cho việc xử lý các dịch vụ http

b Chu kỳ sông của Servlet:

Chu kỳ sông của một servlet được điều khiển bởi container, nơi

mà servlet được triển khai Khi một request được ánh xạ đến một servlet, container thực hiện các bước sau:

a Nếu một đối tượng cua servlet vẫn chưa có, thì web container:

e Nap serviet class

© Tạo một đối tượng cua servlet class

e©_ Khởi tạo đối tượng servlet bằng việc gọi phương thức init

b Triệu gọi phương thức service để đáp ứng request cho đối tượng Nếu container cần xoá servlet nó sẽ kết thúc servlet bằng việc gọi phương thức huỷ của servlet

Trang 6

Trang 15

Lê Tiến Hưng - 02DHTH079

Huỳnh Quốc Huy - 02DHKT047

“ *

se

Bạn có thể ghi đè phương thức này để viết mã khởi tạo nơi mà chỉ cần chạy một lần, ví dụ như nạp database driver, giá trị khởi tạo Trong một số trường hợp phương thức này được để trống Phương thức init rat quan trong bởi vì servlet container đi qua đối tượng ServletConfig, nơi chứa đựng các trạng thái cấu hình trong file web.xml

throws ServletException, java.io IOException

servlet container đưa qua đối tuong ServletRequest va ServletResponse Đối tượng ServletRequest chứa các request của client cón ServletResponse chứa các đáp ứng của servlet Hai đối tượng này rất quan trọng bởi vì chúng cho phép bạn chỉnh sửa lại đoạn code để quyết định cách thức servlet đáp ứng request của client

Phuong thirc destroy():

Servlet container gọi phương thức destroy trước khi xoá bỏ một đối tượng serviet Điều này thường xảy ra khi servlet container shutdown hay cần làm trống bộ nhớ

Phương thức này chỉ được gọi một lần sau khi tất cả các tiến trình trong phương thức service đã kết thúc hay bị quá thời gian

đáp ứng (timeout) Sau khi servlet container goi phương thức huỷ thì nó sẽ không gọi phương thức service nữa

public void destroy()

c C4u tric Servlet

Một serviet trong Java class có thé duoc nạp vào tự động và thực

thi bởi một web server dac biét goi 14 servlet container

Servlet tương tác với client thông qua mô hình request-response

dựa trên giao thức HTTP Một servlet container phai hỗ trợ HTTP

như là giao thức của client request và server response Tuy nhiên, một servlet container cũng có thể hỗ trợ các giao thức tương tự, như

là HTTPS (HTTP over SSL) để nâng cao tính bảo mật

Browser

The servlet application architecture

Trong một ứng dung JSP, servlet container duge thay thé boi JSP

container Ca hai servlet container va JSP container déu được tham

Trang 7

Trang 16

Lê Tiến Hưng - 02DHTH079

Huynh Quéc Huy — 02DHKT047

chiếu đến web container hodc servlet/JSP container, nhat 1a néu

méot tmg dung web bao gém ca hai trang servlet va JSP

d Lợi ích của servlet

Trong những trang web cô điển người ta sử dụng chủ yếu là ststic content thông qua ngôn ngữ đánh dấu siêu liên kết HTML

Servlet sẽ khắc phục điều này bằng cách đưa vào dynamic

contents thông qua kỹ thuật CGI (Common Gateway Interface) CGI

cho phép Web server gọi một chương trình ngoại trú thông qua thông tin HTTP request và gởi trả lai cho client thong qua HTTP response Tuy nhiên, Internet đã trở nên rất phô biến, số lượng user truy cập

vào website tăng lên rất nhiều Điều này đã làm cho kỹ thuật CGI

không cón phù hợp nữa Dần dân, những kỹ thuật mới và tốt hơn sẽ thay thế CGI như là kỹ thuật chính cho phát triển ứng dụng web Trong các kỹ thuật mới ấy có kỹ thuật servlet

Servlet cho ching ta mét số lợi ích như sau:

e© Hiệu năng: Hiệu năng cua servlet cao hon CGI béi vì mỗi request được xủ lý bởi servlet container Sau khi servlet đáp ứng request, nó vẫn thường trú trên bộ nhớ để chờ các request tiếp theo

e Tính khá chuyển: Tương tự các công nghệ Java khác, ứng dụng servlet có tính khả chuyên Bạn có thể mang nó đến bất kỳ hệ điều hành nào mà không quá phức tạp

e©_ Quá trình phát triển nhanh: Là một công nghệ của Java, servlet

có thể truy xuất đến nguồn tài nguyên phong phú của Java, điều

này giúp quá trình phát triển diễn ra nhanh chóng

e Đơn giản: scrvlet được quản lý bởi máy áo Java (TVM — Java Virtual Machine) Do đó bạn không quá lo lắng về rò rỉ bộ nhớ hoặc các dữ liệu vô nghĩa Điều này giúp bạn viết ứng dụng dễ đàng và nhanh chóng hơn

e Sự công nhận toàn cầu: Java là một công nghệ được chấp nhận rộng rãi Điều này có nghĩa rằng nhiều người dựa vào công nghệ

Java Một trong những lợi ích của công nhận rộng rãi là bạn có thể tìm và mua những gì mình cần, tiết kiệm được rất nhiều thời

gian trong quá trình xây dựng ứng dụng

3.3 JSF (JavaServer Faces)

3.3.1 JavaServer Faces la gi?

JavaServer Faces (JSF) la framework chuẩn java mới dùng trong

phát triển ứng dụng web Nó đơn giản hoá việc phát triển bằng cách

cung cấp những component cho việc phát triển giao diện người dùng trong java web.Những chuyên gia thiết kế web sẽ thấy đễ dàng trong việc phát triển giao diện bằng cách kéo và thả các component vào trang web,và cung cấp nhiều API ISF không thể mạnh hơn và việc lập trình lính động hơn cho các “system developer” JSF chic chin cho

Trang 8

Trang 17

Lê Tiến Hưng — 02DHTH079

Huynh Quéc Huy — 02DHKT047

ứng dụng được thiết kế tốt với khả năng duy trì tốt hơn bằng cách tích hợp mô hình MVC vào trong kiến trúc của nó.Và cuôi cùng, từ khi JSF là một chuẩn java được phát triển thông qua JCP ( Java Community Process) ,những tool dùng cho việc phát triển được cung cấp môi trường phát triển dễ sử dụng,trực quanvà hữu ích cho JavaServer Faces

3.3.2 Lợi ích cia JavaServer Faces

Một trong những thuận lợi lớn nhất của công nghệ JavaServer Faces là nó phân chia rõ ràng giữa hành vi và giao diện Công nghệ JSP cũng phân chia như thế tuy nhiên những ứng dụng JSP không thể map HTTP request với các sự kiện đặc thù của các component cũng như không thể quản lý các thành phần UI chẳng hạn như những đổi tượng có trạng thái trên server, nhưng [SE có thể làm được như vậy Công nghệ JSF cho phép xây dựng những ứng dụng web thực hiện việc phân chia giữa hành vi và giao diện tốt hơn

Sự phân chia logic giao diện cho phép mỗi thành viên trong nhóm phát triển chỉ tập trung vào việc phát triển một mảng của thành viên đó

và nó cung cấp một kiểu lập trình đơn giản để liên kết từng mảng đó lại với nhau.Ví dụ : một người không thông thạo lập trình có thể dùng các tag component cua JSF để liên kết với server mà không cần viết

một đoạn script nào

Quan trọng nhất, JSF cung cấp nhiều kiến trúc đối với việc quản lý

thành phần trạng thái , xử lý thành phần dữ liệu , xác nhận dư liệu

nhập vào từ user và xử lý sự kiện

3.3 3Ứng dụng JavaServer Eaces như thế nào?

Ứng dụng JavaServer Faces cũng giống như các ứng dụng Java web khác Chúng cũng chạy trên servlet container ,và chứa những đặc thù sau:

e Những thành phần JavaBean chứa các chức năng đặc trưng cho component va data

e Events listener

e Pages chang han nhu nhimg trang JSP

e Những lớp helper phía server như bean truy xuất database Ngoài ra, ứng dụng JSE còn có thêm các thhành phân Sau:

e Thu vién custom tag trả về các thành phần UI trên một trang

e Thư viện custom tag miêu tả hành vi xử lý sự kiện, bộ xác

thực và những hành vi khác

e Những thành phần UI được hiển thị như các đối tượng có

trạng thái trên server

e Backing bean dinh nghĩa những thuộc tính và các chức năng cac thành phần UI

®_ Validators, converters, event listeners, and event handlers

e_ Một file cấu hình resource của ứng dụng để cấu hình resource

của ứng dụng

Trang 18

Lê Tiến Hưng - 02DHTH079

Huỳnh Quốc Huy - 02DHKT047

Mot tmg dung JSF mà sử dụng JSP để trả về mã HTML phải có thư

viện tag định nghĩa cho những tag biểu diễn cac thành phần UI và thư viện tag biểu diễn cho những hành động chính khác như : validators và event handlers

a Các thành phần user interface

Các thành phần của JavaServer Faces là các thành phần có khả năng cầu hình được và có thể tái sử dụng dùng để tạo ra UI của ứng dụng

JSF Một component có thể là button, table,

Công nghệ JSF cung cấp nhiều component linh động như sau:

Một bộ những lớp UlComponent chỉ trạng thái và hành vi của

những component

Một model trả về định nghĩa thành phần trả về như thế nao(component rendering model)

Một model event và listener định nghĩa cách xử lý sự kiện

Một model conversion định nghĩa cách đăng ký bộ chuyển dữ liệu

UIGraphic: biển diễn hình ảnh

UlIInput: nhận dữ liệu do user nhậo vào

UIMessage: hiển thị thông điệp đã được xác định vị trí UIMessages: hiển thị một tập thông điệp đượca xac định vị trí

UlOutput:biển diễn dữ liệu xuất ra lên page

UIPanel: quản lý layout của những thành phần con của nó UIParameter: biển điễn tham số thay thé

UISelectBoolean: cho phép user set giá trị boolean trên

control bang cách chọn hoặc bỏ chọn

UISelectltem: biển diễn item đơn trong tập item

UISelectltems: biển diễn một tập entry item

UISelectMany: cho phép user chon nhiều item trong một nhóm item

Trang 10

Trang 19

Lê Tiền Hưng - 02DHTH079

Huỳnh Quốc Huy - 02DHKT047

e UlSelectOne: cho phép user chọn một item trong một nhóm item

e UlViewRoot: biéu dién root cia cdy component Ngoài ra,các lớp component còn thực thi từ những một hoặc nhiều interface:

e© ActionSource: chỉ ra component cé thể bắt đầu sự kiện

e EditableValueHolder: kế thừa từ ValueHolder và thêm những đặc tính cho các component co khả năng edit được như xác

nhận và phát ra sự kiện change-data

e© NamingContainer: đặt một ID duy nhất cho component

e StateHolder: chi r3 nhimg component co trạng thái phải được lưu giữa các request

e ValueHolder: chi ra component quản lý một giá trị cục bộ cũng như option của việc truy xuất dữ liệu trong tầng model

s Component Rendering Model

Kiến trúc cũng như chức năng của các thành phần JSF được thiết kế và định nghĩa bởi các lớp component Ngược lại , component rendering có thể được định nghĩa bởi các renderer riêng

biệt Thiết kế này mang lại một số lợi ích sau:

e© Những người viết component có thể định nghĩa hành vi của component một lần nhưng có thể tạo ra nhiều renderer, với mỗi renderer có phương thức trả về component khác nhau trên cùng một client hoặc những client khác

e Những người thiết kế web và những người phát triển ứng dụng có thể thay đổi giao điện bên ngoài của component trên một page bằng cách chọn tag mà thể hiện sự kết hợp tương đương giữa component và renderer

Một render kit định nghĩa cách các lớp component máp đến các tag tương đương với client Các phương thức thực thi JSE chứa các

kit render chuan HTML để trả về cho một client HTML

Đối với mỗi thành phần UI mà render kit hỗ trợ, render kit định

nghĩa một tập các lớp Renderer Mỗi lớp định nghĩa phương thức

trả về các component liên quan khác nhau đến đầu ra được định nghĩa bởi render kit.Ví dụ, thành phần UISelectOne có 3 renderer

khác nhau; một renderer trả về component là tập các nút radio, renderer thứ 2 trả về là một combo box, renderer thứ 3 trả về là một

list box

Bảng dưới đây cung cấp thu vién custom tag cho việc trả về component trong HTML

Colunm thê hiện một cột một cột trong table một cột trong

dữ liệu trong HTML table

UIData

component

Trang 20

Lê Tiến Hưng - 02DHTH079

Huỳnh Quéc Huy —- 02DHK T047

commandButton | submit một form | tag <input type=’’> một nút

cho ứng dụng của HTML, giá trị

type có thể là

submit,reset hay

image commandLink link dén trang tag <a href> của là hyperlink

dataTable trinh bay data tag <table> trong là table có thê

động form là form input, tag <form> trong Không có

những tag bên HTML giao dién trong của form

nhận dữ liệu mà sẽ được submit từ

form praphicImage thể hiện hình ảnh | Tag <img> của một image

HTML inputHidden Cho phép tạo biển | Tag <input Không có

an trong trang type=hidden>cua giao điện

HTML inputSecrect Cho phép user Tag <input Là một text

input 1 string type=password> field hién thi 1 nhưng không được dòng kí tự

thực

inputText Cho phép user Tag <input Là một text

nhập một string type=text> field inputTextarea Cho phép user Tag <textarea> mot text field

chuỗi liên tiếp

message hiển thi message | Tag <span> một chuỗi text

đã được chọn

trước messages Hiền thị những Tag <span> một chuỗi text

message đã được

chọn trước outputLabel hiển thị một label | Tag <lable> Plain text

cho các input field outputLink hiện thị một link Tag <a> Plain text

mà không cần

khởi tạo một action sự kiện

outputFormat hiện thị message | Plain text Plain text

được chọn trước

panelGrid hiền thị một table | La tag <table> voi một bảng

Trang 12

Trang 21

Lê Tiến Hưng - 02DHTH079

Huỳnh Quốc Huy — 02DHK T047

trong list item dién trong thanh phan

UISelectOne selectltems hiển thị một list Tag <option> Không giao

item trong thành dién phần UISelectOne

selectMany hiển thị một tập một tập cac tag <input | một tập những

Checkbox check box mà user | type=checkbox> checkbox

có thể chọn nhiều

giá trị từ đó selectMany Cho phép user Tag <select> mot listbox

Listbox chon nhiéu item

trong tap item, tat

cả được hiền thị

một lần

selectManyMenu | Cho phép user Tag <select> một combo

selectOneListbox | Cho phép user Tag <select> một list box

chọn một item

trong tập Item selectOneMenu | Cho phép user Tag <select> một combo

chon 1 item trong box có thé

selectOneRadio | Cho phép user Tag <input một tập các

chọn một item từ | type=radio> nút radio tap item

b Conversation Model

Ung dung JSF cé thé tuy chon component co lién quan đến đối tượng

dữ liệu phía server Đối tượng này là thành phần JavaBean, backing bean chang han Mot img dung get và set đối tượng data cho component bang cach gọi những thuộc tính đối tượng liên quan đến component đó

Khi component được kết với một đối tượng, ứng dụng có 2 view

của thành phần dữ liệu:

¢ Model view, data được biển hiện như là kiểu dữ liệu, thí dụ như là

int hay long

Trang 22

Lê Tiến Hưng - 02DHTH079

Huỳnh Quốc Huy - 02DHKT047

e Presentation view, data được biển diễn theo kiểu có thể đọc hay

sửa bởi user Ví dụ như java.util.Date có thể được trình bày bằng một chuỗi text với format đd/mm/yy hay băng một tập 3 chuỗi text Khi thuộc tính của bean có liên quan đến component là một trong những kiểu đữ liệu được hỗ trợ bởi data component, các phương thức thuc thi (implement) JSF sé tu déng déi data component gifta 2 view nay.Vi du, UlSelectBoolean co liên quan đến kiểu java.lang.Boolean của thuôc tính bean, JSE implementation sé tu déng déi data component tir kiéu String thanh kiéu Boolean.Ngoai ra, data component phai được kết đến kiểu của thuộc tính liên quan.Ví dụ , thành phần UISelectBoolean phải được kết đến kiểu Boolean hay Java.lang.Boolean

Đôi khi chúng ta muốn thay đối data component thành kiểu khác

hơn kiểu chuẩn hay thay đổi định dạng của đữ liệu Kỹ thuật JSF cho

phép chúng ta đăng kí phương thức thực thi Converter trên thành phần UlOutput và các lớp của các thành phần là lớp con của UIOutput

Chúng ta có thể sử dụng những converter chuẩn được cung cấp JSF implementation hoặc tạo converter riéng cho mình Để tạo và sử dụng converter ,cần phải thực hiện 3 điều sau:

e©_ Người phát triển ứng dụng phải emplement lớp Converter

e©_ Kiến trúc ứng dụng phải đăng kí Converter với ứng dụng

e©_ Người tạo web phải tham chiếu Converter từ tag của componet mà dit ligu cia component phai duge convert

c Event and Listener Model

Event va listener cla JSF giéng véi event cua JavaBean , nó có những

lớp envent và các interface listener ma img dung cé thé sir dung để xử

lý event được tạo ra bởi các thành phần UI

JSF hé tro 3 loai event: value-change, action ,va data-model

e Action event: xay ra khi user kich hoat component ma thye thi

ActionSource Nhiing component nay bao gồn button va hyperlink

e Value-change event: xay ra khi user thay đổi giá trị của component UlInput hoặc một trong những lớp con của nó.Ví dụ check vào checkbox thay đổi gia trị thành true Các component tạo

ra sự kiện này bao gồm: UHnput, UISelectOne, UISelectMany,

UISelectBoolean Sự kiện này chỉ xảy ra khi không có lỗi validation

® Data-model event: xảy ra khi một dòn mới của UIData được chọn

Validation Model

JSF hé trợ cơ chế cho việc xác nhận dữ liệu cục bộ của các thành phần

có thê thay đối được ( text field chẳng hạn)

Cũng giống như conversation model ,validation model cũng định nghĩa những lớp chuẩn cho việc xác nhận dữ liệu thông thường Bảng bên dưới là danh sách tất cả các lớp xác thực chuẩn và các tag tương

đương

Trang 14

Trang 23

Lê Tiền Hưng - 02DHTH079

Huỳnh Quốc Huy - 02DHKT047

LengthValidator validateLength Kiểm tra chiêu dài đữ liệu của

component co ding range không Giá trị này phải là java.lang.String

LongRangeValidator | validateLongRange Kiém tra giá trị của

component có đúng với range không.Giá trị này phải là bất

kì kiểu số nào hoặc String mà

có thê đổi được thành long

e Implement mét interface Validator để thực thi việc xác thực

e Implement phuong thirc cua backing bean để thực thi xác thực

Nếu chúng ta implement interface Valditor ,chúng ta phải :

e_ Đăng kí Validator implementation với ứng dụng

e Tao custom tag hoac str dung tag validator dé dang kí validator lên component

Nếu chúng ta dùng phương thức backing bean để thực thi việc xác

thực,chúng ta cũng cần phải tham chiếu validator từ thuộc tính

validator cla tag component

3.4 EJB (Enterprise Java Bean)

3.4.1 Dinh nghia EJB

Được viết trong ngôn ngữ lập trình Java, Enterprise Bean là một

thành phần hướng về phía server dùng để đóng gói các business logic của ứng dụng Business logic là một đoạn code đáp ứng mục đích

của ứng dụng

EIB container cung cấp 1 cấp độ dịch vụ cho 1 ứng dung EJB, quản lý định danh, quản lý bảo mật

3.4.2 Lợi ích của Enterprise Beans

Enterprise Beans làm đơn giản hoá việc phát triển, mở rộng, phân phối các ứng dụng Bởi vì EJB container cung cấp dịch vụ cấp hệ

Trang 24

Lê Tiến Hưng - 02DHTH079

Huỳnh Quôc Huy - 02DHKT047

thống cho enterprise bean, do đó người viết bean có thể tập trung giải quyết các vân đề doanh nghiệp

Ứng dụng EJB dễ phát triển

EJB 1a 1 thanh phan

Phan biét rd rang gitta presentation logic va presentation physical

EJB container quan ly transaction,quan ly trạng thái, multithreading, connection pooling

EJB container cung cấp tính năng bảo mật cho ứng dụng

Kiến trúc EJB phù hợp với java API

3.4.3 Khi nào thì dùng Enterprise Beans

Ứng dụng phải rộng rãi Để dap ứng việc tăng số lượng các user, bạn cần phân phối các thành phần của một ứng dụng thông qua nhiều may Enterprise bean cua tng dung không những thực thi trên nhiều máy khác nhau mà còn trong suốt đối với client

Giao dịch phải đảm bảo toàn vẹn dữ liệu Enterprise bean hỗ trợ công việc kinh doanh, các cơ chế để quản lý việc đồng thời truy cập vào các đối tượng chia sẻ

Ứng dụng phải có các client khác nhau Bằng một dòng code, remote client có thể đễ dàng định vị được enterprise bean Các client này có thê là nhỏ, khác nhau và nhiều

3.4.4 Các loại Enterprise Beans

Có 2 loại Enterprise Bean:

a

e Session bean: thyc hién mét tac vu cho một client; thực thi một địch vụ web

e Entity bean: M6 ta mét đối tượng thực thể doanh nghiệp đã

tồn tại trong bộ lưu trữ thường trực

Session Bean Session Bean 1a mt enterprise bean, no thực thi day đủ các công

việc logic của doanh nghiệp

Session bean mô tả một client đơn bên trong Application Server

Để truy xuất vào ứng dụng được triển khai trên server, client phải triệu gọi các phương thức của session bean Session bean thực

hiện các công viéc cho client

Session bean được tạo khi client yêu cầu đến dịch vụ của nó Khi

client hoàn thành bean và disconnect, thi EJB container huy session bean

Giống như là interactive session, Session bean không được chia

sẻ, nó có thể chỉ có 1 client, session bean không phải là thường trực (dữ liệu của nó không lưu trữ trong database)

Một session bean tượng trưng cho một client đơn bên trong Application sever Để truy cập vào một ứng dụng đã được triển khai trong server, client triệu gọi các phương thức cua session

Trang l6

Trang 25

Lê Tiến Hưng - 02DHTH079

Huynh Quoc Huy — 02DHKT047

bean Session bean thyc thi céng việc cho client, không cho client nhin thay sự phức tạp trong quá trình thực hiện các tác vụ kinh

doanh bên trong server

Session bean có 2 loại là: Stateless Session Bean và Stateful

Session Bean

e Stateless Session Bean

- Stateless session bean khéng quan lý trạng thái hội thoại của client

- Bởi vì stateless session bean có thể hỗ trợ nhiều client, chúng

có thể làm cho ứng dụng phục vụ một số lượng lớn client Điển hình, một ứng dụng yêu câu stateless ít hơn là stateful để đáp ứng cùng một sô lượng client

- EJIB container có thể lưu sfateful session bean vào bộ lưu trữ

phụ Tuy nhiên, stateless session bean không bao giờ được lưu

vào bộ lưu trữ phụ Ví vậy stateless session bean cho hiệu

năng tốt hơn stateful session bean

- Mét Stateless session bean có thể thực thi một dịch vụ web,

nhưng các loại khác của enterprise bean thì không

e Stateful Session Bean:

- _ Trạng thái của một đối tượng bao gồm giá trị của các biến đối tượng Trong một stateful session bean, các biến đối tượng

biểu diễn trạng thái làm việc của một cliení-bean Bởi vì client

tương tác với bean của nó, trạng thái này thường được gọi là trạng thái hội thoại

- Trạng thái được giữ lại trong suốt phiên làm việc của client-

bean Nếu client remove đi một bean hay là tắt nó, thì phiên

làm việc sẽ kết thúc và trạng thái sẽ không còn được lưu giữ Tuy nhiên, khoảng thời gian ngắn này của trạng thái không vẫn đề gì cả, bởi vì khi cuộc hoại thoại giữa client và bean kết thúc thì không cần phải lưu giữ trạng thái

b Entity Bean

- La 1 thành phan đữ liệu tồn tại thường trực trên những thiết bị lưu trữ thứ câp như file, database

- Giống như những lớp java thông thường khác, Entity bean cũng

có các trường và các phương thức.Các trường để lưu trữ dữ liệu, các phương thức để thực thi những tính toán trên các trường đó

- Trong I ứng dụng, lentity bean được xem nhu 1a | record trong

1 table của CSDL, vì thế chúng ta có thể thực hiện các thao tác

thêm, xóa, sửa ngay cả khi chúng đang bị passivate mà không cần

phải activate chúng lên

- _ EJB container đảm bảo việc đồng bộ và các tác vụ khác trong quá trình duy trì dữ liệu

- Thời gian sống của entity bean bằng với thời gian sống của dữ liệu Entity bean có thể sống hàng tuần, hàng tháng hoặc hàng năm

Trang 26

Lê Tiến Hưng - 02DHTH079

Huỳnh Quôc Huy — 02DHK T047

- _ Entity bean biểu diễn một đối tượng doanh nghiệp trong một cơ

chế lưu trữ thường trực một vài ví dụ về các đối tượng doanh

nghiệp là khách hàng, đơn đặt hàng, sản phẩm Trong

Application Server, cơ chế lưu trữ thường trực là một cơ sở dữ

- _ Phải viết nhiều code -> Tốn rất nhiều công sức

- _ Phải nắm tất cả các nguyên lý bên trong API

- _ Không cần cấu hình nhiều trong file xml

Ưu điểm: Việc mất mát các cuộc hội thoại giữa bean và client ít Nhược điểm:

- _ Băng thông có thé bị giảm đi khi chạy các tiến trình khác

- Hiện tượng nghẽn trong việc xuấtnhập xuất hiện (gọi là: Input/Output bottle necks)

- Client phai chỉ ra đữ liệu cần thiết cho mỗi lần triệu gọi

Container System

Trang 27

Lê Tiến Hưng - 02DHTH079

Huynh Quôc Huy — 02DHKT047

CMP: là kiểu bean không linh động, các thao tác , các câu lệnh liên quan đến truy cập CSDL đều được làm 1 cách tự động

-_ Dễ viết

- code ngắn gọn

- _ Không cần nắm vững các nguyên lý bên trong

- _ Phải cầu hình rất công phu 6 file xml

Ưu điểm:

- _ Dữ liệu không cần cung cấp cho bean sau mỗi lần triệu gọi

- Tất cả các tài nguyên được lưu trữ trong CSDL khi bean bị đóng băng

Container System

Trang 28

Lê Tiến Hưng - 02DHTH079

Huỳnh Quôc Huy ~ 02DHKT047

e_ Oracle TopLink xây dựng các ứng dụng hiệu quả cao lưu trữ thường

trực dữ liệu hướng đối tượng trong một cơ sở dữ liệu quan hệ Nó

chuyển đổi thành công dữ liệu hướng đối tượng sang dữ liệu quan hệ hoặc các thành phần XML (Extensible Markup Language)

Cấu trúc runtime của TopLink

| Presentation interlace i

[ ⁄phoaientoge | [Business nities |

Oracle TopLink Gujent Data Pu tang Na JE Contsiner &

Ly Transadhon Cormection Pool

agg epremary Osta Steves AS

- Relational: cho giao dịch thường trực của các đối tượng Java để truy cập một cơ sở dữ liệu quan hệ dùng JDBC (Java Database Connectivity)

- Object-Relational: cho giao địch thường trực của các đối tượng Java, tối ưu hoá việc lưu trữ cơ sở dữ liệu quan hệ đối tượng như Oracle Database

- _ Hệ thống thông tin doanh nghiệp (EIS — Enterprise Information System): để truy cập nguồn đữ liệu không quan hệ (nonrelational)

Trang 20

Trang 29

Lê Tiến Hưng - 02DHTH079

Huynh Quéc Huy — 02DHKT047

su dung cấu trúc J2EE Connector, và hỗ trợ một số loại record EIS, bao gồm: indexed, mapped hoặc XML

- XML: không giao dịch (nontransacHonal), hội thoại không thường trú trong bộ nhớ giữa các đối tượng Java và XSD (XML Schema Document)

2 Cac tinh nang chinh cia TopLink

TopLink cung cap một tập các tính năng triệt để và rộng lớn Lập trình viên Java có thể dùng các tính năng này để xây dựng nhanh chóng các ứng dụng enterprise có hiệu năng cao

TopLink có các tính năng chính sau:

Bảo mật, linh động

Tam nhìn trực quan, toàn vẹn

Truy van dé dang

Application Your Data

TopLink va kién trac tng dung

Three Tier (3 tang):

- Ung dụng 3 tầng là một trong những kiến trúc phổ biến của

TopLink Kién trac này được đặc trưng bởi một môi trường server-

hosted trong business logic, các thực thể thường trực và Oracle TopLink Foundation Library, tất ca đều có trong máy ảo ] ava (JVM)

- Mét vi du phé bién cho kién trúc này là một ứng dụng 3 tầng đơn giản, trình duyệt client truy xuất đến ung, dung théng qua servlet, JSP

va HTML Lép trinh dién giao tiếp với TopLink thông qua Java class khác trong cùng một máy ảo Kiến trúc này hỗ trợ cho nhiều server

Trang 30

Lê Tiến Hưng - 02DHTH079

Huỳnh Quoc Huy — 02DHKT047

TopLink thường trú bên trong một Java server Ứng dụng có thể hỗ

tro Web client nhu 1a servlet, Java client va generic client su dung

XML hoaic CORBA (Common Object Request Broker Architecture) Ứng dụng 3 tầng là một kiến trúc phổ biến để cho TopLink thường trú bên trong một máy chủ Java Trong kiến trúc này, server Session cung cấp cho clienf các quyền chia sẻ để truy xuất đến kết nối JDBC

và một object cache được chia sẻ Bởi vì nó thường trú trên một máy

ảo Java đơn nên kiến trúc này đơn giản và để dàng mở rộng

Kiến trúc này thường hỗ trợ các ứng dụng Web-base, các ứng dụng

client như là Web client, Java client hoặc server component

Glep1 Ấp p§eadietit Appiination Server Geta eure

Mô hình kiến trúc 3 tang

Mặc dù không phải tất cả các kiến trúc 3 tầng là Web-base, nhưng kiến trúc này là lý tưởng để phân phối các ứng dụng Web

Ưu điểm: Hiệu năng cao, các đối tượng thường trực không quan trọng, có tính lính động cao trong việc triển khai platform va configuration

Nhược điểm: không chuẩn hoá bằng E)JB

EJB Session Bean Facade:

Một biến thể phố biến trong ứng dụng 3 tầng đòi hỏi phải đóng gói các business logic, bao gôm truy xuất TopLink trong EJB session bean

Giao tiếp ở lớp trình diễn xảy ra thông qua việc gọi EIB session bean Kiến trúc này tách rời ứng dụng với các tầng khác khi triển khai

Kiến trúc này là mở rộng của mô hình 3 tầng với việc thêm vào các gói EJB session bean để truy xuất đến tầng ứng dụng Session bean cung cấp public API dé truy xuất vào hoạt động của ứng dụng, cho phép bạn tách rời tầng trình điễn từ tầng ứng dụng Kiến trúc này cũng cho phép bạn sử dụng session bean bên trong J2EE container

Trang 31

Lê Tiến Hưng — 02DHTH079

Huynh Quéc Huy — 02DHK T047

Một mở rộng phổ biến của kiến trúc 3 tầng là kết nối session bean va các đối tượng Java persistent được quản lý bởi TopLink

Kiến trúc 3 tâng tạo một server session và chia sẻ nó giữa các session bean trong ứng dụng Khi một session bean cần truy cập đến TopLink session thì bean sử dụng client session từ server session

được chia sẻ

Ưu điểm:

= TopLink chia sẻ quyền truy cập vào project, descriptor, và thông tin đăng nhập thông qua bean trong ứng dụng

" Khả năng tương thích với các server khác trong tương

= Chia sé read cache

EJB 3.0 Entities with JPA

EJB 3.0 bao gồm một đặc điểm kỹ thuật thêm vào được gọi là java Persistence API (PA) Bạn có thể dùng API này để tạo, huỷ và truy vấn đến các đối tượng Java ít quan trọng bên trong môi trường EJB 3.0 và chuẩn Java SE 5

TopLink Essential là một mã nguồn mở, nó cung cấp chức năng JPA cho EJB 3.0

Khi sử dụng TopLink JPA, bạn có thể truy xuất đến API thông qua

các phần mở rộng Phần mở rộng cho phép bạn đi xuống TopLink

API và hiệu chỉnh JPA

EJB Entity Beans với CMP

TopLink cung cấp CMP hỗ trợ cho các ứng dụng có yêu cầu dùng

EJB entity bean

CMP là một phần của J2EE component, CMP cung cấp việc phân phối, giao dịch, bảo mật truy cập, dén dir liệu thường trực

Kiến trúc này là mở rộng của kiến trúc 3 tầng, thực hiện các phương thức thường trực được xử lý bởi container tại thời điểm thực thi TopLink CMP tích hợp nonintrusive, thông qua một sự kết hợp của tích hợp run-time và phát sinh code, container sử dụng TopLink nội tại và người dùng bean tương tác với entity bean Điều này giúp bạn kết hợp giao điện chuẩn và mạnh của CMP và một container với TopLink một cách linh động, hiệu quả và năng suất cao

AUP, oe RUC ORRA

Kién tric CMP 3 tang

Uu diém:

Trang 32

Lê Tiến Hưng - 02DHTH079

Huỳnh Quộc Huy — 02DHKT047

Nó cho phép các entity beans với container-managed persistence duge cung cấp bởi các tính năng tỉnh xảo của TopLink như là: hỗ trợ caching và mapping, lưu trữ bean data thông qua nhiều table, tổng hợp các khoá chính va data conversion

Nó cung cấp một phương thức để truy cập dữ liệu, giúp bạn tạo chuẩn hoá, tái sử dụng các đối tượng doanh nghiệp

TopLink duy trì việc nhận đạng bean và object

- _ Nhược điểm: entity bean thuần tuý với kiến trúc CMP có thể có giá

thành cao

EJB Entity Beans voi BMP

- Một tuỳ chọn khác cho việc sử dụng EJB entity bean la dùng

TopLink BMP Kiến trúc này cho phép lập trình viên truy xuất đến

các dữ liệu thường trực thông qua giao diện lập trình ứng dụng EJB,

nhưng không phụ thuộc vào platform

- _ Kiến trúc này là mở rộng của kiến trúc 3 tầng, nơi mà dữ liệu thường

trực là các bean quản lý bên trong một entity bean ma bạn sử dụng

Việc gọi các phương thức BMP rất đơn giản Có thé kế thừa

từ một lớp bean trừu tượng, hơn là phải phát sinh ra một lớp mới

Cho phép bạn bổ sung database-independent code trong các bean methods

Hỗ trợ các tính năng như là: các mối quan hệ phức tạp, caching, object-level và truy vấn động

Nhược điêm:

Bạn phải tạo các cơ chế thường trực trong bean code

Không rõ ràng va hiéu qua bang CMP

Web Service

- Kién trac dich vu Web thi tương tự như kiến trúc 3 tầng hoặc session

bean Tuy nhiên, trong kiến trúc dịch vụ web bạn phải đóng gói

business logic va khach hang giao tiếp với ứng dụng thông qua

XML

Trang 24

Trang 33

Lê Tiến Hưng - 02DHTH079

Huỳnh Quốc Huy - 02DHKT047

- Trong kiến trúc web serviec, bạn có thể đùng TopLink để ánh xạ mô

hình đôi tượng vào trong lược đô XML cho việc dùng dịch vu web

" Bạn có thể ánh xạ XML messages sang một mô hình đối

tượng Java đang tồn tại

"_ Bạn có thể đạt được một cấp độ cao của việc ánh xạ phức tạp

" Tương thích với các chuẩn JAXB

" Cung cấp giải pháp cho sư phát triển và hiệu quả cao -_ Nhược điểm: giải pháp này khá phức tạp đối với một RMI session bean đơn giản

Two Tier (2 tầng)

- Mot tng dung 2 tang là một trong các ứng dụng TopLink dùng để truy xuất trực tiếp xuống database, nó ít phổ biến hơn các kiến trúc khác

-_ Một kiến trúc 2 tầng thông thường bao gồm một Java cHent để kết nối trực tiếp đến database thông qua TopLink Kiến trúc này là phổ biến nhất trong các giao diện người dùng phức tạp với việc triển khai

bị giới hạn

Chest Apeioahons thote Seures

Mô hình kiến trúc 2 tầng

- Kiến trúc 2 tầng là đơn giản nhất trong mô hình ứng dụng TopLink,

và nó cũng hạn chế nhất Bởi vì mỗi ứng dụng client yêu câu một

session cho riêng nó Kết quả là ứng dụng 2 tầng không dễ phát triển như các kiến trúc khác

- _ Ưu điểm: đơn giản, cung cấp tất cả các tính năng của TopLink trong

một loại session

database session cho nó

Trang 25

Trang 34

Lê Tiến Hưng - 02DHTH079

Huỳnh Quốc Huy - 02DHKT047

II Xây dựng ứng dụng TopLink

1 Xây dựng ứng dung véi TopLink Typical Development Stages

Design

2 Create Java classes,

Create new or intagrate existing data source

3 import classes and data source into Gracle TapLink Mapping Workbench

Create descriptors and mappings

4 Create database sessions

Query anc update data source information

5 Generata Jeployment files

Package and deploy the application

Thiết kế ứng dụng (1):

- Xác định các yêu cầu, chọn một kiến trúc và quyết định platform Khi thiết kế ứng dụng, bạn cũng nên tạo một mô hình đối tượng cho ứng dụng Việc tạo mô hình ứng dụng trước khi sử dụng TopLink để ánh xạ đối tượng là rất quan trọng

Xây dựng ứng dụng (2, 3, 4)

- Tao Java class, khi lam việc với một hệ thống đi sản, quyết định làm thế nào các class liên hệ với dữ liệu đang tồn tại Nếu không có dữ liệu kế thừa để tích hợp thì quyết định làm thế nào lưu trữ mỗi class trong đa(a source và tạo lược đồ yêu cầu Bạn cũng có thé ding TopLink dé tao table khởi tao

- Sử dung TopLink Workbench, tao descriptors va mappings cho persistent class Dung TopLink sessions dé van dung persistent class, bao gồm truy vấn và đữ liệu hay thay đổi

- Tránh việc xây dựng tất cả các descriptor của mô hình trong một phép lặp đơn Xây dựng và kiểm tra cdc descriptor của chúng, fừ từ thêm vào các descriptor và các mối quan hệ mới Điều này giúp bạn

có thé bắt các lỗi phố biến trước khi chúng tăng lên nhiều

Triển khai ứng dụng (5)

- - Phát sinh, đóng gói và triển khai các file cần thiết Thông tin yêu cầu

sẽ khác nhau, tuỳ thuộc vào kiến trúc và môi trường

Trang 26

Trang 35

Lê Tiến Hưng - 02DHTH079

Huỳnh Quốc Huy — 02DHKT047

Bảo trì ứng dụng (6) TopLink bao gôm nhiều tuỳ chọn để tăng cường hiệu năng cho ứng dụng Bạn có thể tuỳ biến các điện mạo của TopLink để phù hợp với yêu cầu của bạn Sử dụng các tính năng tăng cường của TopLink hoặc viết truy vấn định tuyến để truy cập xuống database trong những cách cụ thể để tối ưu hiệu năng

2 Chon mét cau tric véi TopLink

* XML/Web service client

* Java (fat) client

e Two Tier:

Three Tier: Oracle dé nghi m6t cau tric img dung 3 tầng Với cầu trúc này, oracle đề nghị sử dụng TopLink “server và client session” J2EE or Non-J2EE: Bạn có thể sử dụng TopLink trong 2 cầu trúc ứng dụng J2EE hoặc Non-J2EE Oracle khuyên bạn nên dùng cầu trúc ứng dụng J2EE

Với J2EE bạn có thể sử dụng một cai “pool” kết nối ngoài Còn với

Non-J2EE thi ban ding “pool” két nối trong

Client: Trong cấu trúc ứng dụng 3 tầng, bạn có thể xây dựng một số

lagi client sau:

- Web client

- XML/Web service client

- Java (fat) client Two Tier: Với cấu trúc ứng dụng 2 tang, Oracle dé nghi sử dụng TopLink database session va TopLink unit Điều bất lợi của cầu trúc này là không có Web và không thể mở rộng việc triển khai ứng dụng

e EJB 3.0 JPA Entities

e Plain Old Java Objects (POJO)

Trang 36

Lê Tiến Hưng - 02DHTH079

Huỳnh Quốc Huy - 02DHKT047

EJB Session Bean: Với EJB session bean, bạn có thể sử dung JTA

(Java Transaction API) va “pool” kết nối ngoài JTA là một giao diện lập trình ứng dụng mà bạn dùng để tương tác với một transaction manager

Stateful: Nếu bạn sử dụng stateful session bean thì hãy chú ý rằng một tham chiếu đến client không được passivated Khi đó bạn phải

làm lại với một client session

Stateless: Nếu bạn sử dụng stateless session bean, bạn phải tham

chiếu mới đến client session

EJB Entity Bean: Cấu trúc EJB entity bean thì hơi khác so với TopLink, bởi vì giao diện EJB entity bean che giấu các chứa năng TopLink từ người lập trình ứng dụng client

CMP: Bạn dùng TopLink tích hợp CMP cho ứng dụng server, chắc chắn rang bạn sử dụng J2EE có hỗ trợ TopLink

BMP: Nếu bạn dùng entity bean với BMP, ban phải dùng TopLink

tích hợp BMP Điều bất là cầu trúc BMP giới hạn và không cung cap

EIS, không quan hệ, dữ liệu thừa kế

- XML va dir liéu dich vy Web

e Nhiều nguồn dữ liệu: Nếu cau trúc ứng dụng của bạn phải truy cập nhiều hơn một nguồn đữ liệu thì Oracle đề nghị bạn nên dùng một session broker và JTA Ngoài ra bạn cũng có thể dùng nhiều session

e Isolating Data Access

e Historical Data Access

d) Caching

e© Các loại cache: Lua chon mét loai cache thich hop cho loai dtr

liệu của ứng dung

3 Xây dựng và sử dụng Persistence Layer

Oracle TopLink yêu câu các class phải có các thủ tục tối thiểu trước khi

chúng trở thành thường trực TopLink cũng đưa ra các thủ tục khác TopLink sử dụng một phương pháp “nonintrusive” bởi việc thực thi một cấu trúc metadata để cho phép tối thiểu hoá sự xâm nhập vào mô hình đối tượng

a) Implementation Options

e Các thành phần lớp Persistence có thể được phát sinh như là metadata từ TopLink Workbench

Trang 28

Trang 37

Lê Tiến Hưng - 02DHTH079

Huynh Quoc Huy - 02DHKT047

Oracle dé nghi str dung TopLink Workbench dé tao metadata can

thiết (được lưu trữ như là XML) Bạn có thé dé dang trich xuất và

cập nhật file project.xml và sessions.xml Điều này rút ngăn công sức phát triển băng việc loại đi những việc cần thiết để phát sinh

và biên dịch lại Java code môi khi bạn thay đổi project Với TopLink Workbench, bạn chỉ viết code cho các lớp ứng dụng và các phương thức bổ sung cần thiết

Để sử dụng Java code, bạn phải tự viết code cho mỗi TopLink project, bao gồm: project, login, platform, descriptors, va mappings Diéu nay cé thể tạo nên hiệu quả cao nêu ứng dụng của bạn la model-based va dựa vào phát sinh code Tuỳ thuộc vào từng loại project mà bạn tạo, TopLink Workbench có thé trích xuất Java code cho các project, table và model source của ban

b) Persistent Class Requirements

Bạn có thể truy xuất trực tiếp đến các thuộc tính private và protected

Khi sử dụng “nonfransparent” gián tiếp các thuộc tính phải thuộc loại ValueHolderInterface hơn là loại thuộc tính nguyên bản chính

TopLink dua ra “transparent” gian tiép cho các loại thuộc tính Collection, List, Set, va Map cho bất kỳ các tập ánh xạ nào Sử dụng transparent gián tiếp không yêu cầu phải dùng ValueHolderlnterface hay bất kỳ các yêu cầu mô hình đối tượng nào khác

c) Persistence Layer Components

Mapping Metadata:

Mô hình metadata của ứng dụng TopLink là dựa trên TopLink project, bao gém: descriptors, mappings, va các chính sách để tuỳ biến khả năng run- -time Ban kết hợp ánh xạ và các thông tin cầu hình này với một nguồn đữ liệu và ứng dụng đặc biệt băng cách tham chiếu đến project từ một session

Session Metadata:

Một session là một giao diện chính giữa ứng dung client va TopLink, va m6 ta viéc kết nối đến nguồn dữ liệu bên dưới

TopLink đưa ra một vài loại session khác nhau, mỗi loại đều tối

ưu cho các yêu cầu và cấu trúc thiết kế khác nhau Session thường được sử dụng nhất là server session, một session mà client truy cap đến server thông qua mét client session Server session cung cap cdc tai nguyén chia sé nhu cache va connection Ban định nghĩa một session cho một session metadata

Với CMP project, TopLink run-time tạo và sử dụng một session nội tại, nhưng ứng dụng của bạn không yêu câu hay sử dụng

Trang 38

Lê Tiến Hưng - 02DHTH079

Huỳnh Quốc Huy - 02DHKT047

session nay truc tiép Tuỳ thuộc vào ứng dụng server mà bạn

dùng, bạn có thể chỉ ra một vài tham số cho session nội tại này

Cache:

Mặc định, một TopLink session cung cấp một cache object-level

để bảo đảm sự nhận dạng đối tượng và tăng cường hiệu năng bằng việc rút ngắn thời gian mả ứng dụng cân truy xuất đến nguôn dữ liệu TopLink cuung cấp các loại cache như: locking, refresh, invalidation, isolation, va coordination Sir dung cache coordination ban cé thể cấu hình TopLink để đồng bộ sự thay đổi

với các đối tượng khác của ứng dụng

Queries and Expressions:

TopLink cung cap một vài loại câu truy vấn đối tượng và dữ liệu,

và đưa ra các tuỳ chọn linh hoạt cho tiêu chuẩn chọn truy vấn, bao gồm:

này làm đơn giản hoá việc phát triển và đóng gói ứng dụng, giảm

chi phi bao tri

Bắt chấp cấu trúc hay loại persistence entity, bạn thoải mái dùng các tuỳ chọn truy vân TopLink Workbench đưa ra cách đơn giản nhất để định nghĩa truy vân Ngoài ra, bạn cũng có thể tạo truy vấn trong đoạn code bang cach str dung TopLink API

Transactions:

unit of work cach ly thay đôi trong m6t transaction từ các tién trinh khác cho đến khi nó hoàn tất việc thay đổi trong database Không giống như các cơ chế transaction khác, z? oƒ work tự động quán lý sự thay đổi đối tượng trong transaction, thứ tự thay đối

Nếu một ứng dụng sử dụng các entity bean, bạn sẽ không trực tiếp truy xuất đến z2 oƒ work API, nhưng bạn van có được những lợi tích từ các tính năng của nó như là: sự tích hợp giữa TopLink run-time va J2EE container tu dong ding unit of work

để có được những lợi ích tốt nhất của ứng dụng

d) Using the Persistence Layer

Trang 30

Trang 39

Lê Tiến Hưng - 02DHTH079

Huỳnh Quốc Huy - 02DHKT047

e V6i non-CMP project, img dung cia ban nap file session.xml tai lúc thuc thi str dung session manager File session.xml chira đựng một tham chiếu đến project.xml Sử dụng session, ứng dụng của bạn sẽ truy xuất đến TopLink runtime và project xml

V6i CMP project, metadata duge yêu cầu phụ thuộc vào J2EE application server ma ban triển khai ứng dụng Tất cả các ứng dụng server yêu cầu một file ejb-jarxml và một file TopLink project XML Cấu hình session cũng phụ thuộc vào J2EE application server

4 Triển khai ứng dụng

Việc đóng gói ứng dụng tác động đến việc cấu hình và sử dụng TopLink Ví dụ, bạn đóng gói một ứng dụng J2EE trong một file EAR Bên trong file EAR, ta đóng gói các thực thé thanh file WAR va file JAR

Trong phan nay sé mô tả việc đóng goi va triển khai một ứng dụng TopLink Tuy nhiên, nếu bạn triển khai ứng dụng trong J2EE container thì bạn phải cấu hình các thành phần của ứng dụng để cho phép hỗ trợ TopLink container

a) Understand Deployment

Cách để TopLink triển khai ứng đụng là đòi hỏi các đóng gói trong một file, ví dụ như là file JAR hoặc EAR Phương pháp giúp ban tao

ra các file deploy bên trong container, sau khi tạo xong những file

này thì bắt đầu triển khai ứng dụng

b) TopLin trong một ứng dụng J2EE

Mặc dù TopLink là một phần không thể thiếu của ứng dụng J2EE, trong hầu hết các trường hợp client không tương tác trực tiếp với TopLink, thay vào đó các tình năng của TopLink được triệu gọi gián tiếp bằng cách gọi lại của EJB container

Quá trình triển khai đòi hỏi phải thực hiện các bước sau:

Xây dụng các thành phần project, bao gồm các bean, class và data source

Dinh nghia mapping trong TopLink Workbench

Xây dựng các file triển khai ứng dụng, dùng TopLink Workbench

dé tạo những file này

Đóng gói và triển khai ứng dụng

Thêm một số đoạn code vào ứng dụng client để cho phép chúng truy xuất đến ứng dụng TopLink

Ngày đăng: 16/06/2014, 11:30

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w