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

Phát triển ứng dụng phần mềm trên máy chủ dựa trên công nghệ Java

97 396 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 97
Dung lượng 34,28 MB

Nội dung

Việc cung cấp cho những người phát triên ứna, dụne các phương tiện chuẩn để sử dụng các dịch vụ cần thiết cho mồi ứng dụng cùng với các cách thức chuẩn cho việc hỗ trợ các thiết bị khác

Trang 2

1.1 Các thách thức đối với việc phát triển ứng dụng mức xí nghiệp 6

1.1.1 Phát triền ứng dụng năng suất c a o 6

1.1.2 Khả năng tích hợp với các hệ thống đã có 7

1.1.3 Đáp ứne yêu cầu của ứng d ụ n g 8

1.1.4 Đảm bảo bảo m ậ t 8

1.2 J2EE - Nen tảng cho các ứne dụng mức xí nghiệp 9

1.3 Các mỏ hình ứng dụng với J2 E E 12

1.3.1 Mô hình ứng dụng đa mức 13

1.3.2 Mô hình ứng dụng J a v a 14

1.3.3 Mô hình ứng dụng W eb 15

1.3.4 Mô hình doanh nghiệp với doanh nghiệp 15

1.3.5 Ưu điểm của mô hình đa m ứ c 16

Chương 2: Bộ chứa EJB - Enterprise JavaB ean 18

2.1 Phần Logic nghiệp vụ - Business L o g ic 18

2.2 Các yêu cầu đối với đối tượng nghiệp v ụ 20

2.2.1 Duy trì trạng thái 20

2.2.2 Hoạt độns trên các dữ liệu chu ng 21

2.2.3 Tham gia vào các giao d ịc h 21

2.2.4 Phục vụ một lượng lớn người sử d ụ n g 22

2.2.5 Cung cấp khả năng truy nhập dữ liệu từ x a 22

2.2.6 Kiểm soát truy nhập 22

2.2.7 Khả năng sử dụng l ạ i 22

2.3 Tổng quan về E JB 23

2.3.1 Giao diện tại c h ỗ 24

2.3.2 Giao diện từ x a 24

2.3.3 Lớp E J B 25

2.4 Session B ean 25

2.4.1 Session Bean Trạng T h á i 26

2.4.2 Session Bean Phi Trạng Thái 26

2.4.3 Phát triển các Session B e an 27

2.4.4 Thực hiện gọi các Session B e a n 31

2.5 Entity B e a n 36

2.5.1 Các khái niệm cơ bản về lưu trừ bền vừng 36

2.5.2 Khái niệm Entity B e a n 38

2.5.3 Các file tạo thành Entity B ean 40

2.5.4 Các tính chất của Entity Bean 41

2.5.5 Phát triển và sử dụng Entity B e a n 43

2.5.6 Ngừ cảnh của Entity B e a n 46

2.5.7 Vòng đời của một Entity B e a n 48

Chương 3: Bộ chứa Web: Servlet và J S P 52

Trang 3

2

-3.1 S erv lets 52

3.1.1 Tong quan ve Servlet 52

3.1.2 Phát triển và sử dụng một Servlet 58

3.2 JSP 63

3.2.1 Sự cần thiết phải có J S P 63

3.2.2 Mô hình hoạt động của J S P 64

3.3 So sánh giữa Servlet và J S P 71

3.4 Sử dụng Servlet và JSP trong các ứng dụng 72

3.4.1 Các trường họp sử dụng Servlet 72

3.4.2 Các trường hợp sử dụng J S P 73

Chương 4: ứ n g dụng công nghệ J2EE trong phát triển các ứng dụng mức xí nghiệp 75

4.1 Kiến trúc của ứng dụng mức xí nghiệp với J2E E 75

4.1.1 Kiến trúc M V C 75

4.1.2 Các vấn đề đặt ra đổi với mô hình MVC trong J2 E E 78

4.1.3 Khuôn mẫu phát triển của J 2 E E 79

4.1.4 Khuôn mẫu Session Bao N g o à i 81

4.2 Ví dụ ứng dụng ngân hàng điện t ử 85

4.2.1 Mô tả ứng dụng 85

4.2.2 Mô hình hệ thống của ứng d ụ n g 90

Trang 4

B2B Business to Business

CORBA Common Object Request Broker Architecture

EJB Enterprise Java Bean

HTML HyperText Markup Language

HTTP HyperText Transfer Protocol

J2EE Java 2 Enterprise Edition

JDBC Java Database Connectivity

JMS Java Messaging Service

JNDI Java Naming and Directory Interface

JSP Java Server Page

JTA Java Transaction API

OQL Object Query Language

XML Extensible Markup Language

Trang 5

có thể truy nhập vào được ứng dụng này Có rất nhiều công nahệ khác nhau giúp phát triển các ứng dụng trên Internet Luận văn này xem xét một trong các công nghệ đang được phát triển rất mạnh mẽ trong thời gian gần đây, đó là công nghệ J2EE.

Nội dung của luận văn xem xét các công nghệ của J2EE và các kiến trúc ứng dụng mà dựa vào đó, các tổ chức, công ty có thế phát triển các ứng dụng của mình

về kết cấu của luận văn, ngoài lời nói đầu, kết luận và tài liệu tham khảo, luận văn được trình bày trong 4 chương:

• Chương 1: Công nghệ J2EE và các mô hình ứng dụng

Giới thiệu sơ lược về công nghệ J2EE và chỉ ra các công nghệ J2EE giúp giải quyết các vấn đề đặt ra đối với các ứng dụng mức xí nghiệp như thế nào

• Chương 2: Bộ chứa EJB: Enterprise Bean

Xem xét các thành phần EJB của kiến trúc J2EE, đề cập đến các loại EJB khác nhau và chỉ ra cách sử dụng hợp lý các loại thành phần này

• Chương 3: Bộ chứa Web: Servlet và JSP

Trình bày các thành phần trong bộ chứa Web, đó là JSP và Servlet: đề cập đến cách thức phát triển các thành phần này, sự khác biệt giữa chúng và làm thế nào để sử dụng các thành phần này một cách hợp lý

• Chương 4: ứ n g dụng công nghệ J2EE trong việc phát triển các ứng dụng mức xí nghiệp

Trang 6

triển ứng dụng trorm J2EE và việc sử dụng các khuôn mẫu này trong một ứng dụng mẫu.

Luận văn đã được hoàn thành với sự giúp đỡ tận tình của thầy giáo hướng dẫn PGS TS Đoàn Văn Ban, các thầy cô giáo Khoa công nghệ Trường Đại học quốc gia Hà nội cùng các bạn đồng nghiệp

Trong nội đung hạn chế của luận văn chắc chắn luận văn khó tránh khỏi những thiếu sót nhất định Em rất mong nhận được sự góp ý của các thầy cô giáo, các nhà chuyên môn và các đồng nghiệp để tiếp tục hoàn thiện bản luận văn

Em xin tràn trọng cám ơn

Trang 7

6

-C h ư ơ n g 1 : T ổ n g Q u a n

1.1 Các thách thức đối với việc phát triển ứng dụng mức xí nghiệp

Công nghệ thông tin ngày nay không chỉ dừng lại ở việc giúp các tổ chức, các doanh nghiệp hoạt động hiệu quả hơn, mà còn trực tiếp mang lại các lợi thế trong việc cạnh tranh Các tổ chức và các doanh nghiệp phải tìm mọi cách đê ứng dụng các công nghệ mới một cách hiệu quả nhất và nhanh nhất Chính vì vậy, việc phát triển ứng dụng mức xí nghiệp phải đáp ứng được các yêu cầu đề cập dưới đây

1.1.1 P h á t triể n ứ n g d ụ n g n ă n g s u ắ t c a o

Đẻ giảm bớt thời gian phát triển ứng dụng, việc tăng năng suất phát triển ứng dụng là một yếu tố không thể thiếu được Việc cung cấp cho những người phát triên ứna, dụne các phương tiện chuẩn để sử dụng các dịch vụ cần thiết cho mồi ứng dụng cùng với các cách thức chuẩn cho việc hỗ trợ các thiết bị khác nhau của người sử dụng sẽ góp phần tích cực trong việc tăng năng suất phát triển ứng dụng

Trước đây, việc không có một mô hình phát triển ứng dụng chung đă tạo ra nhữna; rào cản trong việc trao đổi hiệu quả các yêu cầu của ứng dụng giữa những người phát triển ứng dụng Kết quả là kiến trúc của ứng dụng trở nên quá phức tạp Hơn thể nữa, các yêu cầu về kỹ năng, trình độ để tích họp các công nghệ truyền thống với nhau là không rõ ràng Việc phân chia công việc của những nhóm người tham gia phát triển ứng dụng khác nhau không được tổ chức một cách khoa học Ví

