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

tìm hiểu j2ee 5, enterprise java bean 3.0, java persistence api 2.0. xây dựng website bán điện thoại di dộng

159 1,3K 0

Đ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

Định dạng
Số trang 159
Dung lượng 5,7 MB

Nội dung

3 Java IDL: IDL Interface Definition Language là một ngôn ngữ nền tảng tiêu chuẩn khai báo độc lập được sử dụng để xác định các giao diện đối tượng triển khai cung cấp và đối tượng khách

Trang 1

BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP HỒ CHÍ MINH

KHOA CÔNG NGHỆ THÔNG TIN

-THỰC TẬP TỐT NGHIỆP

TÌM HIỂU J2EE 5, ENTERPRISE JAVA BEAN 3.0, JAVA PERSISTENCE API 2.0 XÂY DỰNG WEBSITE BÁN ĐIỆN THOẠI

GIÁO VIÊN HƯỚNG DẪN:

Ths NGUYỄN MINH ĐẠO

TP HỒ CHÍ MINH – 6/2010

Trang 2

NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN

Ngày….tháng….năm 2010

GVHD: Ths Nguyễn Minh Đạo

Trang 3

NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN

Ngày….tháng….năm 2010

GVPB:Ths Trần Công Tú

Trang 4

LỜI CẢM ƠN

Chúng em chân thành cảm ơn Thầy Nguyễn Minh Đạo, dù rất bận rộn nhưngluôn tận tình hướng dẫn cho chúng em trong suốt quá trình thực hiện đề tài cũngnhư đã tạo mọi điều kiện tốt nhất để chúng em hoàn thành tốt đề tài tiểu luận này

Chúng em xin chân thành cảm ơn các Thầy, Cô trường Đại Học Sư Phạm KỹThuật TP Hồ Chí Minh đã cung cấp cho chúng em những kiến thức nền tảng và đạođức để chúng em có khả năng tự học và nghiên cứu

Chúng em xin gửi lời cảm ơn sâu sắc đến quý Thầy, Cô trong khoa Côngnghệ Thông tin trường Đại Học Sư Phạm Kỹ Thuật TP Hồ Chí Minh đã tận tìnhdạy dỗ, dìu dắt, hướng dẫn chúng em suốt thời gian qua

Chúng con cảm ơn Bố, Mẹ và những người thân đã luôn là nguồn động viênchúng con trong thời gian học tập, nghiên cứu để có được thành quả như ngày hômnay

Xin chân thành cám ơn sự giúp đỡ, động viên và chỉ bảo rất nhiệt tình của các anh chị đi trước và tất cả bạn bè đã giúp đỡ chúng tôi trong thời gian làm bài tiểu luận

Mặc dù đã cố gắng nỗ lực hết sức mình, song chắc chắn luận văn không khỏithiếu sót Chúng em rất mong nhận được sự thông cảm và chỉ bảo tận tình của quý Thầy, Cô và các bạn

TP.Hồ Chí Minh 06-2010Nhóm sinh viên thực hiện

Lê Minh Sung – Lê Thanh Tiền

Trang 5

M C L C ỤC LỤC ỤC LỤC

NH N XÉT C A GIÁO VIÊN H ẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN ỦA GIÁO VIÊN HƯỚNG DẪN ƯỚNG DẪN NG D N ẪN 2

NH N XÉT C A GIÁO VIÊN PH N BI N ẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN ỦA GIÁO VIÊN HƯỚNG DẪN ẢN BIỆN ỆN 3

L I C M N ỜI CẢM ƠN ẢN BIỆN ƠN 4

DANH M C CÁC B NG ỤC LỤC ẢN BIỆN 11

DANH M C CÁC HÌNH ỤC LỤC 12

1 CH ƯƠN NG 1 : M Đ U Ở ĐẦU ẦU 14

1.1 Tính cấp thiết của đề tài 14

1.2 Mục tiêu đề tài 15

1.3 Phạm vi nghiên cứu 15

2 CH ƯƠN NG 2 : C S LÝ THUY T ƠN Ở ĐẦU ẾT 16

2.1 Tổng quan về J2EE 16

2.1.1 J2EE là gì? 16

2.1.2 Kiến trúc của J2EE 16

2.2 Enterprise Java Bean 20

2.2.1 Giới thiệu về EJB 20

2.2.1.1 EJB là gì 20

2.2.1.2 Thùng chứa EJB ( EJB Container) 21

2.2.1.3 Ưu nhược điểm của EJB 3.0 22

2.2.1.4 Ưu điểm 22

2.2.1.5 Nhược điểm 22

2.2.2 Những đặc tính mới của EJB 3.0 22

2.2.2.1 EJB là các POJOs (Plain Old Java Objects) 22

2.2.2.2 Loại bỏ những lớp không cần thiết 23

2.2.2.3 Sử dụng Annotations thay thế cho XML 25

2.2.3 Session Bean 26

2.2.3.1 Stateless session bean 27

2.2.3.2 Stateful session bean 29

2.2.3.3 Mô hình của Session bean 31

2.2.3.4 Session Context 35

2.2.3.5 Triển khai mô tả (Deployment Descriptor) 36

2.2.3.6 Environment Naming Context 36

2.2.4 Callbacks 38

Trang 6

2.2.5 Interceptors 39

2.2.5.1 Around-Invoke Interceptors 40

2.2.5.2 Method interceptors 40

2.2.5.3 Life-Cycle Interceptor 41

2.2.5.4 Chuỗi Interceptors và vô hiệu hóa interceptors 42

2.2.6 Giao tác và bảo mật 43

2.2.6.1 Giao tác 43

2.2.6.2 ACID: atomicity, consistence, isolation, durability 43

2.2.6.3 Giao tác cục bộ 44

2.2.6.4 XA và giao tác phân tán 45

2.2.6.5 Container-managed, Bean-managed và Client-Controlled Transaction 46

2.2.6.6 Giao tác trong EJB 46

2.2.7 Bảo mật 50

2.2.7.1 Vai trò và người ủy nhiệm (Principals and Roles) 50

2.2.7.2 Sử dụng trong EJB 50

2.2.8 Message-Driven Beans 53

2.2.8.1 Tổng quan về Messaging 53

2.2.8.2 Java Message Services (JMS) 54

2.2.8.3 Message-DrivenBeans 62

2.2.8.4 Những tính chất chính của Message-Driven Bean 62

2.2.8.5 Định nghĩa một Message-Driven Beans 62

2.2.8.6 Vòng đời và các callback annotation 64

2.2.8.7 Giao tác 64

2.2.9 Tổng kết về Enterprise Java Bean: 65

2.3 Java Persistence API 67

2.3.1 Giới thiệu JPA 67

2.3.2 Kiến trúc JPA 67

2.3.2.1 Entity 68

2.3.2.2 EntityManager: 68

