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 1TRƯỜ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 2BỘ 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 3diệ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 6LỜ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 7MỤ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 8T 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 9Lê 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 10Lê 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 11Lê 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 12Lê 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 13Lê 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 14Lê 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 15Lê 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 16Lê 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 17Lê 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 18Lê 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 19Lê 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 21Lê 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 22Lê 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 23Lê 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 24Lê 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 25Lê 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 26Lê 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 27Lê 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 29Lê 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 30Lê 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 32Lê 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 33Lê 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 36Lê 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 37Lê 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 38Lê 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 39Lê 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