dụ với công nghệ CGI việc phát triển đòi hỏi người lập trình vừa phải thực hiện cả việc tạo nội dung thông tin cũng như hình thức thể hiện thông tin của các trang Web động

Một yếu tố khác cũng làm tăng tính phức tạp trong quá trình phát triển ứng dụng

là việc lựa chọn loại thiết bị sẽ được hồ trợ của người sử dụng Rất nhiều ứng dụng cung cấp các thône tin động hay tĩnh cho các trình duyệt Web, một số ứng dụng khác đồng thời hồ trợ nhiều loại thiết bị khác nhau như các máy tính để bàn, điện thoại di động, Các thiết bị được lựa chọn này có thể được xác định ngay từ ban

Trang 8

hình phát triển ứng dụng phải đảm bảo hỗ trợ được nhiều loại thiết bị khác nhau, đông thời hạn chế tối đa các ảnh hưởng đến kiến trúc chung của ứng dụng cũng như các phân xử lý chính của ứng dụng đối với những sự thay đổi đó.

Tóm lại, để rút ngắn thời gian phát triển ứng dụng cũng như sự thay đổi của ứng dụng trong tương lai, việc tăng năng suất lao động của người phát triển ứng dụng đòi hỏi phải có một mô hình phát triển ứng dụng thống nhất cùng các phương tiện chuân cũng như các công cụ chuân cho việc pháp triển ứng dụng Hơn nữa phải có một cách thức phân chia công việc một các khoa học về vai trò, trình độ, kỹ năng của nhừne người phát triển ứng dụng để đảm bảo phát huy tối đa khả năng của họ

và tránh sự trùng lặp có thể xảv ra [4]

1.1.2 K h ả n ă n g tíc h h ợ p v ớ i cá c h ệ th ố n g đã c ó

Trong các hệ thống thông tin hiện nay, một khối lượng lớn dữ liệu đã được thu thập trong nhiều năm trước đây bởi các hệ thống hiện có của các tổ chức và các doanh nghiệp Đồng thời, rất nhiều chi phí, công sức đã đầu tư vào các ứng dụng trong các hệ thống này Một thách thức đặt ra cho những người phát triển là làm sao

có thể tái sử dụng các dữ liệu, ứng dụng cũng như các tài nguyên của các hệ thống này

Để đạt được mục tiêu này, người phát triển ứng dụng cần phải được cun? cấp các công cụ, các phương thức chuẩn cho phép sử dụng các dịch vụ mà các hệ thống hiện có này cung cấp, ví dụ như các công cụ truy nhập các dịch vụ của các cơ sở dữ liệu, các hệ thống thư điện tử, các hệ thống xử lý giao dịch, Những người phát triển ứng dụng còn đòi hỏi các hệ thống này phải cung cấp các dịch vụ một cách thống nhất để mô hinh phát trien ứng dụng mới không cần phải mở rộng việc tích hợp với các hệ thống khác nhau trong toàn bộ tổ chức, doanh nghiệp [4]

Trang 9

để đáp ứng các yêu cầu này càng dễ dàng và được tự động hoá càng nhiều thì càng đem lại hiệu quả cao hơn cho việc ứng dụng công nghệ thông tin.

Đe có thể mở rộng được một cách dễ dàng và hiệu quả, các hệ thống phải được thiết kế để có thể tương tác với nhiều người sử dụng đồng thời Các hệ thống này đòi hỏi phải có cơ chế quản lý hiệu quả các tài nguyên và các dịch vụ của hệ thống như các kết nối tới cơ sở dữ liệu, các giao dịch, Các ứng dụng này cũng phải có khả năng chạy trên bất kỳ máy chủ nào, đáp ứng được các đòi hỏi về khả năng xử lý của ứng dụng Đe đảm bảo tính sẵn sàng ở mức cao nhất, các hệ thống này phải có khả năng sử dụng các tính năng như tự động cân bằng tải, tự động chuyển sang máy chủ khác khi có sự cố mà không cần bất cứ can thiệp nào của người phát triển ứng dụng [4]

1.1.4 Đ ả m b ả o b ả o m ậ t

Hơn bao giờ hết, việc bảo mật các hệ thống thông tin được các nhà quản lý công nghệ thông tin quan tâm đến như hiện nay Việc bảo vệ các hệ thống thông tin có tính chất sống còn đối với mỗi tổ chức, mỗi doanh nghiệp Các tổ chức, các doanh nghiệp thu được càng nhiều lợi ích do công nghệ thông tin mang lại bao nhiêu thì

họ càng có thể bị nhiều thiệt hại khi các hệ thống này bị phá huỷ bấy nhiêu Trong các hệ thống thông tin truyền thống trước đây, người quản trị hệ thống có khả năng kiếm soát hệ thống khá cao do họ có khả năng kiểm soát cả máy chủ cũng như các thiết bị của người sử dụng Nhưng hiện nay, với sự phát triển của Internet, các tài nguyên của hệ thống được sử dụng trong môi trường ít được bảo vệ hơn, người quản trị không có khả năng quản lý toàn bộ hệ thống nữa mà họ chỉ có khả năng

Trang 10

đối với các hệ thống thông tin hiện nay [4]

1.2 J2EE - Nền tảng cho các ứng dụng mức xí nghiệp

Công nghệ J2EE, do hãng Sun xây dựng, nhằm tạo ra một mô hình phát triển các ứng dụng phân mềm trên các máy chủ dựa trên công nghệ Java Công nghệ J2EE là một chuẩn thống nhất cho việc phát triển và triển khai các ứnơ dụng mức xí nghiệp Chỉ trong hai năm đầu, công nghệ J2EE đã thu được rất nhiều thành công trên thị trường Thành công này có được nhờ việc chuẩn J2EE được phát triển một cách công khai Mọi cá nhân, tổ chức đều có thể tham gia vào việc xây dựng chuẩn này Với việc có rất nhiều nhà sản xuất lớn trên thế giới cùng tham gia vào việc phát triển này, đã giúp cho J2EE có thể đáp ứng được nhiều nhất các đòi hỏi khác nhau đặt ra với các ứng dụng mức xí nghiệp Công nghệ J2EE giúp giải quyết một cách hiệu quả các thách thức đặt ra đối với các ứng dụng mức xí nghiệp

Công nghệ J2EE cung cấp một mô hình phát triển đơn giản hơn dựa trên các thành phần Việc phát triển ứng dụng dựa trên các thành phần đảm bảo việc tăng năng suất phát triển ứng dụng bằng nhiều cách khác nhau như:

• Rút ngắn thới gian phát triển các thành phần: Các thành phần trong J2EE

có thể được phát triển bởi các công cụ đồ hoạ, thậm chí có thể được tự động tạo ra bởi các công cụ Vì vậy, thời gian phát triển các thành phần được rút ngắn đáng kể Hơn nữa, người phát triển có thể sử dụng ngay các thành phần

có sằn trên thị trường trong việc phát triển ứng dụng Vì vậy, không tốn thời gian viết lại các thành phần này

• Tạo dựng các chức năng khi triển khai: Sự tương tác giữa các thành phần

trong J2EE có thể được xác định muộn hơn vào thời điểm triển khai Vì vậy,

có thể tạo dựng các chức năng khác nhau của ứng dụng tại thời điếm triểnkhai thay vì phải xác định ngay khi phát triển ứng dụng

Trang 11

1 0

-• Phân chia công việc: Việc phát triển dựa trên thành phần cho phép phân

chia việc phát triển ứng dụng thành các phần việc khác nhau cho từne neười phát triển, đảm bảo cho người phát triển có thể phát huy được tối đa khả năng của mình J2EE định nghĩa các nhóm người khác nhau tham gia vào việc phát triển ứng dụns như người cung cấp các thành phần, người kết gắn các thành phân và người triên khai cùng với các vai trò của họ

Đe tích hợp với các hệ thống khác một cách dễ dàng, chuẩn J2EE cùng với chuẩn J2SE (Java 2 Standard Edition) định nghĩa một số chuẩn API cho việc trao đổi dừ liệu với các hệ thống thông tin hiện có Việc truy nhập tới các hệ thống hiện

có này được thực hiện thông qua:

• JDBC (Java Database Connectivity) được sử dụng trong việc truy nhập dừ liệu của các cơ sở dữ liệu quan hệ cũng như các cơ sở dừ liệu khác

• JTA (Java Transaction API) cho phép quản lý và điều phối các giao dịch giữa các hệ thống khác nhau

• JNDI (Java Naming and Directory Interface) cung cap các API chuân cho việc truy nhập các dịch vụ định danh và thư mục

• JMS (Java Messaging Service) cung cấp các API chuẩn cho việc gửi và nhận các thông điệp của các hệ thống xử lý thông điệp