2.3.2.3 EntityManagerFactory: 68

2.3.3 Ánh xạ giữa đối tượng và cơ sở dữ liệu quan hệ (Object- Relational Mapping) 69

2.3.3.1 Cách ánh xạ một Entity 69

2.3.3.2 Mapping bằng XML descriptor: 79

Trang 7

2.3.4 Quản lý các đối tượng Persistent 80

2.3.4.1 Entity Manager: 80

2.3.4.2 Sử dụng một Entity Manager: 81

2.3.4.3 Persistence Context 82

2.3.4.4 Thao tác với các entity 83

2.3.5 Ánh xạ các mối quan hệ (relationship mapping) 86

2.3.5.1 One-to-One 86

2.3.5.2 One-to-Many 88

2.3.5.3 Many-to-Many 91

2.3.6 Ánh xạ kế thừa (Inheritance Mapping) 93

2.3.6.1 Single-table Strategy 94

2.3.6.2 Joined Strategy 95

2.3.6.3 Table-per-Class Strategy 96

2.3.7 JPQL 98

2.3.7.1 Select 98

2.3.7.2 From: 99

2.3.7.3 Where: 99

2.3.7.4 Kết buộc Parametters: 100

2.3.7.5 Delete 100

2.3.7.6 Update: 100

2.3.8 Các loại Query: 101

2.3.8.1 Dynamic Queries 102

2.3.8.2 Named Queries 103

2.3.8.3 Native Queries 104

2.3.9 Callbacks and Listeners 104

2.3.9.1 Entity Life Cycle 104

2.3.9.2 Callbacks 105

2.3.9.3 Listeners 107

2.3.10 Tổng kết về Java Persistence API 108

3 CH ƯƠN NG 3: KH O SÁT H TH NG BÁN ĐI N THO I ẢN BIỆN ỆN ỐNG BÁN ĐIỆN THOẠI ỆN ẠI 109

3.1 Khảo sát các hệ thống đang có trên internet 109

3.1.1 Website www.thegioididong.com 109

3.1.1.1 Tổng quan về website 109

Trang 8

3.1.1.2 Tổng quan chức năng bán điện thoại 109

3.1.1.3 Qui trình thực hiện chức năng 110

3.1.1.4 Tổng kết và đánh giá 116

3.1.2 Website www.mainguyen.vn 117

3.1.2.1 Tổng quan về website 117

3.1.2.2 Qui trình thực hiện chức năng 118

3.1.2.3 Tổng kết và đánh giá 120

3.1.3 Khảo sát một số chức năng chính của những website khác 121

3.1.3.1 www.vienthonga.com/MobilePhone/ 121

3.1.3.2 http://www.hnammobile.com/ 121

3.2 Xác định chức năng của hệ thống 122

3.2.1 Các chức năng của hệ thống: 122

3.2.1.1 Chức năng phục vụ khách hàng 122

3.2.1.2 Chức năng quản lý của hệ thống 123

4 CH ƯƠN NG 4 : PHÂN TÍCH 124

4.1 Usecace diagram 124

4.2 Actor 126

4.3 Mô tả Usecase 127

4.3.1 Usecase đăng nhập: 127

4.3.2 Usecase Tìm kiếm: 127

4.3.3 Usecase đặt hàng 127

4.3.4 Usecase thêm hàng vào giỏ 128

4.3.5 Usecase đóng góp ý kiến 129

4.3.6 Usecase thêm user: 129

4.3.7 Usecase cập nhật user: 129

4.3.8 Usecase xóa user: 130

4.3.9 Usecase thêm sản phẩm: 130

4.3.10 Usecase cập nhật sản phẩm: 131

4.3.11 Usecase xóa sản phẩm: 131

4.3.12 Usecase thống kê bán hàng: 131

4.3.13 Usecase thống kê đơn đặt hàng: 132

4.4 Activity Diagram 133

4.4.1 Usecase tìm kiếm 133

Trang 9

4.4.2 Usecase đặt hàng 133

4.4.3 Usecase thêm hàng vào giỏ 133

4.4.4 Usecase xóa hàng khỏi giỏ hàng 134

4.4.5 Usecase nhập thông tin góp ý 134

4.4.6 Quản lý User: 134

4.4.7 Quản lý sản phẩm: 135

4.4.8 Thống kê sản phẩm: 135

4.4.9 Thống kê đơn đặt hàng: 135

4.5 Sequence Diagram 136

4.5.1 Lược đồ Sequence cho Usecase đăng nhập: 136

4.5.2 Lược đồ Sequence cho Usecase thêm user: 136

4.5.3 Lược đồ Sequence cho Usecase thêm sản phẩm: 137

4.5.4 Lược đồ Sequence cho Usecase xóa sản phẩm: 137

4.5.5 Lược đồ Sequence cho Usecase cập nhật sản phẩm: 138

4.5.6 Lược đồ Sequence cho Usecase nhận xét sản phẩm: 138

4.5.7 Lược đồ Sequence cho Usecase đặt hàng: 139

4.5.8 Lược đồ Sequence cho Usecase thanh toán: 139

4.5.9 Lược đồ Sequence cho Usecase xem chi tiết sản phẩm: 140

4.5.10 Lược đồ Sequence cho Usecase tìm kiếm sản phẩm: 140

4.5.11 Lược đồ Sequence cho Usecase so sánh sản phẩm: 141

4.6 Class Diagram 142

5 CH ƯƠN NG 5 : THI T K VÀ CÀI Đ T ẾT ẾT ẶT 143

5.1 Thiết kế cơ sở dữ liệu 143

5.1.1 Mô hình cơ sở dữ liệu quan hệ 143

5.1.2 Chi tiết các bảng 143

5.2 Thiết kế giao diện: 150

5.2.1 Trang chủ 150

5.2.2 Màn hình giỏ hàng 150

5.2.3 Trang chi tiết sản phẩm 151

5.2.1 Màn hình đặt hàng online 151

5.2.2 Trang nhận xét sản phẩm 152

5.2.3 So sánh sản phẩm 152

5.2.4 Màn hình kết quả tìm kiếm 152

Trang 10

6 CH ƯƠN NG 6 : K T LU N ẾT ẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN 153

6.1 Kết quả đạt được 153

6.2 Hạn chế 153

6.3 Mở rộng trong tương lai 153

7 CH ƯƠN NG 7 : TÀI LI U THAM KH O ỆN ẢN BIỆN 154

Trang 11

DANH MỤC CÁC BẢNG

Bảng 2-1 SessionContext Interface 35

Bảng 2-2 javax.transaction.UserTransaction Interface 49

Bảng 2-3 Security annotations 50

Bảng 2-4 Các loại thông điệp 59

Bảng 2-5 MDB transaction với Session Bean transaction 64

Bảng 2-6 EntityManager 68

Bảng 2-7 EntityManager Interfaces 101

