ĐỒ ÁN TỐT NGHIỆP MỤC LỤC
MỤC LỤC
MỤC LỤC 1
DANH MỤC CÁC KÝ HIỆU, CÁC CHỮ VIẾT TẮT 5
DANH MỤC HÌNH VẼ 7
MỞ ĐẦU 10
CHƯƠNG 1 MÔ HÌNH LẬP TRÌNH ĐA TẦNG VỚI J2EE 13
1.1MÔ HÌNH KHÁCH CHỦ 13
1.2MÔ HÌNH ĐA TẦNG 14
J2EE Server 15
1.3 J2EE VÀ EJB 16
1.3.1 J2EE 16
1.3.1.1 Khái niệm J2EE 16
1.3.1.2 Kiến trúc trình chứa J2EE 16
1.3.1.3 Các API của J2EE 17
1.3.2 EJB 19
1.3.2.1 Khái niệm 19
1.3.2.2 Mô hình EJB 19
1.3.2.3 Vì sao dùng EJB 20
1.3.2.4Các loại EJB 21
CHƯƠNG 2 TRIỂN KHAI ĐỐI TƯỢNG BEAN EJB 23
2.1THIẾT KẾ THÀNH PHẦN EJB 23
2.1.1 Phát triển Remote Interface 23
2.1.3 Phát triển lớp thực thi Bean (Bean Implement Class) 24
2.1.4 Phát triển lớp Client triệu gọi Bean 25
2.1.5 Viết file XML mô tả triển khai (Deployment Descriptor) 27
2.2 BIÊN DỊCH ĐỐI TƯỢNG EJB 28
2.3 KHỞI TẠO MÔI TRƯỜNG J2EE 28
2.4 ĐÓNG GÓI THÀNH PHẦN BEAN VỚI TRÌNH ĐÓNG GÓI 29
2.5 XÂY DỰNG THÀNH PHẦN WEB (WEB COMPONENT) 30
BÙI THÁI THÀNH LONG HVCNBCVT
5.2.1.2Tìm kiếm sách nâng cao 49
5.2.1.3Đăng ký 50
5.2.1.4Đăng nhập 50
5.2.1.5Đánh giá sách 50
5.2.1.6Đặt hàng qua mạng 51
5.2.2Các chức năng quản lý 51
5.2.2.1Quản trị sách 51
5.2.2.2Quản trị thành viên 51
BÙI THÁI THÀNH LONG HVCNBCVT
2
ĐỒ ÁN TỐT NGHIỆP MỤC LỤC
5.2.2.3Quản trị đơn hàng 51
CHƯƠNG 6 PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG 53
6.1MÔ HÌNH USE CASE 53
6.2BIỂU ĐỒ TRÌNH TỰ 56
6.2.1Biểu đồ trình tự cho Use Case đăng nhập 56
6.2.2Biểu đồ trình tự cho Use Case đặt hàng 56
6.2.3Biểu đồ trình tự cho Use Case Tìm kiếm 57
6.2.4Biểu đồ trình tự cho Use Case Đánh giá sách 57
6.2.5Biểu đồ trình tự cho Use Case Thêm sách mới 58
6.2.6Biểu đồ trình tự cho Use Case Xem đơn hàng 58
6.2.7Biểu đồ trình tự cho Use Case Xóa đơn hàng 59
6.2.8Biểu đồ trình tự cho Use Case Xem thành viên 59
6.2.9Biểu đồ trình tự cho Use Case Xóa thành viên 60
6.3THIẾT KẾ BIỂU ĐỒ LỚP – ĐỐI TƯỢNG CHI TIẾT 60
6.4THIẾT KẾ CƠ SỞ DỮ LIỆU 61
6.4.1Thiết kế các bảng 61
6.4.1.1Bảng chứa các để mục cho trang chủ: editorial_categories 61
6.4.1.2Bảng chứa các chi tiết đề mục cho trang chủ: editorials 61
6.4.1.3Bảng danh mục các thể loại sách: categories 61
ĐỒ ÁN TỐT NGHIỆP DANH MỤC CÁC KÝ HIỆU, CÁC CHỮ VIẾT TẮT
DANH MỤC CÁC KÝ HIỆU, CÁC CHỮ VIẾT TẮT
A
API Application Program Interface
C
CGI Common Gateway Interface
CSDL Cơ Sở Dữ Liệu
D
DHTML Dynamic Hypertext Markup Language
E
EJB Enterprise Java Bean
H
HTTP Hypertext Transfer Protocol
HTML Hypertext Markup Language
I
IDE Integrated Drive Electronics
J
JAF JavaBeans Activation Framework
JDBC Java Database Connectivity
J2EE Java 2 Enterprise Edition
JNDI Java Naming and Directory Interface
JSP Java Server Pages
JTA Java Transaction API
M
MOM Message Oriented Middleware
ĐỒ ÁN TỐT NGHIỆP DANH MỤC CÁC KÝ HIỆU, CÁC CHỮ VIẾT TẮT
R
RMI Remote Method Invocation
S
SQL Structured Query Language
Hình 6.14 Biểu đồ trình tự cho Use Case Xoa thanh vien 60
Hình 6.15 Biểu đồ lớp - đối tượng chi tiết 60
Hình 6.16 Bảng chúa các đề mục cho trang chủ 61
Hình 6.17 Bảng chúa các chi tiết đề mục cho trang chủ 61
Hình 6.18 Bảng danh mục các thể loại sách 61
Hình 6.19 Bảng danh mục chi tiết nội dung các tựa sách 61
Hình 6.20 Bảng danh mục chứa thông tin thành viên 62
Hình 6.21 Bảng chứa đơn đặt hàng 62
Hình 6.22 Bảng chứa chi tiết đơn hàng 62
Hình 6.23 Bảng chứa thông tin đánh giá của khách hàng 63
Hình 6.24 Bảng chứa các thể loại credit card 63
Hình 6.25 Bảng chứa các thông tin về giỏ hàng 63
Hình 6.26 Mô hình quan hệ của hệ thống 63
Hình 6.27 Mô hình hoạt động của Web site 64
Hình 7.1 Trang chủ 65
Hình 7.2 Trang đăng nhập 66
Hình 7.3 Trang đăng ký thành viên 67
Hình 7.4 Trang xem chi tiết sách 68
Hình 7.5 Trang giỏ hàng 69
Hình 7.6 Trang thanh toán 70
Hình 7.7 Trang tạo hóa đơn 71
Hình 7.8 Trang quản trị sách 72
Hình 7.9 Trang quản trị đơn hàng 73
Hình 7.10 Trang quản trị thành viên 74
ĐỒ ÁN TỐT NGHIỆP DANH MỤC CÁC KÝ HIỆU, CÁC CHỮ VIẾT TẮT
ĐỒ ÁN TỐT NGHIỆP MỞ ĐẦU
MỞ ĐẦU
Sự phát triển như vũ bão của hệ thống mạng nhất là mạng Internet đã khiến cho
máy tính trở nên gần gũi và phục vụ đắc lực cho con người hơn. Tuy nhiên bên cạnh
đó, một thách thức đặt ra cho các nhà phát triển ứng dụng là lập trình mạng ngày càng
lập trình đối tượng rất hiệu quả cho các ứng dụng mạng Java.
Được sự cho phép của cô Phan Thị Hà, thông qua đồ án tốt nghiệp :
Nghiên cứu công nghệ J2EE
Khảo sát Session Bean và thiết kế mô hình Web
em xin được nêu lên một số khái niệm cũng như kỹ thuật lập trình mới về kiến trúc
phân tầng đang được đưa vào sử dụng rất rộng rãi trong nền công nghiệp phần mềm
hiện nay.
Các vấn đề chính mà đồ án tốt nghiệp này đề cập đến là :
- Mô hình khách/chủ và mô hình đa tầng trong Enterprise Java Bean.
- Tìm hiểu mô hình hoạt động của Bean bên trong trình chứa (container).
- Xây dựng và triệu gọi thành phần Bean mà cụ thể là Session Bean.
- Sử dụng trình đóng gói deploytool.
- Xây dựng mô hình web ứng dụng công nghệ EJB
Nội dung của đồ án được xây dựng thành 2 phần:
Phần 1: Khảo sát công nghệ
Chương 1 Mô hình lập trình đa tầng với J2EE
Chương 2 Triển khai đối tượng Bean EJB
Chương 3 Tổng kết
Phần 2: Xây dựng hệ thống bán sách trực tuyến ứng dụng công nghệ EJB
Chương 4 Đặt vấn đề
Chương 5 Đặc tả yêu cầu hệ thống
Chương 6 Phân tích và thiết kế hệ thống
Chương 7 Thực hiện bài toán
Cuối cùng là đánh giá, kết luận những kết quả đạt được, những hạn chế và đề xuất
các định hướng tiếp theo cho đồ án.
ĐỒ ÁN TỐT NGHIỆP MỞ ĐẦU
Tuy đã cố gắng rất nhiều, nhưng sự hiểu biết của em còn hạn chế nên không thể
tránh khỏi những sai xót, em rất mong nhận được sự góp ý, chỉ bảo của quý thầy cô và
các bạn.
ĐỒ ÁN TỐT NGHIỆP CHƯƠNG 1: MÔ HÌNH LẬP TRÌNH ĐA TẦNG VỚI J2EE
từng máy. Sau một thời gian dài sử dụng, ta muốn chuyển hệ cơ sở dữ liệu SQL Server
sang hệ cơ sở dữ liệu Oracle, thì ta phải yêu cầu 100 máy khách cập nhật lại trình điều
khiển truy xuất cơ sở dữ liệu Oracle thay cho SQL Server, đó là chưa kể đến cấu hình
và kết nối với từng hệ cơ sở dữ liệu là vấn đề không phải đơn giản đối với người dùng.
Hoặc khi chúng ta muốn thay đổi mã nguồn của ứng dụng khách, chúng ta phải gửi bản
cập nhật hàng chục Mb đến 100 máy khách yêu cầu cập nhật lại chương trình. Tất cả
những yêu cầu trên đã làm phát sinh mô hình phát triển ứng dụng đa tầng (multi-tier).
Các ứng dụng xử lý không còn được cài đặt trên máy khách mà được cài đặt trên một
máy chủ. Mục tiêu là làm cho máy khách trở nên gọn nhẹ, dễ cấu hình, dễ thay đổi
phía máy chủ, nếu chúng ta cần thay đổi mã nguồn của ứng dụng, chúng ta chỉ cần thay
đổi trên máy chủ, tất cả các trình khách khi kết nối vào máy chủ chạy ứng dụng sẽ
luôn được phục vụ với phiên bản chương trình mới nhất.
Web là một ví dụ điển hình nhất của mô hình ứng dụng đa tầng. Trình chủ Web
nằm trên một máy chủ , trình khách chỉ cần dùng trình duyệt (web browser) kết nối vào
máy chủ và có thể truy cập được mọi thông tin cũng như dịch vụ. Trình chủ sử dụng
Java Servlet, trang JSP hay các ứng dụng CGI (Common Gateway Interface) để kết nối
với cơ sở dữ liệu, đối tượng phân tán RMI (Remote Method Invocation-nằm trên một
máy chủ khác) xử lý tính toán và trả về kết quả cho trình khách thông qua các trang
Web tĩnh. Mô hình đa tầng đã phân rã chức năng một cách cụ thể, cho phép ứng dụng
chạy trên nhiều máy chủ khác nhau. Dễ dàng cho người phát triển, nhà cung cấp cũng
như người sử dụng trên mạng diện rộng nhất là mạng Internet. Đó là lý do tại sao các
nhà phát triển đều mong muốn hướng đến việc thiết kế ứng dụng Web.
ĐỒ ÁN TỐT NGHIỆP CHƯƠNG 1: MÔ HÌNH LẬP TRÌNH ĐA TẦNG VỚI J2EE
Hình 1.2 Mô hình đa tầng Multi-tier
Mô hình ứng dụng đa tầng này dựa trên nền tảng J2EE. Một ứng dụng J2EE có
thể bao gồm 3 hoặc 4 tầng nhưng những ứng dụng J2EE thường được xem là 3 tầng vì
nó được phân tán trên 3 vị trí : Máy khách (Client Machine), máy chủ J2EE (J2EE
Server Machine), và máy chủ cơ sở dữ liệu (Database Server Machine)
J2EE Server
Trình chủ Web
1.3.1.2 Kiến trúc trình chứa J2EE
Hình 1.3 J2EE và các trình chứa
Trình chứa là nơi cung cấp môi trường hoạt động và là nơi giao tiếp giữa các thành
phần. Trước khi một thành phần Web, Enterprise Bean hay thành phần ứng dụng khách
có thể được thực thi nó phải được tập hợp lại trong một Module và được triển khai đến
trình chứa của nó. Tiến trình tập hợp bao gồm các thiết lập đặc tính của trình chứa cho
mỗi thành phần trong ứng dụng J2EE và cho chính ứng dụng J2EE. Những tùy biến
thiết lập trình chứa hổ trợ cơ bản được cung cấp bởi Server J2EE, bao gồm những dịch
vụ như : bảo mật, quản lý giao tác, tra cứu thao tác định danh và thư mục Java (Java
Naming and Directory Interface), và khả năng kết nối từ xa. Quá trình triển khai và cài
đặt những thành phần ứng dụng J2EE trong trình chứa J2EE được mô tả trong hình
trên (hình 1.3). Trong đó :
ĐỒ ÁN TỐT NGHIỆP CHƯƠNG 1: MÔ HÌNH LẬP TRÌNH ĐA TẦNG VỚI J2EE
- J2EE Server : là phần chạy thực của một sản phẩm J2EE. Server J2EE
cung cấp trình chứa EJB và Web.
- Trình chứa EJB : quản lý việc thực thi của Enterprise Bean cho những
ứng dụng J2EE. Enterprise Bean và trình chứa của nó chạy trên Server
J2EE.
- Trình chứa Web : Quản lý việc thực thi và những thành phần Servlet
cho những ứng dụng J2EE. Những thành phần Web và các ứng dụng của
nó chạy trên Server J2EE.
- Trình chứa ứng dụng J2EE : quản lý việc thực thi những thành phần
ứng dụng của Client. Những ứng dụng Client và trình chứa của nó chạy
trên máy Client.
- Trình chứa Applet : quản lý việc thực thi của các Applet. Bao gồm một
trình duyệt Web và Java Plug-in chạy trên cùng máy Client.
1.3.1.3 Các API của J2EE
Sau đây là một số các API thông dụng của J2EE:
• Kỹ thuật Enterprise Java Bean: Một thành phần Enterprise Java Bean hay
Enterprise Bean, là thân mã lệnh có các field và các phương thức để thực thi
phần : một giao tiếp mức ứng dụng được sử dụng bởi các thành phần ứng
dụng để truy xuất một CSDL, và một giao tiếp trình cung cấp dịch vụ để
đính kèm một trình điều khiển JDBC cho nền J2EE.
• Java Naming and Directory Interface (JNDI): một interface duy nhất
dùng để truy cập những kiểu dịch vụ khác nhau về định danh và thư mục
ĐỒ ÁN TỐT NGHIỆP CHƯƠNG 1: MÔ HÌNH LẬP TRÌNH ĐA TẦNG VỚI J2EE
1.3.2 EJB
1.3.2.1 Khái niệm
Đó là một thành phần phần mềm server-side được triển khai trong môi trường
đa phân tán.
1.3.2.2 Mô hình EJB
Hình 1.4 Mô hình Enterprise Java Bean (EJB)
Hình 1.4 mô tả mô hình Enterprise Java Bean trong đó:
• EJB Server: cung cấp dịch vụ hệ thống và quản lý những trình chứa mà
Bean chạy. Nó phải làm tồn tại một khả năng truy xuất dịch vụ định danh
JNDI và dịch vụ giao tác. Borland Enterprise Server AppServer Edition 6.0
là một ví dụ về Server EJB.
• Trình chứa EJB: một trình chứa là một hệ thống chạy thực cho một hoặc
nhiều Enterprise Bean. Nó cung cấp sự truyền thông giữa Bean và EJB
server. Nó cung cấp giao tác, bảo mật và quản lý sự phân phối mạng. Một
trình chứa thì gồm có mã và một công cụ sinh mã cho Enterprise Bean.
Thông thường, trình chứa cũng cung cấp những công cụ để triển khai
ĐỒ ÁN TỐT NGHIỆP CHƯƠNG 1: MÔ HÌNH LẬP TRÌNH ĐA TẦNG VỚI J2EE
Enterprise Bean, có nghĩa là trình chứa có thể giám sát và quản lý ứng dụng.
Server EJB và trình chứa EJB kết hợp với nhau cung cấp môi trường cho
Bean chạy. Trình chứa cung cấp sự quản lý các dịch vụ đến một hoặc nhiều
Bean. Server cung cấp những dịch vụ cho Bean, nhưng trình chứa có sự
tương tác giữa Bean đến các dịch vụ này.
Mỗi EJB bắt buộc phải có các interface và các class sau:
• Remote interface: remote interface kế thừa javax.ejb.EJBObject. Remote
thể). Ngoài ra còn có Message – driven bean.
1. Session bean: Nếu đối tượng Bean chỉ thực hiện các hành vi xử lý, tính toán
đơn thuần thì chúng được phân lọai thành Bean thao tác (Session Bean). Bean
thao tác chỉ có nhiệm vụ phục vụ trình khách, nơi triệu gọi đối tượng. Trong
một phiên kết nối, những thao tác nhất thời không đòi hỏi việc thể hiện dữ liệu
thường bao gồm : tính toán, phân tích, thống kê… Bean thao tác được chia làm
hai lọai đó là : Bean thao tác phi trạng thái (Stateless Bean) và Bean thao tác lưu
vết trạng thái (Stateful Bean)
• Stateless bean: là các thành phần bean không lưu lại trạng thái của giao
dịch trước đó để sử dụng cho lần giao dịch sau. Bean thao tác phi trạng
thái là đối tượng Bean đơn giản, dễ dùng, dễ thiết kế và quản lý nhất
trong tất cả các đối tượng EJB.
• Stateful bean: Bean thao tác lưu vết trạng thái là các thành phần Bean cần
lưu lại vị trí của giao dịch trước đó để sử dụng cho các lần giao dịch sau.
Các Bean này thường phục vụ cho các thao tác đòi hỏi phải qua nhiều
bước triệu gọi trước khi trả về kết quả cuối cùng
2. Entity bean: Đối tượng thường mô tả một thực thể nào đó trong cuộc sống
thực. Bean thực thể cung cấp một đối tượng xem xét dữ liệu trong cơ sở dữ liệu.
Thông thường Bean đại diện cho một hàng trong tập hợp các bản của cơ sở dữ
liệu quan hệ. Một Bean thực thể thường phục vụ nhiều hơn một Client. Không
giống như Bean thao tác, Bean thực thể thì sống lâu hơn. Chúng duy trì một
trạng thái tồn tại miễn là dữ liệu còn trong cơ sở dữ liệu, hay nói đúng hơn miễn
là còn Client riêng biệt cần đến nó. Việc quản lý dữ liệu của Bean thực thể được
chia ra làm hai lọai:
ĐỒ ÁN TỐT NGHIỆP CHƯƠNG 1: MÔ HÌNH LẬP TRÌNH ĐA TẦNG VỚI J2EE
• Bean thực thể quản lý (Bean - Managed): là các thành phần Bean có khả
năng thực thi các câu truy vấn cơ sở dữ liệu ( do lập trình viên xây
dựng ) để lấy về dữ liệu mà nó thể hiện. Ví dụ trong phương thức khởi
dựng Bean thực thể có thể dùng các câu lệnh SQL như SELECT,
INSERT (thông qua JDBC) để tự tìm hoặc thêm mới dữ liệu mà nó thể
}
Theo đặc tả và qui định của kiến trúc Enterprise Java Bean lớp giao tiếp trung gian mà
trình chứa sử dụng triệu gọi phương thức của thành phần Bean phải kế thừa từ lớp
javax.ejb.EJBObject.
2.1.2 Phát triển Home Interface
Tuy nhiên, chúng ta vẫn chưa thể triệu gọi được đối tượng Bean trong trình
chứa. Muốn tham chiếu được thành phần Bean từ máy khách, EJB đòi hỏi chúng ta
phải tạo lớp “mồi”. Lớp này được gọi là lớp chủ (Home). Từ trình khách, chúng ta gọi
lớp chủ để tạo ra và lấy về tham chiếu của giao tiếp Hello. Chúng ta không cần cài đặt
lớp chủ , chúng ta chỉ cần đặc tả lớp chủ home là một giao tiếp interface kế thừa lớp
javax.ejb.EJBHome. Trong lớp chủ này chúng ta khai báo duy nhất phương thức
create() có kiểu trả về là lớp giao tiếp Hello như sau:
package helloworld;
import java.rmi.RemoteException;
ĐỒ ÁN TỐT NGHIỆP CHƯƠNG 2: TRIỂN KHAI ĐỐI TƯỢNG BEAN EJB
import javax.ejb.CreateException;
import javax.ejb.EJBHome;
public interface HelloHome extends EJBHome
{
Hello create() throws RemoteException, CreateException;
}
2.1.3 Phát triển lớp thực thi Bean (Bean Implement Class)
Thành phần Bean Hello đặc tả phương thức hello() và kế thừa lớp
javax.ejb.SessionBean. Nó có mã nguồn được cài đặt như sau :
package helloworld;
import javax.ejb.SessionContext;
public class HelloBean implements javax.ejb.SessionBean
{
// Đặc tả phương thức hello()
public String hello()
2.1.4 Phát triển lớp Client triệu gọi Bean
Chúng ta sẽ xây dựng lớp HelloClient để triệu gọi đối tượng HelloBean mà ta đã
xây dựng ở trên. Đặc tả cho lớp HelloClient như sau :
package helloworld;
import javax.naming.Context;
import javax.naming.InitialContext;
import java.util.Properties;
public class HelloClient {
public static void main(String[] args) throws Exception {
Properties props = System.getProperties();
Context ctx = new InitialContext(props);
Object obj = ctx.lookup("HelloBean");
HelloHome home = (HelloHome)
javax.rmi.PortableRemoteObject.narrow(obj,
HelloHome.class);
// Tạo đối tượng hello thuộc Remote Interface
// từ đối tượng Home Interface
Hello hello = home.create();
// Xuất ra chuỗi “Hello, World !”
System.out.println(hello.hello());