• JavaMail cung cấp các API cho việc nhận và gửi thư điện tử

• Java IDL cung cấp các cơ chế cho việc gọi các dịch vụ CORBA

• Các API cho XML cung cấp khả năng tích hợp với các hệ thống hiện có và cho phép triển khai các dịch vụ Web

Công nghệ J2EE không những tạo ra các chuẩn buộc các sản phẩm trên thị trường phải tuân theo, mà J2EE còn có các công cụ giúp kiêm tra việc tuân theo các chuẩn này Chính vì vậy, tính thống nhất của các sản phẩm dựa trên J2EE là rất cao Tính thống nhất này đảm bảo cho việc:

Trang 12

• Tự do lựa chọn phần mềm cho máy chủ: Các phần mềm máy chủ hỗ trợ

J2EE được cung cấp từ nhiều nhà sản xuất khác nhau cho rât nhiều loại máy chù khác nhau, nhiều loại hệ điều hành khác nhau Các phần mềm này có thế

có các thuộc tính khác nhau về độ sẵn sàng, khả năne mở rộng, chi phí triển khai và cài đặt, Nhưng dù có khác nhau như thế nào đi nữa, nếu các sản phẩm này cùng tuân theo J2EE thi đều đảm bảo rằng một ứng dụng J2EE có thể chạy trên phần mềm này thì cũng có thể chạy trên phần mềm khác mà không cần sửa đổi hay dịch lại

• Tự do lựa chọn các công cụ: Chuẩn J2EE cũng định nghĩa cả các chuẩn cho

các công cụ thiết kế và triển khai Tương tự như đối với các phần mềm cho máy chủ, chuẩn J2EE cũng đảm bảo tính tương thích giữa các công cụ này

Vì vậy, những người phát triển ứng dụng có thể lựa chọn các công cụ phù hợp nhất với nhiệm vụ của mình

• Thị trường cho các thành phần: Phát triển ứng dụng dựa trên các thành

phần tạo đã ra khả năng xây dựng một số thành phần chuẩn có thể được sử dụng trong nhiều ứng dụng khác nhau Các thành phần này được cung câp trên thị trường tạo thành một thị trường cho các thành phần Người phát triển ứng dụng có thể lựa chọn các thành phần này cho việc phát triển ứng dụng của mình giúp giảm ngắn thời gian phát triển ứne dụng

Tóm lại, với việc đưa ra các chuẩn cho các phần mềm máy chủ, các công cụ phát triển và triển khai, các thành phần của ứng dụng cùng với các công cụ giúp kiểm tra việc tuân theo các chuẩn này đã đảm bảo cho việc tự do lựa chọn của các

tô chức và các doanh nghiệp

Bên cạnh đó, chuẩn J2EE cũng định nghĩa một mô hình bảo mật thống nhất cho các ứng dụng J2EE Người phát triển các thành phần có thể định nghĩa mức độ bảo mật cần thiết cho các thành phần tới từng phương thức của các thành phần này Hơn thế nữa, J2EE cũng cung cấp các API cho phép kiểm soát bảo mật của các thành phần Cơ chế này cho phép xây dựng hệ thống bảo mật theo vai trò của người sử

Trang 13

• Cung cấp mô hình phát triển và triển khai ứng dụng dựa trên các thành phần.

• Tự do lựa chọn các thành phần, công cụ và phần mềm máy chủ do tích tương thích cao của thành tố này

• Các công cụ và các API cho phép tích hợp với các hệ thống khác

• Mô hình bảo mật linh hoạt và thống nhất

Chính vì vậy, chỉ trong một thời gian phát triển rất ngắn, J2EE đã được lựa chọn

để trở thành một nền tảng cho việc phát triển các ứng dụng mức xí nghiệp [4]

1.3 Các mô hình ứng dụng với J2EE

J2EE cho phép người phát triển ứng dụng có thể lựa chọn nhiều mô hình ứng dụng khác nhau Khả năng này cho phép người phát triển ứng dụng có thể lựa chọn được mô hình phù hợp nhất cho ứng dụng của mình

Mô hình phát triển ứng dụng tổng quan của J2EE được thể hiện trong hình vẽ dưới đây Các phần tiếp sẽ xem xét một số mô hình thường được sử dụng phổ biến với công nghệ J2EE

Trang 14

Bộ chửa WebJSP &

Trang 15

1 4

-EJB sẽ thực hiện việc khai thác các dừ liệu từ các cơ sở dữ liệu để thực hiện các yêu cầu của các thành phần trong bộ chứa Web Như vậy, trone mô hình này, phần hiền thị và dừ liệu của ứng dụng được tách rời nhau Đặc tính này đảm bảo việc mở rộng khả năng xử lý của ứng dụng được thực hiện rất dễ dàng [4]

1.3.2 M ô h ìn h ứ n g d ụ n g J a v a

Hình 1-3: Mô hình ứng dụng Java

Trong mô hình ứng dụng Java, các ứng dụng có thể là một trong 3 dạng sau:

• Các ứnu dụng Java thực hiện việc xử lý các thông tin động dược tạo ra bởi các thành phần trong bộ chứa Web Phần xử lý của ứng dụng được thực hiện bởi EJB và EJB trao đổi dữ liệu với cơ sở dữ liệu Trong một sổ trường họp, phần xử lý của ứng dụng có thể được thực hiện bởi bộ chứa Web và bộ chứa này truy nhập trực tiếp vào cơ sở dữ liệu

• EJB client: Trong trường hợp này, các ứng dụng Java tương tác trực tiếp với

bộ chứa EJB và các thành phần EJB Tương tác này được thực hiện với giao thức RMI-IIOP Các thành phần EJB sẽ truy nhập tới các dữ liệu trong cơ sở

dừ liệu thông qua giao thức JDBC

• Các ứne dụng Java truy nhập trực tiếp vào cơ sở dữ liệu thông qua JDBC Trong trường họp này toàn bộ phần biểu diễn và xử lv của ứng dụng đều được thực hiện tại máy trạm Mô hình này chính là mô hình khách chủ truyền thống Việc sử dụng mô hình này cũng đi kèm với các khó khăn

Trang 16

thường gặp phải đổi với mô hình khách chủ là việc phân phối các ứng dụng tới người sử dụng, bảo trì và khả năng mở rộng của hệ thống [4]

1.3.4 M ô h ìn h d o a n h n g h iệ p v ớ i d o a n h n g h iệ p

H ì n h 1-5: Mô h ì n h d o a n h n g h i ệ p v ớ i d o a n h n g h i ệ p

Trang 17

-

16-Mô hình doanh nghiệp với doanh nghiệp tập trung vào việc trao đổi ngang hàng giữa các bộ chứa Web và các bộ chứa EJB Đây là mô hình được sử dụng cho việc trao đổi dừ liệu giữa các doanh nghiệp với nhau Việc trao đổi này được thực hiện thông qua kết nối giữa hai bộ chứa Web Đây là mô hình rất thích hợp cho các hoạt độne thương mại eiữa các doanh nghiệp với nhau trên Internet

Việc sử dụng kết nối giữa hai bộ chứa EJB thường đòi hỏi các kết nối chặt chẽ hơn Vì vậy, mô hình này thường được sử dụng cho trao đổi dữ liệu giữa các bộ phận trons một doanh nghiệp Với việc hồ trợ JMS và các thành phần xử lý thông điệp J2EE cho phép các kết nối này có tính linh động cao hơn, giúp cho việc trao đổi dữ liệu trong nội bộ mỗi tổ chức dễ thực hiện và cũng dễ thay đổi hơn khi cần thiết [4]

1.3.5 ư u đ iể m c ủ a m ô h ìn h đa m ứ c

Mô hinh đa mức với đầy đủ cả hai bộ chứa Web và EJB đem có nhiều ưu điểm như:

• Dễ dàng thay đổi hình thức thể hiện và giao diện của ứng dụng

• Việc phân chia giữa phần biểu diễn và phần xử lý của ứng dụng giúp tăng tính mô đun hóa của ứng dụng hơn Việc phân chia này sẽ giúp việc bảo trì các ứng dụng trở nên đơn giản hơn

• Cho phép phân chia công việc phát triển ứng dụng giữa những người phát triển ứng dụng khác nhau

• Cho phép phát triển ứng dụng với các thành phần có sẵn trên thị trường mà vẫn không ảnh hưởng tới giao diện của ứng dụng

• Cho phép triển khai các thành phần khác nhau trên nhiều máy chủ khác nhau, giúp dễ dàng mở rộng khả năng xử lý của toàn bộ hệ thống

• Cho phép hỗ trợ đồng thời nhiều loại thiết bị Hơn thế nữa việc hỗ trợ thêm các thiết bị mới có thể được thực hiện hết sức dễ dàng