Bảng 2-8 Callbacks Annotation 105

DANH MỤC CÁC HÌN

Trang 12

Hình 2-1 Mô hình đa tầng của J2EE 16

Hình 2-2 Containers và Components 17

Hình 2-3 Minh họa Session bean tương tác với khách hàng 26

Hình 2-4 Stateless session bean pooling 27

Hình 2-5 Stateless life cycle 28

Hình 2-6 Quá trình chuyển bean sang trạng thái thụ động (Passived) 29

Hình 2-7 Quá trình chuyển bean sang trạng thái hoạt động (Actived) 30

Hình 2-8 Stateful life cycle 30

Hình 2-9 Các loại giao diện 32

Hình 2-10 Session bean invoked by several client 32

Hình 2-11 Container chặn lời gọi từ client và gọi thực hiện các interceptor .39 Hình 2-12 chuỗi interceptor 42

Hình 2-13 Mô hình một giao tác gồm một tài nguyên 44

Hình 2-14 Mô hình một giao tác sử dụng nhiều tài nguyên 45

Hình 2-15 Quá trình thực hiện commit trên hai tài nguyên 45

Hình 2-16 giao tác XA phân tán 46

Hình 2-17 Hoạt động của một transaction 47

Hình 2-18 Mô hình vai trò và người ủy nhiệm 50

Hình 2-19 Remote method invocation với messaging 54

Hình 2-20 MOM Architecture 54

Hình 2-21 JMS Architecture 55

Hình 2-22 Publish/Subscribe Destionation 56

Hình 2-23 Point-to-Point 56

Hình 2-24 JMS API 57

Hình 2-25 Cấu trúc của message 58

Hình 2-26 Mô hình một chương trình JMS client 60

Hình 2-27 Message Driven Bean life cycle 64

Hình 2-28 Kiến trúc của JPA 67

Hình 2-29 Mô hình ORM 69

Hình 2-30 Entity Life Cycle 105

Hình 3-1 Giao diện trang chủ www.thegioididong.com 109

Hình 3-2 Màn hình chi tiết sản phẩm www.thegioigdidong.com 110

Hình 3-3 Tìm kiếm www.thegioigdidong.com 111

Trang 13

Hình 3-4 Kết quả tìm kiếm www.thegioigdidong.com 111

Hình 3-5 Màn hình so sánh sản phẩm www.thegioididong.com 113

Hình 3-6 Màn hình góp ý www.thegioididong.com 114

Hình 3-7 Màn hình đăng ký thông tin www.thegioididong.com 115

Hình 3-8 Màn hình chọn hình thức thanh toán www.thegioididong.com 115

Hình 3-9 Màn hình đơn đặt hàng online www.thegioididong.com 115

Hình 3-10 Màn hình trang chủ www.mainguyen.com 117

Hình 3-11 Màn hình chi tiết sản phẩm www.mainguyen.com 117

Hình 3-12 Màn hình thông tin www.mainguyen.com 118

Hình 3-13 Màn hình tìm kiếm www.mainguyen.com 118

Hình 3-14 Màn hình kết quả tìm kiếm www.mainguyen.com 119

Hình 3-15 Màn hình tìm kiếm theo hãng sản xuất www.mainguyen.com 119

Hình 3-16 Màn hình đánh giá sản phẩm www.mainguyen.com 120

Hình 4-1 UseCase Diagram 124

Trang 14

CHƯƠNG 1 : MỞ ĐẦU1.1 Tính c p thi t c a đ tàiấp thiết của đề tài ết của đề tài ủa đề tài ề tài

Khi mà kinh tế thế giới đã phát triển và hoạt động kinh doanh của họ đã trởnên toàn cầu hóa Những ứng dụng của doanh nghiệp ngày càng xử lý nhiều côngviệc hơn, dữ liệu của doanh nghiệp phân tán nhiều nơi và vấn đề bảo mật cũng nhưđảm bảo toàn vẹn dữ liệu trở nên quan trọng Bên cạnh đó việc ứng dụng cần đượctriển khai phân tán ở nhiều nơi để đáp ứng những yêu cầu công việc hiện tại đãmang lại nhiều thách thức cho lập trình viên J2EE (Java 2 Platform EnterpriseEdition) được giới thiệu lần đầu tiên vào năm 1999 là một platform mang nhiều tínhnăng mạnh mẽ đặc biệt hổ trợ mạnh về giao tác (transaction) và bảo mật (security).Những ứng dụng J2EE cho phép khả năng mở rộng cao, khả năng cung cấp dịch vụcho nhiều khách hàng (client) và phân tán trên nhiều nơi Kể từ khi ra đời J2EE đãcho ra đời những đặc tả mới và trở nên phong phú, mạnh mẽ cho việc phát triển ứngdụng web sử dụng J2EE, việc kiểm lỗi và triển khai trở nên dễ dàng hơn

Trong đặc tả của J2EE cung cấp nhiều công nghệ cho phép lập trình viên xử

lý những yêu cầu khác nhau như: JMS (Java Message Service), JavaMail, EJB(Enterprise Java Bean)…Trong đó EJB là một đặc tả tốt nhất trong J2EE, EJB hổtrợ mạnh việc thực hiện giao tác và bảo mật Đi kèm với EJB là đặc tả JavaPersistence API (JPA) cho phép các lớp Java ánh xạ với các bảng trong cơ sở dữliệu Qua lịch sử phát triển của J2EE, EJB cũng đã thay đổi nhiều kể từ lúc mớiđược giới thiệu Phiên bản EJB 3.0 kết hợp với đặc tả JPA 2.0 được giới thiệu cùngvới J2EE 5.0 là một bước ngoặc trong lịch sử phát triển của EJB EJB 3.0 tập trungvào tính dễ sử dụng và triển khai ứng dụng mang lại một động lực mới cho giới lậptrình tiếp tục sử dụng EJB cũng như những công nghệ của J2EE để phát triển ứngdụng phía máy chủ mà điển hình là những ứng dụng web

Trang 15

1.2 M c tiêu đ tàiục tiêu đề tài ề tài

Tìm hiểu về J2EE 5.0 tập trung tìm hiểu hai công nghệ chính là

Enterprise Java Bean (3.0) kết hợp với Java Persistence API (2.0).

Ứng dụng công nghệ vào việc xây dựng website bán điện thoại sử dụng kết hợp với JavaServer Faces 1.2(JSF 1.2) và bộ thư viện RichFaces 3.3.2SR1 của Jboss.

1.3 Ph m vi nghiên c uạm vi nghiên cứu ứu

Tìm hiểu công nghệ J2EE 5.0 tập trung vào hai công nghệ chính là EJB 3.0 và JPA 2.0

Do thời gian có hạn nên chỉ xây dựng một số chức năng căn bản phía khách hàng của website.

1

Trang 16

CHƯƠNG 2 : CƠ SỞ LÝ THUYẾT