Trang 18

Trong mô hình đa mức này, có tất cả 4 mức khác nhau là các trình duyệt, bộ chứa Web, bộ chứa EJB và cơ sở dừ liệu Tuy vậy, nhiều khi mô hình này vẫn được gọi là mô hình 3 mức do bộ chửa Web và bộ chứa EJB cùng được thực hiện trên J2EE Việc xây dựng các ứng dụns với mô hình này được thực hiện thông qua việc phát triển các thành phần trong bộ chứa Web và các thành phần cho bộ chứa EJB.

Do nội dung có hạn của luận văn, phần sau chỉ đề cập chủ yếu đến là mô hình đa mức trên công nghệ J2EE [4]

Trang 19

18

-C h ư ơ n g 2 : B ộ c h ứ a E J B - E n t e r p r i s e

J a v a B e a nTrong các ứng dụng J2EE theo mô hình đa mức, mức EJB thực hiện logic của ứna dụng và các dịch vụ hệ thống như dịch vụ quản lý giao dịch, điều khiển các truy nhập đồng thời và bảo mật Với mô hình này, các thành phần EJB sẽ thực hiện việc kết nối giữa các thành phần hiển thị được thực hiện trone, bộ chứa Web và dữ liệu của ứng dụng Công nghệ EJB giúp xây dựng các ứn£ dụng dựa trên các thành phần phân tán Yeu tố này cho phép người phát triển chỉ cần tập trung vào giải quyết các vấn đề đặt ra với ứng dụng Công việc xử lý các dịch vụ hệ thống hết sức phức tạp sẽ được thực hiện bởi các phần mem J2EE

Chương này trước hết trình bày các vấn đề đặt ra đối với người phát triển ứng dụng khi phải triển khai phần logic của ứng dụng Sau đó, sẽ trình bày các thành phần EJB giúp giải quyết các vấn đề này như thế nào

2.1 Phần Logic nghiệp vụ - Business Logic

Phần Logic nghiệp vụ của ứng dụng theo nghĩa rộng là một tập hợp các nguyên tắc để quản lý một chức năng nghiệp vụ nào đó của ứng dụng Cách tiếp cận hướng đối tượng cho phép người phát triển ứng dụng phân chia các chức năng nghiệp vụ thành các đổi tượng nghiệp vụ Cũng giốna như các đổi tượng khác, các đối tượng nghiệp vụ có cả các thuộc tính và các phương thức Ví dụ, đối tượng nghiệp vụ Nhân viên có các thuộc tính là Tên, Địa chỉ, Đối tượng này cũng có các phương thức cho phép thực hiện việc gan với một phòng ban hay tăng lương theo một tỷ lệ nào đó Để thực hiện các chức năng của ứng dụng, cần phải xây dựng được các phương thức của các đối tượng nghiệp vụ cũng như việc tương tác giữa các đôi tượng để tạo ra các chức năng cần thiết của ứng dụng Các quy luật kinh doanh giúp xác định được cấu trúc và các phương thức của các đối tượng nghiệp vụ cùng với các tiền điều kiện và hậu điều kiện cần phải đạt được khi các đối tượng nghiệp vụ

Trang 20

thực hiện các phương thức của nó Tất cà các quy luật này được hiểu là Logic nghiệp vụ.

Ví dụ sau sẽ xem xét các đối tượng: Đối tượng Danh mục cho biết các hàng hóa được cung cấp, đối tượns, Giỏ hàng lưu tạm thời các hàng hóa được khách hàng lựa chọn, đối tượng Khách hàng lưu các thông tin về khách hàng và đối tượng Đơn hàng dùng để theo dòi các đơn hàng đã được đặt Khi đó đối tượng Khảcli hàng

phải thỏa mãn các ràng buộc sau:

1 Mồi khách hàng tương ứng với một đối tượnẹ Khách hàng duy nhất

2 Mồi đối tượng Khách hàng phải có thông tin liên lạc của khách hàng như tên, địa chỉ, thư điện tử

3 Khách hàng phải có khả năng tạo đối tượng Khách hàng mới

4 Khách hàng có khả năng cập nhập các thông tin liên lạc của họ

5 Khách hàng có khả năng truy nhập các thông tin của dối tượng Khách hàng của họ

6 Mỗi khách hàng chỉ có thể truy nhập và cập nhập các thông tin của đổi tượng

Trang 21

2 0

-Các ràng buộc 3, 4, 5 xác định phương thức hoạt động của các đối tượng Khách hàng. Ví dụ, các đổi tượng này phải có các phương thức để tạo đối tượng Khách hàng mới, cập nhập thông tin và lấy thông tin của các đối tượng này

Các ràng buộc còn lại xác định các điều kiện phải luôn luôn được đảm bảo khi các đối tượng thực hiện các phương thức của mình Trong ví dụ trên, khi một khách hàng muốn lẩy hay cập nhập các thông tin của một đối tượng Khách hàng thì người khách hàng này phải được quyền thực hiện việc đó cũng như các cơ chế truy nhập đồng thời của nhiều khách hàng khác nhau Tương tự như vậy, các đối tượng khác trong hệ thống cũng phải tuân thủ luật khác nhau của hệ thống

Tuy mỗi đối tượng nghiệp vụ có cấu trúc và các phương thức hoạt động riêng biệt phụ thuộc vào vấn đề cần giải quyết, nhưng có rất nhiều dịch vụ mà các dối tượng này cung cấp lại tuân theo các khuôn mẫu nhất định khá phổ biến trong thực

tế Phần tiếp theo sẽ xem xét các dịch vụ chung này hay các yêu cầu chung đối với các đối tượng nghiệp vụ [4]

2.2 Các yêu cầu đối với đối tượng nghiệp vụ

2.2.1 D u y trì trạ n g th á i

Các đổi tượng nghiệp vụ thường cần phải duy trì trạng thái của nó được thể hiện bởi giá của các thuộc tính của nó giữa các lần thực hiện các phương thức của các đối tượng nghiệp vụ Các trạng thái này có thể là tạm thời tức chỉ tồn tại trong khi thực hiện của ứng dụng cũng như ở trạng thái bền vững tức được lưu trữ trên các thiết bị lưu trữ

Ví dụ như đối tượng Giỏ hàng. Trạng thái của đổi tượng Giỏ hàng cho biết các hàng hóa được mua và sổ lượng của mỗi loại hàng hóa này Tại thời điểm ban đầu,

Giỏ hàng là rỗng và trạng thái của Giỏ hàng thay đổi với việc lựa chọn các hàng hóa và số lượng của loại hàng hóa đó được khách hàng đưa vào Giỏ hàng. Tương tự như vậy, nếu khách hàng xóa đi một loại hàng hóa nào đó thì Giỏ hàng phải phản ánh được sự thay đổi này Khi khách hàng thoát ra khỏi ứns, dụng này thì Giỏ hàng

Trang 22

phải được khởi tạo lại về trạng thái ban đầu Như vậy, đối với đối tượng này, trạng thái của nó được khởi tạo thay đổi và mất đi theo sự tương tác với người sử dụng Trong trường họp này, các đối tượng này duy trì trạng thái tạm thời.

Ví dụ khác là đối tượng Tài khoản. Khi người sử dụng tạo ra một tài khoản, trạng thái của Tài khoản này phải được lưu trừ bền vững để khi người sử dụng thoát khỏi ứng dụng và sau đó quay trở lại ứng dụng thì trạng thái của đổi tượng này vẫn phải được thể hiện lại cho người sử dụng Như vậy, để có thể thực hiện được, trạng thái của các đối tượng này phải được lưu trữ bền vừng trên các thiết bị lưu trừ, ví dụ như trên các cơ sở dữ liệu

Tóm lại, nhiều đối tượng nghiệp vụ cần phải có khả năng duy trì trạns thái của

nó Trạng thái của đối tượng nghiệp vụ có thể là trạnạ thái tạm thời hay trạng thái lưu trữ bền vững [4]

2 2 2 H o ạ t đ ộ n g trê n c á c d ữ liệ u c h u n g

Trong nhiều trường hợp, các đối tượng khác nhau cùng phải hoạt động trên cùng một dữ liệu chung Ví dụ, nhiều người sử dụng đồng thời truy nhập đến cùng dữ liệu của cùng một tài khoản Trong các trường họp này, các đổi tượng nghiệp vụ cần có một cơ chế kiểm soát các truy nhập đồng thời ở các mức độ truy nhập khác nhau [4]

2 2 3 T h a m g ia và o c á c g ia o d ịc h

Các giao dịch là một tập các hoạt động phải được thực hiện như một đơn thể Nếu bất cứ một hoạt động nào trong một giao dịch bị hủy bỏ thì toàn bộ các hoạt động trong giao dịch đó phải được hủy bỏ và quay lại trạng thái ban đầu (roll back) Nếu mọi hoạt động trong giao dịch được thực hiện thì coi là giao dịch đó được thực hiện (commit)

Trong một số giao dịch, các hoạt động được thực hiện trên dữ liệu được đặt tại nhiều địa điểm khác nhau Các giao dịch này được gọi là các giao dịch phân tán

Trang 23

sô lượng người sử dụng tãng lên [4]

2.2.5 C u n g c ấ p k h ả n ă n g tr u y n h ậ p d ữ liệ u t ừ x a

Người sử dụng có thế truy nhập tới các dịch vụ cung cấp bởi các đối tượng nghiệp vụ từ xa Như vậy, các đối tượng nghiệp vụ phải có khả năng cung cấp các dịch vụ này qua mạng Điều này cũng có nghTa là các đổi tượng nghiệp vụ là một phần của hệ thống tính toán phân tán [4]

2.2.6 K iể m s o á t tr u y n h ậ p

Các dịch vụ cung cấp bởi các đối tượng nghiệp vụ thường chỉ được cung cấp cho những người sử dụng có thẩm quyền Vì vậy, các đối tượng nghiệp vụ cần có một cơ chế dịnh danh và xác định quyền truy nhập của người sử dụng [4]

2.2.7 K h ả n ă n g s ử d ụ n g lạ i

Một trong các yêu cầu chung ỉà các đối tượng nghiệp vụ phải có khả năng sử dụng lại trong các thành phần khác của ứng dụng hay trong các ứng dụng khác Để các đối tượng này có thể sử dụng lại trong các thành phần khác của ứng dụng cũng như trong các ứng dụng khác thì các đối tượng này phải được phát triển tuân theo những chuẩn nhất định và phải được thực hiện trong các môi trường hỗ trợ các

Trang 24

chuẩn này Nếu các chuẩn này được nhiều nhà cung cấp tuân theo thì các đối tượng tuân theo các chuẩn này sẽ có nhiều hơn Khi đó, thời gian phát triển ứng dụng có thể giảm bớt nhờ việc sử dụng các đối tượng được cung cấp sẵn trên thị trường [4]

2.3 Tổng quan về EJB

Như phần trên đã đề cập đối với các yêu cầu chung đối với các đối tượng nghiệp

vụ, các vêu cầu đó có thể kể đến như khả năng hỗ trợ các giao dịch, bảo mật, truy nhập từ xa, duy trì trạng thái Các dịch vụ này khá phức tạp và nằm ngoài phạm vi của vấn đề cần giải quyết Để đơn giản hóa việc phát triển ứng dụng, các ứng dụng mức xí nghiệp cần một chuẩn cho việc phát triển ứng dụng trên máy chủ

Đặc tả EJB trong J2EE cung cấp một chuẩn cho việc phát triển các ứng dụng trên máy chủ Chuẩn này giúp đơn giản hóa quá trình phát triển nhờ việc phát triển các ứng dụng dựa trên các thành phần phân tán Trong mô hình này, các chuyên gia

hệ thống cune cấp các dịch vụ nền tảng của hệ thống thông qua việc phát triển và cung cấp các bộ chứa EJB Khi đó, các chuyên gia ứng dụng cung cấp các thành phần chuyên giải quyết các vấn đề nghiệp vụ mà không cần phải quan tâm đến các dịch vụ hệ thốne

EJB là các thành phần phần mềm trên m áy chủ Các thành phần này có thể được triển khai trên môi trường phân tán đa mức Trong mô hình này, người sử dụng sẽ xây dựng các thành phần EJB để giải quyết các vẩn đề nghiệp vụ

Các thành phần EJB được chia thành hai loại là Session Bean và Entity Bean Phần sau đề cập chi tiết về các loại thành phần EJB này

Trong đặc tả EJB, các thành phần EJB được cấu thành bởi hai bộ giao diện là giao diện tại chồ (home interface) và giao diện từ xa (remote interface), và lóp EJB Mọi truy nhập tới đối tượng EJB được thực hiện thông qua một trong hai giao diện của thành phần EJB [4]

Trang 25

2 4

-2.3.1 G ia o d iệ n tạ i c h ỗ

Giao diện tại chỗ cung cấp các phương thức để tạo lập và xóa bỏ các EJB Giao diện này phải thừa kế từ javax.EJB.EJBHome Giao diện tại chỗ của thành phần EJB cho phép các thực hiện:

• Tạo biến thể EJB mới

• Xóa bỏ một biến thể EJB

• Lấy các thông tin mô tả của thành phần EJB thông qua giao diện javax.EJB.EJBMetaData Các thông tin này cho phép các công cụ kết ghép ứng dụng có thể lấy được các thông tin mô tả này để thực hiện việc triển khai các EJB

• Lấy handle của giao diện tại chỗ cho phép thực hiện chuyển các đối tượngEJB cần lưu trữ bền vừng ra các thiết bị lưu trữ và thực hiện việc tạo dựngcác đôi tượng EJB dựa trên các dữ liệu được lưu trữ

• Tìm kiếm đối tượng EJB thông qua khóa của nó.[4]

2.3.2 G ia o d iệ n t ừ x a

Giao diện từ xa tạo cung cấp các phương thức công cộng cho phép truy nhập tới các lớp EJB Giao diện từ xa thừa kể từ javax.EJB.EJBObject Giao diện từ xa cho phép EJB client có thể thực hiện:

• Lấy giao diện tại chồ

• Xóa bỏ biển thể của EJB

• Lấy handle của biến thể EJB

• Lấy khóa chính của EJB nếu có.[4]

Trang 26

Lớp EJB là phần thứ hai của thành phần EJB Lớp EJB thực hiện việc cài đặt các phương thức cần thiết để giải quyết các vấn đề nghiệp vụ cần xử lý Các phương thức này được gọi thông qua phương thức tương ứng trona giao diện từ xa Lớp EJB phải thực hiện việc cài đặt giao diện javax.EJB.EntityBean hoặc javax.EJB.SessionBean.

Ngoài các phương thức thône thường, lớp EJB và giao diện từ xa còn chia sẻ việc thực hiện hai loại phương thức đặc biệt là các phương thức tạo và các phương thức tìm kiếm Các phương thực tạo cho phép thực hiện các yêu cầu đặc biệt khi tạo

ra các đối tượng này và các phương thức tìm kiếm tạo ra cơ chế tìm kiếm các biển thể EJB

Đối với mỗi phương thức createf) trong giao diện tại chồ phải có một phương thức ejbCreate() tương ứng được cài đặt trong lớp EJB Mỗi phương thức fin d e r0

trong giao diện tại chồ phải có một phương thức ejbFindBy() tương ứng được cài đặt trong lớp EJB ỉ lơn thế nữa các lớp EJB phải thực hiện việc cài đặt cho tất cả các phương thức trong giao diện mà nó dựa trên đó [4]

2.4 Session Bean

Session Bean dùng để thể hiện các công việc được thực hiện khi các client gọi đến nó Session Bean dùng để triển khai Logic nghiệp vụ, các luật nghiệp vụ và các dòng công việc Ví dụ, các Session Bean được dùng để tính giá, cập nhập đơn đặt hàng, nén dừ liệu, các tính toán phức tạp, Đây là các thành phần có thể sử dụng lại chứa Logic của các qui trình nghiệp vụ

Các biến thể của Session Bean chỉ có thể được sử dụng bởi một người sử dụng lại một thời điểm, nó khône thể được chia sẻ bởi nhiều người sử dụng

Session Bean được gọi như vậy bởi nó chỉ tồn tại trong một phiên giao dịch của người sử dụng gọi đến nó Ví dụ, khi ứng dụng máy khách gọi một Session Bean để thực hiện việc đưa một mặt hàng vào đơn hàng, bộ chứa EJB có nhiệm vụ tạo ra

2 3 3 L ớ p E J B

Trang 27

2 6

-biến thể của thành phần Session Bean tương ứng Khi máy khách cắt đường kết nổi,

bộ chứa EJB sẽ thực hiện việc hủy bỏ biến thể này

Các bộ chứa EJB có trách nhiệm quản lý vòng đời của các Session Bean Người

sử dụng không thực hiện việc khởi tạo các Session Bean Công việc này do bộ chứa EJB tự động thực hiện Tương tự như vậy, bộ chửa EJB cũng tự động thực hiện việc hủy bỏ các Session Bean Chính nhờ khả năng này mà bộ chứa EJB có thể thực hiện việc tập trung tại và cho phép tái sử dụng các Session Bean

Có hai loại Session Bean là các Session Bean Trạng Thái và các Session Bean Phi Trạng Thái [2]