Connectivity) truy cập cơ sở dữ liệu, CORBA kết hợp với những tài nguyên

đã có…Được xây dựng trên nền tảng là Java 2 Platform, J2EE mở rộng hổ trợ cho nhiều công nghệ mới như Enterprise JavaBeans, Java Servlets, JavaServer Pages và XML

2.1.2 Kiến trúc của J2EE

J2EE nền tảng sử dụng một mô hình ứng dụng phân tán đa tầng

Trang 17

Hình 2-1 Mô hình đa tầng của J2EE

Trong mô hình ứng dụng J2EE có nhiều tầng: Tầng khách hàng (client tier), tầng web (web tier), tầng thương mại (business tier) và tầng hệ thống thông tin thương mại (enterprise information system tier) Tầng thương mại và tầngweb nằm trên một máy chủ ứng dụng gọi là máy chủ ứng dụng (application server) hay máy chủ J2EE (J2EE server) Máy chủ J2EE cung cấp những dịch vụ cần thiết cho những thành phần (component) của tầng thương mại vàtầng web

Có hai loại khách hàng (client) là: Những khách hàng ứng dụng (application clients) và những khách hàng web (web client) Khách hàng web

Trang 18

truy cập tới những thành phần trong tâng web là các lớp Java Servlet hay Java ServerPages Những khách hàng ứng dụng là những ứng dụng độc lập, chúng truy cập trực tiếp tới các thành phần trong tầng thương mại

Hình 2-2 Containers và Components

J2EE có các loại container như :

- Web Container : Quản lý sự thực thi của các thành phần web, và container của chúng chạy trong máy chủ J2EE (J2EE server)

- EJB Container : Quản lý sự thực thi của các thành phần EJB, các thành phần EJB và container của chúng chạy trong J2EE server

- Application client Container : Quản lý sự thực thi các thành phần của ứng dụng client

- Applet Container : Quản lý sự thực thi của applets(ứng dụng ký sinh).Các công nghệ trong J2EE :

1) Java Database Connectivity (JDBC) API: JDBC là một tập hợp các giao diệncho phép các ứng dụng Java truy cập vào cơ sở dữ liệu bất kỳ API này có cùng một mục đích như ODBC (Open Database Connectivity) Microsoft.2) Remote Method Invocation (RMI): RMI là một API cho phép các đối tượng Java để giao tiếp từ xa với các đối tượng khác

Trang 19

3) Java IDL: IDL (Interface Definition Language) là một ngôn ngữ nền tảng tiêu chuẩn khai báo độc lập được sử dụng để xác định các giao diện đối tượng triển khai cung cấp và đối tượng khách hàng gọi Java IDL cho phép bất kỳ đối tượng Java để giao tiếp với các đối tượng khác trong ngôn ngữ bất

kỳ bằng phương tiện của IDL

4) Enterprise Java Beans: Đóng gói các logic thương mại (business logic) và hổtrợ thực hiện giao tác và bảo mật

5) Servlets và Java Server Pages (JSP): Công nghệ dùng trong xây dựng những ứng dụng web

6) Java Message Service (JMS): Tập APIs cho phép ứng dụng tạo, gởi, nhận, vàđọc thông điệp bất đồng bộ

7) Java Transaction API (JTA): JTA cho phép những ứng dụng J2EE thực hiện những giao tác phân tán (distibuted transaction)

8) JavaMail: Cho phép thành phần java gởi và nhận mail

9) Java API cho xử lý XML (Java API for XML Processing -JAXP): XML là một định dạng dữ liệu cho các tài liệu thay thế cấu trúc trên Web JAXP cho phép các ứng dụng Java phân tích và chuyển đổi tài liệu XML XML được

sử dụng nhiều trong J2EE như là một định dạng dữ liệu

10)Java Naming và Directory Interface (JNDI): JNDI là một giao thức cung cấp một tập API chuẩn cho phép truy cập tới những dịch vụ naming và directory.11)Java Persistence API (JPA) : Cho phép ánh xạ giữa một lớp java với các cột trong một bảng

Trang 20

2.2 Enterprise Java Bean

2.2.1 Gi i thi u v EJBới thiệu về EJB ệu về EJB ề tài

EE như JDBC, JavaMail, JPA, Java Transaction API (JTA), Java MessagingService (JMS), Java Authentication and Authorization Service (JAAS), JavaNaming and Directory Interface (JNDI), and Remote Method Invocation (RMI)

Ngày nay EJBs là một cách đơn giản cho các việc phát triển các mô hình lập trình Java phía máy chủ, giảm độ phức tạp trong khi mang lại khả năng tái sử dụng và khả năng mở rộng tới các ứng dụng thương mại quan trọng Tất cả những điều đạt được này đều xuất phát từ một lớp java nguyên thủy (Plain old Java Object-POJO) sẽ được triển khai vào một thùng chứa (container)

Các loại EJB:

Session bean dùng để đóng gói logic thương mại (business logic) cấp cao và

là phần quan trọng nhất của công nghệ EJB Các loại session bean:

- Stateless: Session bean không chứa trạng thái giao tiếp giữa các phương thức và bất kỳ thể hiện (instance) nào của nó có thể được sử dụng cho bất kỳ khách hàng nào

- Stateful: Session bean có chứa trạng thái giao tiếp với khách hàng (client) trong suốt phiên làm việc (session)

Message-driven beans (MDBs): Được sử dụng để liên kết các hệ thống bên ngoài bằng việc nhận các thông điệp bất đồng bộ sử dụng JMS (Java Message Service) MDBs chủ yếu được sử dụng để tích hợp các hệ thống thông điệp hướng thành phần giữa (message-oriented middleware - MOM)

Trang 21

Entity Bean: Những thực thể bean kết nối với cơ sở dữ liệu thông qua ánh

xạ giữa một lớp java và một cột trong một bảng trong cơ sở dữ liệu

2.2.1.2 Thùng ch a EJB ( EJB Container)ứu

EJB là một thành phần phía máy chủ và cần được thực thi trong một thùngchứa (container) Môi trường thực thi này cung cấp các tính năng cốt yếu chonhiều ứng dụng thương mại như:

- Remote client communication: Giao tiếp khách hàng từ xa

- Dependency injection: Phụ thuộc tiêm

- State management: quản lý trạng thái

- Pooling: Hồ chứa

- Component life cycle: Vòng đời các thành phần

- Messaging: Gởi thông điệp bất đồng bộ

- Transaction management: Quản lý giao tác

- Security: Bảo mật

- Concurrency support: Hổ trợ tranh chấp

- Interceptors: Sự chặn đứng

EJB là các đối tương được quản lý Khi một khách hàng gọi một EJB thì