2.4.1 S e s s io n B e a n T rạ n g T hái

Như đã đề cập ở trên, các Session Bean dùng để thực hiện các tiến trình nghiệp

vụ Một số tiến trình được thực hiện bởi một phương thức duy nhất Nhưng có nhừng tiến trình đòi hỏi phải được thực hiện Ihông qua một chuỗi các phươna thức

Ví dụ, việc quản lý Giỏ hàng trong thương mại diện tử Người sừ dụng có thể thực hiện đưa vào đây nhiều mặt hàng khác nhau Như vậy, trạng thái của Giỏ hàng được duy trì qua nhiều phương thức khác nhau theo yêu cầu của người sử dụng

Các Session Bean Trạng Thái dùng để thực hiện các tiến trình nghiệp vụ được thực hiện qua nhiều lời gọi phương thức khác nhau hay trong một giao dịch Để thực hiện được yêu cầu này, đòi hỏi các Session Bean phải có khả năng duy trì trạng thái của nó thay cho người sử dụng Nếu trạng thái của nó thay đổi bởi một phương thức nào đó thì trạng thái này sẽ được thấy trong lần gọi phương thức tiếp theo [2]

2.4.2 S e s s io n B e a n P h i T rạ n g T h á i

Một số tiến trình nghiệp vụ có thể thực hiện với chỉ một lời gọi phương thức Các tiến trình này không đòi hỏi phải duy trì trạng thái giữa các lời gọi phương thức Các Session Bean Phi Trạng Thái được dùng để thực hiện các tiến trình này

Ví dụ các Session Bean Phi Trạng Thái có thể được dùng để thực hiện các tính toán

Trang 28

phức tạp, nén dừ liệu Các Session Bean này không cần phải duy trì trạng thái của

Các Session Bean Phi Trạng Thái sau khi thực hiện xong một yêu cầu của mộtneười sử dụng nào đó lập tức có thể sằn sàng thực hiện yêu cầu của người sử dụng

k h á c [2]

2.4.3 P h á t triể n c á c S e s s io n B e a n

Đê viết các lớp Session Bean phải thực hiện cài đặt giao diệnjavax.ejb.SessionBean Giao diện này có một số phương thức bất buộc phải được cài đặt Các phương thức này được sử dụng bởi bộ chứa EJB Bộ chứa EJB sẽ gọi các phương thức này khi cần thôns báo những sự kiện quan trọng cho các Session Bean [2]

Giao diện Session Bean được định nghĩa như sau:

public interface javax ejb SessionBean extends javax ejb EnterpriseBean

{

public abtract void setSessionContext (SessionContext ctx)

throws java rmi RemoteException;

public abtract void ejbPassivate()

throws java rmi RemoteException;

public abtract void ejbActivate()

throws java rmi RemoteException;

public abtract void ejbRemove()

throws java rmi RemoteException;

}

2.4.3 Ĩ setSessionContext (SessionContext ctx)

Bộ chứa EJB gọi phương thức này khi nó thực hiện kết gắn một ngừ cảnh của phiên giao dịch cho một Session Bean Ngữ cảnh của phiên giao dịch là cổng giao tiêp giữa Session Bean và bộ chứa EJB Thông qua ngừ cảnh của phiên giao dịch, các Session Bean có the hỏi bộ chứa EJB về trạng thái của giao dịch, trạng thái bảo mật và các thông tin khác

Trang 29

28

-Thông thường trong phương thức này các Session Bean thườne thực hiện việc lưu lại trạna thái của ngữ cảnh trong một thuộc tính của nó Ví dụ:

import javax ejb *;

public class MyBean implements SessionBean {

private SessionBean ctx;

public void setSessionContext (SessionContext ctx) {

this.ctx=ctx;

}}

2.43.2 ejbCreate()

e j b C r e a t e ( ) thực hiện việc khởi tạo Session Bean Có thể định nghĩa nhiều

e j b C r e a t e ( ) khác nhau, mồi phương thức nhận các bộ tham số khác nhau Với nhiều phương thức khác nhau cho phép khởi tạo Session Bean theo nhiều cách khác nhau.Việc cài đặt phương thức e jb C r e a t e ( ) đòi hỏi phải thực hiện các công việc khởi tạo cần thiết cho Session Bean chẳng hạn như việc khởi tạo các thuộc tính của nó

Ví dụ:

import javax ejb *;

public class MyBean implements SessionBean {

private int memberVariable;

public void ejbCreate (int initialValue) {

this memberVariable= initialValue;

}}

Các phương thức e jb C r e a t e ( ) chỉ được gọi bởi các bộ chứa EJB Các ứng dụng khách không bao giờ gọi các phương thức này bởi các ứng dụng này không làm việc trực tiếp với các Session Bean mà chỉ thực hiện việc tương tác với các Session Bean thông qua bộ chứa EJB Nhưng các tham số của phương thức e jb C r e a t e ( ) do ứng dụng khách cung cấp Vì vậy, các ứng dụng khách cần một cơ chế để chuyển các tham số này Cơ chế chuyển các tham số này được thực hiện thông qua giao

Trang 30

diện tại chồ của Session Bean Vì vậy, với mỗi phươne thức e jb C r e a te Q trong lớp Session Bean cần phải có một phương thức tươns ứng trone giao diện tại chồ.

Ví dụ, phương thức trong lớp Session Bean là:

public void ejbCreate (int i) throws

phải có một phương thức c r e a te ( ) tương ứng trong giao diện tại chỗ:

public void create (int i) throws

Khi đó, ứng dụng khách sẽ thực hiện việc gọi phương thức c r e a t e ( ) trong giao diện tại chỗ và các tham sổ được cung cấp tại đây sẽ được chuyển cho phương thức

e j b C r e a t e ( ) tương ứng

2.4.3.3 ejbPassivate()

Khi có quá nhiều các thành phần được khởi tạo, bộ chứa EJB có thể thực hiện chuyến một so Session Bean sang trạng thái bị động (trạng thái chờ) để giải phóngtài nguyên của hệ thống Để thực hiện việc chuyển một Session Bean sang trạngthái bị động, bộ chứa EJB thực hiện việc lưu các Session Bean ra vùng lưu trữ tạm thời nào đó như lưu vào cơ sở dữ liệu hay một tệp dữ liệu Sau đó, bộ chứa EJB thực hiện việc giải phóng các tài nguyên đang được sử dụng bởi Session Bean này Ngay trước khi một Session Bean được chuyển sang trạng thái bị động, thì bộ chứa EJB thực hiện việc gọi phương thức e j b P a s s i v a te ( )

Các phương thức e jb P c is s iv a te ( ) của lớp Session Bean phải thực hiện việc giải

import javax ejb *;

public class void MyBean implements SessionBean {

public void ejbPassivate() {

<đóng các kết nối mạng, .>

}}

Phương thức e jb P a s s i v a te ( ) không được áp dụng cho các Session Bean Phi Trạng Thái, bởi các Session Bean này không cần duy trì trạng thái Chính vì vậy,

Trang 31

import javax ejb *;

public class MyBean implements SessionBean {

public void ejbActivate() {

<thiẽt lập các kết nối mạng, .>

}}

Tương tự như phương thức e jb P a s s i v a t e ( '), phương thức e jb A c t i v a t e ( ) cũng không áp dụng được với các Session Bean Phi Trạng Thái

2.4.3.5 ejhRemove()

Khi bộ chứa EJB muốn hủy bò một Session Bean nó sẽ thực hiện việc gọiphương thức e jb R e m o v e ( ) Phương thức e j b R e m o v e ( ) dùng để báo cho Session Beanrằng nó sắp bị hủy bỏ và cho phép nó thực hiện các công tác dọn dẹp nếu cần

e jb R e m o v e ( ) là phương thức bắt buộc đối với mọi Session Bean Phương thức nàykhông có tham biến Vì vậy, chỉ có đúng một phương thức e jb R e m o v e ( ) cho mồi lớpSession Bean Thông thường, phương thức này thực hiện việc giải phóng các tàinguyên mà Session Bean đang chiếm giữ Ví dụ:

import javax ejb *;

public class MyBean implements SessionBean {

public void ejbRemove() {

<chuẩn bị cho việc hủy bó>

Trang 32

Bộ chứa EJB có thê gọi phương thức e jb R e m o v e ( ) tại bất kỳ một thời điểm nào

kê cả việc bộ chứa EJB quyết định ràng vòng đời của Session Bean đã chấm dứt (ví

dụ, có thể do không được truy nhập tới trong một thời gian dài) Nhưng cũng có thể

bộ chứa EJB khôna; bao giờ gọi phương thức này Ví dụ như khi bộ chứa EJB bị sự

cô làm ngừng hoạt động của nó Chính vì vậy, người phát triển ứng dụng phải chủ động phòng chống sự cố này Ví dụ, các Session Bean thực hiện việc lưu các thông tin tạm thời vào cơ sở dừ liệu thì cần phải có công cụ thực hiện việc dọn dẹp các dữ liệu này

2.4.3.6 Các ph ương tlí ức kh ác

Ngoài các phương thức được gọi bởi bộ chứa EJB trên các lớp Session Bean, có thế cài đặt các phương thức khác Các phương thức này thực hiện việc giải quyết các vấn đề đặt ra đổi với Session Bean này Ví dụ:

import javax ejb *;

public class MyBean implements SessionBean {

public int add (int I, int j) {

return (i+J);

}}

Đe các ứng dụng khách có thể gọi được các phương thức này thì chúng phải được thể hiện trong giao diện từ xa

2.4.4 Thực hiện gọi các Session Bean

Phần này sẽ xem xét các ứng dụng khách và việc gọi các phương thức của Session Bean từ các ứng dụng khách này Các ứng dụng khách có thê tôn tại dưới một trong các dạng sau:

• ứ n g dụng trên máy trạm thực hiện trao đổi với một Session Bean cục bộ

Trang 33

• Các thành phần EJB khác thực hiện trao đổi để giải quyết các vấn đề lớn hơn.

Tuy ở dạna nào thì thông thường các ứng dụng khác đều thực hiện các công việc

1 Tìm kiếm đối tượng giao diện tại chỗ

2 Sử dụng đối tượng giao diện tại chỗ để tạo đối tượng Session Bean

3 Gọi các phương thức của đối tượng Session Bean

4 Hủy bỏ đối tượng Session Bean [2]

2.4.4 ĩ Tim kiếm đổi tượng giao diện tại chỗ

Một trong các m ạt tiêu của J2EE là cho phép các ứng dụng có thế “viết một lần, chạy bất cứ đâu” Vì vậy, mọi ứng dụng Java triển khai ở mức xí nghiệp phải không phụ thuộc vào mô hình đa mức cụ thể nào cả Việc lự a chọn các thức phân tán các EJB, Servlet, JSP, trên nhiều mức khác nhau không làm ảnh hưởng tới việc phát triển các thành phần này Tính năng này được gọi tính không phụ thuộc vị trí - vị trí vật của các thành phần; khi triển khai không ảnh hưởng tới việc phát triển các thành phần này

Đe đạt được tính không phụ thuộc vị trí, J2EE sử dụng dịch vụ thư mục và định danh Dịch vụ thư mục và định danh thực hiện việc lưu trừ các thông tin về các tài

Trang 34

nguyên trong hệ thống cũng như thực hiện các cách thức tìm kiếm các tài nguyên này Một sô dịch vụ thư mục và định danh truyền thốne có thể kể đến là dịch Netscape Directory Server, Microsoft Active Directory hay IBM Lotus Notes.

Theo cách thức truyền thống, các công ty sử dụng các thư mục để lưu trữ các thông tin như tên người sử dụng, mật khẩu, vị trí của máy tính, máy in, Các sản phẩm J2EE sử dụng hệ thống thư mục để lưu trữ thông tin về vị trí của các tài nguyên được sử dụng bởi các ứng dụng khi được triển khai Các tài nguyên đó có thô kê đến như các giao diện tại chỗ, các thuộc tính môi trường của EJB, trình kết nôi với cơ sở dữ liệu và các tài nguyên khác Việc sử dụng dịch vụ thư mục cho phép phát triển các ứng dụng mà không phụ thuộc vào một máy tính cụ thể hay một

vị trí nào đó Tính năng này tạo ra khả năng không phụ thuộc vào vị trí của EJB, giúp có thể phát triển các ứng dụng có tính khả chuyển cao Ví dụ, khi phải thực hiện di chuyển một tài nguyên nào đó tới một vị trí mới thì không cần phải phát triển lại ứng dụng mà thư mục của hệ thống sẽ được cập nhập lại đế phản ánh thay đổi này Khả năng này giúp làm giảm bớt gánh nặng bảo trì các hệ thống đa mức theo thời gian Và điều này đặc biệt cần thiết khi sử dụng các thành phần được cung cấp sẵn trên thị trường, bởi thường không thề có được chương trình nguồn của các thành phần này để tiến hành các sửa đổi

Hệ thống thư mục và định danh được sử dụng trong J2EE là JNDI JNDI cung cấp cho ứng dụng một giao diện chuẩn cho việc lưu trữ các thông tin về vị trí của người sử dụng, máy tính, mạng, các đối tượng trong hệ thống và các dịch vụ Trong J2EE, JNDI được sử dụng để định vị các tài nguyên trong môi trường đa mức, trong

đó, có thể kể đến như các đối tượng giao diện tại chồ, các thuộc tính môi trường, các tài nguyên của cơ sở dữ liệu,

Việc tìm kiếm các tài nguyên trong J2EE được tiến hành theo hai bước:

1 Kết gắn mỗi tài nguyên với một bí danh trong mô tả triển khai Các sản phâm J2EE sẽ thực hiện việc kết gắn bí danh này với tài nguyên được chỉ định

Trang 35

Cụ thể hơn ứng dụng khách cần phải thực hiện:

• Tạo lập môi trường: Xác định dịch vụ thư mục sẽ sử dụng, chỉ ra vị trí của dịch vụ thư mục trên mạng, xác định tên và mật khấu truy nhập dịch vụ thư mục

• Tạo ngữ cảnh khởi tạo: Ngữ cảnh khởi tạo là điểm khởi đầu cục bộ cho kết nối đến cấu trúc thư mục Phải thực hiện việc chuyển ngừ cảnh khởi tạo tới các thuộc tính môi trường vừa khởi tạo

• Lấy đối tượng giao diện tại chỗ: Để lấy được đối tượng giao diện tại chỗ, ứng dụng khách phải thực hiện lo o k u p O của JNDI trên thư mục ở xa Ket quả trả lại là đối tượng RMI remote object và phải chuyển nó thành giao diện tại chỗ [2]

Ví dụ về việc thực hiện các bước trên:

/* Lấy các thuộc tính hệ thống cho việc khới tạo JNDI */

Properties props = System getProperties();

/* Tạo ngO cảnh khởi tạo */

Context ctx = new InitialContext (props);

/* Lãy tham chiếu tới đối tượng giao diện tại chỗ */

Trang 36

M y H o m e h o m e = (M y H o m e ) ctx lookup (“M y H o m e ”);

2.4.4.2 Tạo đối tượng EJB

Sau khi đã có được tham chiếu tới đối tượng giao diện tại chỗ, có thể sử dụng đối tượng này để tạo các đối tượne EJB Đe tạo đối tượng EJB, sử dụng một trong các phươne thức c r e a t e ( ) của đối tượng giao diện tại chồ Ví dụ:

M y R e m o te ln te ría c e e jb O b je c t = h om e createQ ;

Phải chú ý rằng, trong một số trường hợp, khi phương thức createQ của đối tượne giao diện tại chỗ được thực hiện, chưa chắc phương thức ejbCreate() của đối tượng EJB được thực hiện do bộ chứa EJB có thể sử dụng một đối tượng EJB có

s ẵ n [2]

2.4.4.3 Gọi các phương thức của đối tượng EJB

Sau khi tạo lập được đổi tượng EJB, có thể gọi các phương thức của nó Khi ứng dụng khách thực hiện việc gọi phương thức của đối tượng EJB, thì đối tượng này phải lựa chọn một biến thể EJB tương ứng để thực hiện yêu cầu này Khi đó, đối tượng EJB có thể sử dụne một biến thể EJB có sẵn hoặc tạo ra một biến thể mới Sau khi phương thức được gọi hoàn thành việc thực hiện của mình, đối tượns EJB

sẽ thực hiện việc đem kết quả trả lại cho ứng dụng khách [2]

Ví dụ:

e jb O b je c t ad d();

2.4.4.4 Hủy bỏ đối tượng

Sau khi sử dụng xong đối tượng EJB, có thể tiến hành hủy bỏ thông qua việc thực hiện phương thức r e m o v e Q của đổi tượng giao diện tại chỗ hoặc của đối tượng EJB [2]

Ví dụ:

e jb O b je c t rem o ve();

Trang 37

3 6

-Phan trên xem xét các Session Bean dùng để thực hiện các tiến trình nghiệp vụ Phần này sẽ xem xét một loại EJB khác là Entity Bean Khác với Session Bean, Entity Bean là các thành phần có thể lưu trữ bền vững trên các thiết bị lưu trữ Điều

đó có nghTa là có thể mô hình hóa các dừ liệu của ứng dụng thông qua việc sử dụngcác Entity Bean [2]

Trong phần này sẽ xem xét các vấn đề sau:

• Các khái niệm cơ bản về lưu trữ bền vừng

• Định nghĩa của khái niệm Entity Bean theo quan điểm của người phát triển ứne dụne

• So sánh giữa Entity Bean và Session Bean

• Phát triển các Entity Bean

2.5.1 Các khái niệm cơ bản về lưu trữ bền vững

Khi làm việc với các đối tượng Java, nhiều trường hợp phải thực hiện việc lấy trạng thái của các đổi tượng này và lưu trữ trạng thái của chúng Công việc này được gọi là lưu trữ đối tượng Việc lưu trừ đối tượng thực hiện việc chuyển các đối tượng thành một dòng dừ liệu Dòng dừ liệu này có thể được chuyển qua mạng hoặc lưu trừ trên các thiết bị lưu trữ

Khi cần làm việc với đối tượng đã được lưu trữ, thì phải thực hiện tạo dựng lại đối tượng này từ các dừ liệu đã được lưu trữ Sau đó, có thể gọi đến các phương thức của đối tượng này Điều này tạo ra một hạn chế rất lớn đối với việc lưu trữ các đổi tượng là khả năng hỏi đáp Cách duy nhất có thể thực hiện việc hỏi đáp là chuyên toàn bộ các đối tượng này vào trong bộ nhớ và thực hiện việc tìm kiếm trên

2 5 E n t i t y B e a n

Trang 38

đó Điều này làm giảm tốc độ thực hiện của các ứng dụng có khối lượng dừ liệu lớn tới mức không thể chấp nhận được Chính vì vậy, đối với các ứng dụng mức xí nghiệp cần phải có một cơ chế khác để thực hiện việc lưu trữ trạng thái của các thành phần EJB [2]

2.5.1.2 Sử (lụng CSDL quan hệ

Một trong các cách lưu trừ khác cho các đối tượng Java là sử dụne các cơ sở dừ liệu quan hệ truyền thống Ví dụ như sử dụng cơ sở dữ liệu trên Oracle hay MS SQL Server Trong trường hợp này, thay vì thực hiện việc lưu trữ từna, đối tượng Java một, có thể thực hiện việc phân rã mỗi đối tượng thành nhiều phần con và thực hiện việc lưu trữ các thành phần này riêng rẽ Ví dụ, với đối tượng Tài khoản (ngân hàng), có thề lưu trữ số hiệu tài khoản trên một dòng trong CSDL và số dư của tài khoản trên một dòng khác Khi thực hiện việc lưu trữ đối tượng này, sẽ sử dụng JDBC hoặc SQL/J để thực hiện ánh xạ từ dữ liệu của đối tượng lên một CSDL Cũng lưu cả tên của lớp đối tượng Java trên đó để biết được dữ liệu này do đối tượng thuộc lớp nào tạo ra Việc biết được đối tượng thuộc lớp nào cho phép có thế tạo lại đối tượng này khi cần

Việc ánh xạ các đối tượng lên một CSDL quan hệ cho phép có thể thực hiện việc tìm kiếm một cách có hiệu quả bằng cách thực hiện tìm kiếm trên CSDL quan

hệ và sẽ được kết quả là một bảng các dừ liệu thỏa mãn điều kiện tìm kiếm Sau đó,

có thể khởi tạo các đối tượng cần tìm dựa trên bảng kết quả này [2]

2.5.1.3 Cơ sở dữ liệu h ướng đối tượng

Một cách khác nữa để lưu trừ các đối tượng là sử dụng các CSDL hướng đối tượng Các CSDL hướng đối tượng cho phép lưu trữ trực tiếp các đối tượng mà không cần phải thực hiện ánh xạ chuyển đổi như đổi với CSDL quan hệ Việc không cần thực hiện ánh xạ chuyển đổi giúp cho ứng dụng trở lên đơn giản hơn

Trang 39

38

-Đe thực hiện việc tìm kiếm, các CSDL hướng đối tượng thường hỗ trợ ngôn ngừ hỏi đáp hướng đối tượng OQL (Object Query Language) OQL là giao diện bậc cao cho phép thực hiện hỏi đáp các đối tượng trên các thuộc tính của nó

Ngoài việc hồ trợ hỏi đáp trên các đối tượna, các CSDL hướng đối tượng còn hồ trợ các mối quan hệ giữa các đối tượng Ví dụ, có thể định nghĩa quan hệ giữa đối tượng Tài khoản (ngân hàng) và đối tượng Khách hàng. Khi đó, có thể tham chiếu

từ đối tượng Tải khoản (ngân hàng) sang đối tượng Khách hàng và ngược lại Việc thực hiện tham chiếu này có hiệu quả cao hơn nhiều so với việc thực hiện phép kết nối trong CSDL quan hệ

Các CSDL hướng đối tượng có khả năng hồ trợ các đổi tượng rất phức tạp mà CSDL quan hệ khó có thể hồ trợ được Tuy nhiên, một hạn chế lớn của CSDL hướng đổi tượng là tính phổ biến của nó Hiện nay, việc ứng dụng CSDL hướng đối tượng trong thực tế còn rất hạn chế Điều này dẫn đến các công cụ hồ trợ như công

cụ quản lý, theo dõi khả năng thực hiện, tối ưu, .cho các CSDL hướng đối tượng còn rất bị hạn chế

Tóm lại, việc lưu trữ bền vững có thể thực hiện theo một trong 3 cơ chế là lưu trừ đối tượng, sử dụng CSDL quan hệ và sử dụng CSDL hướng đối tượng Trong nội dune của luận văn này, sẽ đề cập đến chủ yếu việc lưu trừ sử dụng CSDL quan

hệ do cơ chế lưu trừ đối tượng còn có rất nhiều hạn chế và CSDL hướng đối tượng

có nhiều điểm mạnh nhưng còn ít được phổ biến [2]

Phần sau sẽ xem xét kỹ hơn về các Entity Bean

2.5.2 Khái niệm Entity Bean

Trong các ứng dụng mức xí nghiệp sử dụng mô hình đa mức, có hai loại thành phần thường được sử dụng là:

Các thành phần thực hiện logic của ứng dụng: các thành phần này cung cấp các phương thức thực hiện các công việc xử lý thông thường Ví dụ như:

• T ín h g iá trê n các bản báo giá.

Trang 40

• Thực hiện thanh toán trên thẻ tín dụng.

• Tính toán ma trận ngược

Như vậy, có thể thấy các thành phần này thực hiện các hành động/hoạt động của

hệ thống Các thành phần này rất phù hợp với việc xử lý các tiến trình nghiệp vụ Các thành phần Session Bean rất phù họp cho mục đích này Các Session Bean thể hiện các hoạt độnẹ của người sử dụng cũng như các tiến trình xử lý trong mỗi phiên giao dịch

Các thành phần dữ liệu bền vững: là các thành phần có khả năng lưu trữ dữ liệu trên các thiết bị lưu trữ Các thành phần này sử dụng các cơ chế lưu trừ bền vững mà đã đề cập ở trên như lưu trữ đối tượng, sử dụng CSDL quan hệ, sử dụng CSDL hướng đối tượng Các thành phần này thực hiện việc biểu diễn dữ liệu muốn lưu trữ Ví dụ như:

• Các thông tin về Tài khoản ngân hàng như số tài khoản, số dư của tài khoản

• Các thông tin về Nhân sự như tên, phòng ban và mức lương của nhân viên

• Các thông tin Quản lý khách hàng như tên, địa chỉ, số điện thoại

Các thành phần này biểu diễn các đổi tượng như con người, địa điểm, đồ vật, Các thành phần này phù hợp cho việc biểu diễn dừ liệu của ứng dụng

Một câu hỏi được đặt ra là tại sao lại cần phải biểu diễn các dữ liệu dưới dạng các thành phần mà không làm việc trực tiếp với các dừ liệu Ví dụ như làm việc trực tiếp với các bản ghi trong CSDL Lý do của việc sử dụng các thành phần dữ liệu bên vừng bởi chúng giúp cho ứng dụng có thể được thực hiện đơn giản hơn, dễ quản lý hơn Có thể thực hiện việc nhóm một lượng lớn dữ liệu dưới dạng một đối tượng thống nhất và thực hiện việc gán với các dữ liệu này các phương thức xử lý

dữ liệu cần thiết Hơn thế nữa, việc sử dụng các thành phần dữ liệu bền vững còncho phép có thể sử dụng được các dịch vụ hệ thống cung cấp bởi các máy chủ ứng dụng như việc quản lý giao dịch, truy nhập qua mạng và bảo mật

Ngày đăng: 25/03/2015, 10:22

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

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

TÀI LIỆU LIÊN QUAN

w