nó không làm việc trực tiếp với một thể hiện của EJB đó mà là với một ủyquyền trên một thể hiện Mỗi lần một khách gọi một phương thức trên mộtEJB, lời gọi đó thực sự được ủy nhiệm thông qua thùng chứa cung cấp cácdịch vụ đại diện cho một thể hiện của bean

Trong một ứng dụng Java EE, thùng chứa EJB sẽ thường xuyên tươngtác với các thùng chứa khác như: thùng chứa servlet (servlet container),thùng chứa ứng dụng khách hàng(application client container) Tất cả cácthùng chứa này sẽ chạy trong một máy chủ (GlassFish, Jboss, Weblogic, )

Trang 22

2.2.1.3 Ưu nhược điểm của EJB 3.0c đi m c a EJB 3.0ểm của EJB 3.0 ủa đề tài

2.2.1.4 Ưu đi mểm của EJB 3.0

- Đóng gói lớp logic thương mại: Tách biệt giữa lớp thương mại(business) với các lớp điều khiển và hiển thị (control và presentation)

- Truy cập từ xa(remote access): Nhiều ứng dụng trên các máy chủkhác nhau có thể truy cập đến EJB

- Đơn giản hơn các hệ thống remote –object khác

- ứng dụng có thể “leo thang”: Hầu hết các máy chủ J2EE đều hổ trợlustering, load balancing và failover

- Hổ trợ nhiều server: JBoss, Oracle AS, WebLogic, WebSphere,Glassfish…

2.2.1.5 Nhược điểm của EJB 3.0c đi mểm của EJB 3.0

- Phức tạp: Mặc dù EJB 3.0 đơn giản hơn các hệ thống remote-objectkhác những việc cài đặt một hệ thống này không phải là dễ

o VD: Spring sẽ dễ dàng và mạnh mẽ hơn EJB cho những ứngdụng truy cập Local

- Yêu cầu máy chủ J2EE

- Không hổ trợ với Tomcat, Jetty, Resin, JRun, Resin

- Khó khăn để cấu hình và chậm trong quá trình bắt đầu hay khởi độnglại trong quá trình phát triển và kiểm lỗi, tốn tiền

- Vì trong các phiên bản trước EJB vốn đã phức tạp nên dù đã cải tiếncho đơn giản hơn nhưng vẩn bị coi là phức tạp

Trang 23

2.2.2 Nh ng đ c tính m i c a EJB 3.0ững đặc tính mới của EJB 3.0 ặc tính mới của EJB 3.0 ới thiệu về EJB ủa đề tài

2.2.2.1 EJB là các POJOs (Plain Old Java Objects)

Trong EJB 3.0 việc tạo ra các bean đơn giản bằng cách sử dụng các lớp POJO đơn giản.

2.2.2.2 Lo i b nh ng l p không c n thi tạm vi nghiên cứu ỏ những lớp không cần thiết ững đặc tính mới của EJB 3.0 ới thiệu về EJB ần thiết ết của đề tài

Những session bean mới sẽ chứa đựng tất cả các phương thức thươngmại bên trong các giao diện thương mại (business interface) Tùy thuộcvào khách hàng thuộc loại cục bộ hay ở xa mà sẽ chỉ định là local hoặcremote hay là cả hai

Phương thức thương mại từ xa (remote business) không được phépném ngoại lệ java.rmi.RemoteException trong khi EJB 2.x tất cả phươngthức của giao diện Home và Object được yêu cầu thông quajava.rmi.RemoteException Javax.ejb.EJBException đóng gói các ngoại

lệ như các giao thức, hệ thống cấp vấn đề hay là những thùng chứa(container) trả về cho khách hàng

Trong EJB 2.x:

- Một (giao diện ở xa) remote interface phải extend từjavax.ejb.EJBObject, định nghĩa các phương thức thương mại vàphải tuân thủ theo các luật của RMI-IIOP:

o Phải ném ngoại lệ java.rmi.RemoteException

o Tất cả các thông số đầu vào phải được chuyển thành luồngbyte, và các giá trị trả về phải được chuyển thành luồng byte

- Một giao diện tại chổ (home interface) phải extend từjavax.ejb.ejbHOME và định nghĩa các lifecycle method

- Một giao diện tại chổ cho stateless sesion bean phải có mộtphương thức create không có tham số để khởi tạo các thể hiện củabean

Trang 24

- Lớp bean thực thiphải là public và thực thi giao diện

javax.ejb.SessionBean, và phải thực thi tất cả các phươn thức vòng

đời của giao diện javax.ejb.SessionBean.

Ví dụ định nghĩa một EJB trong vs 2.1 và 3.0:

// Remote Interface in EJB 2.x - StockQuote.java

package stockquote;

import java.rmi.RemoteException;

import javax.ejb.EJBObject;

public interface StockQuote extends EJBObject {

public double getStockQuote(String Symbol) throws RemoteException;

// Home Interface in EJB 2.x - StockQuoteHome.java

package stockquote;

import java.rmi.RemoteException;

import javax.ejb.EJBObject;

import javax.ejb.CreateException;

public interface StockQuoteHome extends EJBHome {

public StockQuote create() throws RemoteException,CreateException;

// Bean Implementation Class in EJB 2.x - StockQuoteBean.java

package stockquote;

import java.util.HashMap;

import javax.ejb.SessionBean;

import javax.ejb.SessionContext;

public class StockQuoteBean implements SessionBean {

private SessionContext context = null;

private HashMap mapSQ = null;

public void setSessionContext(SessionContext context) {

public void ejbCreate() {

System.out.println("ejbCreate() method called");

mapSQ = new HashMap();

mapSQ.put("INFY", new Double(44.85));

mapSQ.put("SUNW", new Double(4.99));

}

public double getStockQuote(String symbol) {

Trang 25

public interface StockQuote {

public double getStockQuote(String Symbol);

// Bean Implementation Class in EJB 3.0 - StockQuoteBean.java package stockquote;

import javax.ejb.Stateless;

@Stateless

public class StockQuoteBean implements stockquote.StockQuote {

private HashMap mapSQ = null;

public StockQuoteBean() {

mapSQ = new HashMap();

mapSQ.put("INFY", new Double(44.85));

Trang 26

}}

2.2.2.3 S d ng Annotations thay th cho XMLử dụng Annotations thay thế cho XML ục tiêu đề tài ết của đề tài

2.2.3 Session Bean

Session Bean là một thành phần được thiết kế để đóng gói các dịch vụ

thương mại (business services) Khách hàng không tương tác trực tiếp với thể hiệnbean mà tham chiếu thông qua giao diện cung cấp bởi máy chủ Sự tách biệt giữa khách hàng với bean này cho phép máy chủ chặn những lời gọi hàm từ phía khách hàng và cung cấp những dịch vụ yêu cầu của bean (ví dụ như quản lý giao tác) Nócũng cho phép dùng lại những thể hiện cần thiết

Ví dụ:

Một khách hàng bất cứ khi nào muốn thực hiện bất kỳ những hành động nào như một việc đặt phòng hoặc phê chuẩn một thẻ tín dụng, một Session Bean nên được sử dụng Session Bean quyết định dữ liệu nào sẽ được sửa đổi Thông thường, các Session Bean sử dụng một entity bean truy cập hoặc sửa đổi dữ liệu Nó sẽ cài đặt logic thương mại, thuật toán và luồng công việc Một session bean tương đối ngắn Các thùng chứ EJB có thể hủy một session bean nếu quá thời gian (time out)

Trang 27

Hình 2-3 Minh họa Session bean tương tác với khách hàng

Có 2 loại session bean là: Stateless và Stateful

Trang 28

2.2.3.1 Stateless session bean

Một stateless không duy trì trạng thái giao tiếp với khách hàng Khi mộtkhách khẩn gọi một phương thức của stateless session bean các thể hiện củabean có thể chứa các trạng thái của khách hàng trong suốt phiên làm việc nhưngkhi phiên làm việc kết thúc thì thùng chứa EJB sẽ hủy các trạng thái Loạisession bean này chia sẽ các thể hiện bean giữa các khách hàng nên nó rất cóhiệu quả cho những ứng dụng lớn hàng ngàn khách hàng Sự tương tác giữakhách hàng và bean kết thúc trong một lời khẩn gọi hàm (request)

 Các trường hợp dùng Stateless

o Không chứa dữ liệu cho một client cụ thể

o Nếu chỉ có một phương thức thực hiện chung cho tất cả các khách hàng Thùng chứa EJB sẽ tạo ra Pool (hồ chứa) chứa các thể hiện của Stateless sesionbean và sẽ lựa chọn một cách ngẫu nhiên một thể hiện để phục vụ mỗi yêu cầucủa khách hàng Vì vậy giữa những yêu cầu của khách hàng có thể được thựchiện bởi những thể hiện bean khác nhau

Hình 2-4 Stateless session bean pooling

Trang 29

 Vòng đời của Stateless session bean

Chỉ có hai trạng thái là “Does not exist” và “Ready”:

Hình 2-5 Stateless life cycle

1) Một statelesss session bean bắt đầu khi một khách hàng lần đầu tiênyêu cầu tham chiếu tới bean (dependency injection hay JNDI lookup).2) Nếu một thể hiện mới được tạo ra sử dụng phụ thuộc tiêm (dependencyinjection) thông qua annotation (@Resource, @EJB,

@PersistenceContext, etc…) hoặc trong tập tin triển khai mô tả(deployment descriptors), thùng chứa EJB tiêm những tài nguyên cầnthiết khi khởi tạo các thể hiện bean

3) Nếu thể hiện có phương thức chỉ định @PostContruct thì sẽ được khẩngọi

4) Thể hiện bean xử lý các khẩn gọi của khách hàng và ở trong trạng tháiready để sẳn dàng cho các khẩn gọi sau

5) Thùng chứa EJB gọi phương thức @PreDestroy để kết thúc vòng đờicủa bean

Trang 30

2.2.3.2 Stateful session bean

Loại bean này sử dụng những biến thực thể cho phép bảo tồn dữ liệu thôngqua những lời gọi phương thức Stateful session bean sẽ khôi phục lại trạng tháicủa cùng một khách hàng qua những session Nếu một khi mà khách hàng gỡ bỏ(remove) Bean hoặc quá thời gian thì session sẽ chấm dứt và trạng thái sẽ mất.Loại Bean này hữu dụng khi thực hiện những tác vụ có nhiều bước và nhữngbước nhờ vào kết quả của các bước trước

Ví dụ:

Khi giao dịch với thẻ ghi nợ ATM, các máy ATM có thể thực hiện cácgiao dịch khác nhau như: kiểm tra tài khoản, rút tiền… Những thao tác nàyphải được thực hiện từng bước bởi cùng một khách hàng Vì vậy bean cầnphải giữ dấu những thao tác này Vì vậy trong trường hợp này thì stateful thìthích hợp hơn stateless

 Quản lý trạng thái: (State management)

Hình 2-6 Quá trình chuyển bean sang trạng thái thụ động (Passived)

Trang 31

Hình 2-7 Quá trình chuyển bean sang trạng thái hoạt động (Actived)

 Vòng đời của Stateful

Hình 2-8 Stateful life cycle

Trang 32

1) Một statelesss session bean bắt đầu khi một client lần đầu tiên yêu cầutham chiếu tới bean (dependency injection or JNDI lookup).

2) Nếu một thể hiện mới được tạo ra sử dụng phụ thuộc tiêm (dependencyinjection) thông qua annotation (@Resource, @EJB,

@PersistenceContext, etc…) hoặc trong tập tin triển khai mô tả(deployment descriptors), thùng chứa EJB tiêm những tài nguyên cầnthiết khi khởi tạo các thể hiện bean

3) Nếu thể hiện có phương thức chỉ định @PostContruct thì sẽ được khẩngọi

4) Bean xử lý các yêu cầu của client và sẽ ở trong bộ nhớ chính chờ nhữngyêu cầu sau của client

5) Nếu client không gọi bean trong một khoảng thời gian thì nó sẽ đượcchuyển sang trạng thái thụ động (Passivated), và thùng chứa EJB thựchiện phương thức @PrePassive và chuyển bean xuống bộ nhớ phụ

6) Nếu khách hàng khẩn gọi một phương thức trong một bean đã trong trạngthái thụ động, thùng chứa EJB sẽ đưa nó sang trạng thái thụ động thôngqua phương thức @PostActive

7) Nếu khách hàng không gọi các phương thức trong một bean thụ độngtrong một khoảng thời gian thì thùng chưa EJB sẽ hủy bean này

8) Nếu client gọi phương thức @Remove thì Container sẽ gọi phương thức

đã được annotated là @PreDestroy và kết thúc vòng đời của bean

2.2.3.3 Mô hình của Session bean

Business interfaces: Chứa các khai báo của các business method đểcho client thực thi bằng các lớp bean thực thi Một session bean có thể cógiao diện cục bộ (local interface), giao diện ở xa (remote interface)

Lớp bean: Chứa các thực thi của các phương thức thương mại, phải

được chú thích (annotated) là @Stateless hay @Stateful

Trang 33

Hình 2-9 Các loại giao diện

 Giao diện thương mại (Business Interface)

Tùy thuộc vào kiến trúc của chương trình mà có thể triển khai sessionbean theo kiểu là local hay remote

o Nếu khách hàng nằm ngoài máy chủ J2EE thì thực hiện giao diện

từ xa Được chỉ định thông qua annotation @Remote, các tham sốcủa các phương thức được truyền bằng giá trị thông qua giao thứcRMI

o Nếu khách hàng cùng máy chủ J2EE thì thực hiện giao diện cục bộ.Được chỉ định thông qua innotation @Local, các tham số củaphương thức được truyền bằng tham chiếu từ khách hàng tới bean.Các local bean thường được sử dụng cho những bean dùng chungcủa các remote bean

o Có thể sử dụng cả giao diện cục bộ và ở xa cho cùng một bean

Hình 2-10 Session bean invoked by several client

Trang 34

Có thể chỉ định giao diện trong lớp bean, thường sử dụng trong khi muốn

sử dụng lại một giao diện di sản (legacy interface)

public interface ItemLocal {

public class ItemEJB implements ItemLocal, ItemRemote {……….}

 Lớp bean thực thi (bean Implement)

- Lớp phải được chú thích (annotated) là @Stateless, @Statefulhoặc là trong tập tin triển khai mô tả XML phải khai báo

- Phải thực thi các phương thức của giao diện

- Lớp phải là public và không được là asbtract hay final

- Phải có hàm khởi tạo constructor không có đối số

- Lớp không chứa phương thức finalize

Trang 35

- Phương thức thương mại (business method) không được bắt đầu làejb và không được là final hay static.

- Các đối số và giá trị trả về phải thỏa mãn kiểu của RMI

 Sử dụng session bean:

- @EJB:

Dùng để truy cập những local bean

Nếu session bean thực thi nhiều giao diện thì khách hàng phải chỉ rõ muốn tham chiếu tới giao diện nào

@EJB ItemEJB itemEJB; // Not possible

@EJB ItemLocal itemEJBLocal;

@EJB ItemRemote itemEJBRemote;

Trang 36

o <module-name>: Tên của module mà session bean được packagedtrong đó

o <bean-name>: Tên của session bean

o <fully-qualified-interface-name>: Tên đầy đủ của business interface, trong trường hợp no-interface view thì nó là tên đầy đủ của bean

Trang 37

Ví Dụ:

2.2.3.5

Triển khai mô tả (Deployment Descriptor)

Là một tập tin XML chỉ dẫn triển khai có thể thay thế cho annotation, mỗiannotation đều có một tag XML tương đương Nếu cả annotation và XML được sửdụng thì khai báo trong XML sẽ thay thế cho định nghĩa của annotation

Cấu trúc file: ejb-jar.xml

2.2.3.6

Environment Naming Context

Khi ứng dụng được triển khai trên những môi trường khác nhau Ví dụ: ứng dụngtính giá sách ra tiền của nước sở tại triển khai

Trang 38

Nhưng khi chuyển sang Việt Nam thì hệ số là 15,000 lúc đó hướng giải quyết tốt là khai

báo biến trong ejb-jar.xml

Khi đó trong class bean sẽ thực hiện

@Stateless

public class ItemConverterEJB {

public Item convertPrice(Item item) {

private Float changeRate;

public Item convertPrice(Item item) {

item.setPrice(item.getPrice() * changeRate);

item.setCurrency(currency);

return item;

}}

Trang 39

Các kiểu dữ liệu hổ trợ: String, Character, Byte, Short, Integer, Long, Boolean, Double, Float.

2.2.4 Callbacks

Trong vòng đời của bean khi thay đổi trạng thái từ trạng thái này sang trạngthái khác có thể được xử lý thông qua các phương thức callback đã đượcchú thích (annotated):

o @PostConstruct: Thường sử dụng để khởi tạo giá trị sau khi thể hiện(instance)của bean được tạo

o @PreDestroy: Thường sử dụng để giải phóng tài nguyên trước khi thểhiện của bean bị hủy Nếu là stateless bean thì nó thực hiện sauphương thức được chú thích @remove thực hiện

o @PrePassivate: Thực hiện các hành động như: đóng kết nối tới data,giải phóng tài nguyên Thực hiện trước khi bean được chuyển sangtrạng thái thụ động

o @PostActivate: Thực hiện các hành động như: khởi tạo lại tài nguyên,thực hiện sau khi thùng chứa EJB kích hoạt lại bean

Phương thức Callback:

o Không có tham số và trả về kiểu void

o Không được ném ngoại lệ là checked exception nhưng có thể némngoại lệ runtime exception

o Có thể là public, private, protected hay truy cập package nhưng khôngđược là static hay final

o Có thể annotated với nhiều annotation

o Có thể truy cập đến môi trường của bean(Environment NamingContext)

Trang 40

Interceptors

Là một phương pháp dùng để chặn đứng một cầu khẩn một phương thức thươnmại (business method), được thực hiện trước phương thức được khẩn gọi Nó rấthữu ích cho việc kiểm soát các nhà phát triển cho các hành động như cam kếtgiao dịch, kiểm tra an ninh, … Stateless session beans, Stateful session beans vàMessage driven beans có thể chứa interceptor

Hình 2-11 Container chặn lời gọi từ client và gọi thực hiện các interceptor

private Connection connection;

private List<Item> cartItems = new ArrayList<Item>();

Ngày đăng: 25/11/2014, 07:50

HÌNH ẢNH LIÊN QUAN

Hình 2-3 Minh họa Session bean tương tác với khách hàng Có 2 loại session bean là: Stateless và Stateful. - tìm hiểu j2ee 5, enterprise java bean 3.0, java persistence api 2.0. xây dựng website bán điện thoại di dộng
Hình 2 3 Minh họa Session bean tương tác với khách hàng Có 2 loại session bean là: Stateless và Stateful (Trang 22)
Hình 2-4 Stateless session bean pooling - tìm hiểu j2ee 5, enterprise java bean 3.0, java persistence api 2.0. xây dựng website bán điện thoại di dộng
Hình 2 4 Stateless session bean pooling (Trang 23)
Hình 2-5 Stateless life cycle - tìm hiểu j2ee 5, enterprise java bean 3.0, java persistence api 2.0. xây dựng website bán điện thoại di dộng
Hình 2 5 Stateless life cycle (Trang 24)
Hình 2-6 Quá trình chuyển bean sang trạng thái thụ động (Passived) - tìm hiểu j2ee 5, enterprise java bean 3.0, java persistence api 2.0. xây dựng website bán điện thoại di dộng
Hình 2 6 Quá trình chuyển bean sang trạng thái thụ động (Passived) (Trang 25)
Hình 2-7 Quá trình chuyển bean sang trạng thái hoạt động (Actived) - tìm hiểu j2ee 5, enterprise java bean 3.0, java persistence api 2.0. xây dựng website bán điện thoại di dộng
Hình 2 7 Quá trình chuyển bean sang trạng thái hoạt động (Actived) (Trang 26)
Hình 2-8 Stateful life cycle - tìm hiểu j2ee 5, enterprise java bean 3.0, java persistence api 2.0. xây dựng website bán điện thoại di dộng
Hình 2 8 Stateful life cycle (Trang 26)
Hình 2-10 Session bean invoked by several client - tìm hiểu j2ee 5, enterprise java bean 3.0, java persistence api 2.0. xây dựng website bán điện thoại di dộng
Hình 2 10 Session bean invoked by several client (Trang 28)
Hình 2-11 Container chặn lời gọi từ client và gọi thực hiện các interceptor Có 3 loại interceptor: - tìm hiểu j2ee 5, enterprise java bean 3.0, java persistence api 2.0. xây dựng website bán điện thoại di dộng
Hình 2 11 Container chặn lời gọi từ client và gọi thực hiện các interceptor Có 3 loại interceptor: (Trang 34)
Hình 2-14 Mô hình một giao tác sử dụng nhiều tài nguyên - tìm hiểu j2ee 5, enterprise java bean 3.0, java persistence api 2.0. xây dựng website bán điện thoại di dộng
Hình 2 14 Mô hình một giao tác sử dụng nhiều tài nguyên (Trang 39)
Hình 2-15 Quá trình thực hiện commit trên hai tài nguyên - tìm hiểu j2ee 5, enterprise java bean 3.0, java persistence api 2.0. xây dựng website bán điện thoại di dộng
Hình 2 15 Quá trình thực hiện commit trên hai tài nguyên (Trang 40)
Hình 2-16 giao tác XA phân tán - tìm hiểu j2ee 5, enterprise java bean 3.0, java persistence api 2.0. xây dựng website bán điện thoại di dộng
Hình 2 16 giao tác XA phân tán (Trang 40)
Hình 2-18  Mô hình vai trò và người ủy nhiệm - tìm hiểu j2ee 5, enterprise java bean 3.0, java persistence api 2.0. xây dựng website bán điện thoại di dộng
Hình 2 18 Mô hình vai trò và người ủy nhiệm (Trang 45)
Hình 2-21 JMS Architecture - tìm hiểu j2ee 5, enterprise java bean 3.0, java persistence api 2.0. xây dựng website bán điện thoại di dộng
Hình 2 21 JMS Architecture (Trang 50)
Hình 2-22 Publish/Subscribe  Destionation - tìm hiểu j2ee 5, enterprise java bean 3.0, java persistence api 2.0. xây dựng website bán điện thoại di dộng
Hình 2 22 Publish/Subscribe Destionation (Trang 51)
Hình 2-24 JMS API - tìm hiểu j2ee 5, enterprise java bean 3.0, java persistence api 2.0. xây dựng website bán điện thoại di dộng
Hình 2 24 JMS API (Trang 52)
Hình 2-27 Message Driven Bean life cycle - tìm hiểu j2ee 5, enterprise java bean 3.0, java persistence api 2.0. xây dựng website bán điện thoại di dộng
Hình 2 27 Message Driven Bean life cycle (Trang 59)
Bảng 2-5 MDB transaction với Session Bean transaction - tìm hiểu j2ee 5, enterprise java bean 3.0, java persistence api 2.0. xây dựng website bán điện thoại di dộng
Bảng 2 5 MDB transaction với Session Bean transaction (Trang 60)
Hình 2-28 Kiến trúc của JPA - tìm hiểu j2ee 5, enterprise java bean 3.0, java persistence api 2.0. xây dựng website bán điện thoại di dộng
Hình 2 28 Kiến trúc của JPA (Trang 62)
Bảng 2-7 EntityManager Interfaces - tìm hiểu j2ee 5, enterprise java bean 3.0, java persistence api 2.0. xây dựng website bán điện thoại di dộng
Bảng 2 7 EntityManager Interfaces (Trang 90)
Hình 2-30 Entity Life Cycle - tìm hiểu j2ee 5, enterprise java bean 3.0, java persistence api 2.0. xây dựng website bán điện thoại di dộng
Hình 2 30 Entity Life Cycle (Trang 93)
Hình 3-31 Giao diện trang chủ www.thegioididong.com - tìm hiểu j2ee 5, enterprise java bean 3.0, java persistence api 2.0. xây dựng website bán điện thoại di dộng
Hình 3 31 Giao diện trang chủ www.thegioididong.com (Trang 97)
Hình 3-32 Màn hình chi tiết sản phẩm www.thegioigdidong.com - tìm hiểu j2ee 5, enterprise java bean 3.0, java persistence api 2.0. xây dựng website bán điện thoại di dộng
Hình 3 32 Màn hình chi tiết sản phẩm www.thegioigdidong.com (Trang 98)
Hình 3-39 Màn hình đơn đặt hàng online www.thegioididong.com - tìm hiểu j2ee 5, enterprise java bean 3.0, java persistence api 2.0. xây dựng website bán điện thoại di dộng
Hình 3 39 Màn hình đơn đặt hàng online www.thegioididong.com (Trang 103)
Hình 3-38 Màn hình chọn hình thức thanh toán www.thegioididong.com - tìm hiểu j2ee 5, enterprise java bean 3.0, java persistence api 2.0. xây dựng website bán điện thoại di dộng
Hình 3 38 Màn hình chọn hình thức thanh toán www.thegioididong.com (Trang 103)
Hình 3-37 Màn hình đăng ký thông tin www.thegioididong.com - tìm hiểu j2ee 5, enterprise java bean 3.0, java persistence api 2.0. xây dựng website bán điện thoại di dộng
Hình 3 37 Màn hình đăng ký thông tin www.thegioididong.com (Trang 103)
Hình 3-40 Màn hình trang chủ www.mainguyen.com - tìm hiểu j2ee 5, enterprise java bean 3.0, java persistence api 2.0. xây dựng website bán điện thoại di dộng
Hình 3 40 Màn hình trang chủ www.mainguyen.com (Trang 105)
Hình 3-41 Màn hình chi tiết sản phẩm www.mainguyen.com Các chức năng chính của website: - tìm hiểu j2ee 5, enterprise java bean 3.0, java persistence api 2.0. xây dựng website bán điện thoại di dộng
Hình 3 41 Màn hình chi tiết sản phẩm www.mainguyen.com Các chức năng chính của website: (Trang 105)
Hình 3-42 Màn hình thông tin www.mainguyen.com - tìm hiểu j2ee 5, enterprise java bean 3.0, java persistence api 2.0. xây dựng website bán điện thoại di dộng
Hình 3 42 Màn hình thông tin www.mainguyen.com (Trang 106)
Hình 4-47 UseCase Diagram Chi tiết Usecase: - tìm hiểu j2ee 5, enterprise java bean 3.0, java persistence api 2.0. xây dựng website bán điện thoại di dộng
Hình 4 47 UseCase Diagram Chi tiết Usecase: (Trang 112)
Hinhanh varchar(200) Hình ảnh phụ kiện - tìm hiểu j2ee 5, enterprise java bean 3.0, java persistence api 2.0. xây dựng website bán điện thoại di dộng
inhanh varchar(200) Hình ảnh phụ kiện (Trang 134)

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w