Thành phần Bean phi trạng thái (stateless Bean) mang tên HelloWorld. Bean Hello thực hiện chức năng xuất ra một chuổi “Hello World”.
ĐỒ Á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 1 ĐỒ ÁN TỐT NGHIỆP MỤC LỤC 2.5.1 Viết một trang JSP triệu gọi thành phần Bean .30 2.5.2 Tạo thành phần Web 31 2.5.3 Kiểm chứng và đóng gói ứng dụng J2EE 32 2.5.4 Chạy ứng dụng J2EE .32 2.6 PHÁT TRIỂN BEAN THAO TÁC (SESSION BEAN) 32 2.6.1 Giao tiếp Session Bean 32 2.6.2 Phát triển Bean thao tác phi trạng thái (Stateless Session Bean) .33 2.6.2.1 Xây dựng Bean thao tác phi trạng thái 33 2.6.2.2 Chu trình hoạt động (Lyfe Cycle) của Bean thao tác phi trạng thái 34 2.6.2.3 Sơ đồ trạng thái (State Diagram) .34 2.6.2.4 Sơ đồ trình tự cho Bean thao tác phi trạng thái .35 2.6.3 Phát triển Bean thao tác lưu vết trạng thái (Stateful Session Bean) 35 2.6.3.1 Xây dựng Bean thao tác lưu vết trạng thái 35 2.6.3.2 Chu trình hoạt động của Bean thao tác lưu vết trạng thái .41 2.6.3.3 Sơ đồ trạng thái của Bean thao tác lưu vết trạng thái 42 2.6.3.4 Sơ đồ trình tự của Bean thao tác lưu vết trạng thái .43 2.7 GIỚI THIỆU TỔNG QUAN VỀ ENTITY BEAN 43 2.8ENTERPRISE JAVA BEAN VÀ SỰ HỖ TRỢ CỦA CÁC TRÌNH CHỦ KHÁC 45 CHƯƠNG 3 TỔNG KẾT .46 CHƯƠNG 4 ĐẶT VẤN ĐỀ 47 CHƯƠNG 5 ĐẶC TẢ YÊU CẦU HỆ THỐNG 48 5.1NGƯỜI SỬ DỤNG HỆ THỐNG 48 5.1.1 Đối với khách hàng chưa đăng ký .48 5.1.2 Đối với thành viên .48 5.1.3 Đối với người quản trị hệ thống .49 5.2CÁC CHỨC NĂNG CỦA HỆ THỐNG .49 5.2.1Các chức năng dành cho thành viên và khách hàng chưa đăng ký .49 5.2.1.1Tìm kiếm sách .49 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 6.4.1.4Bảng danh mục chi tiết nội dung các tựa sách: items 61 6.4.1.5Bảng danh mục chứa thông tin thành viên: members 62 6.4.1.6Bảng chứa đơn đặt hàng: orders 62 6.4.1.7Bảng chứa chi tiết đơn hàng: orderDetails 62 6.4.1.8Bảng chứa thông tin đánh giá sách của khách hàng: rating .62 6.4.1.9Bảng chứa các thể loại credit card .63 6.4.1.10Bảng chứa các thông tin về giỏ hàng: shoppingCart .63 6.4.2Mô hình quan hệ của hệ thống .63 6.5MÔ HÌNH HOẠT ĐỘNG CỦA WEBSITE .64 CHƯƠNG 7 THỰC HIỆN BÀI TOÁN .65 7.1CÁC TRANG DÀNH CHO KHÁCH HÀNG .65 7.1.1Trang chủ 65 7.1.2Trang đăng nhập .66 7.1.3Trang đăng ký thành viên .67 7.1.4Trang xem chi tiết sách .68 7.1.5Trang giỏ hàng 69 7.1.6Trang thanh toán .70 BÙI THÁI THÀNH LONG HVCNBCVT 3 ĐỒ ÁN TỐT NGHIỆP MỤC LỤC 7.1.7Trang tạo hóa đơn .71 7.2CÁC TRANG DÀNH CHO NHÀ QUẢN TRỊ .72 7.2.1Trang quản trị sách .72 7.2.2Trang quản trị đơn hàng .73 7.2.3Trang quản trị thành viên 74 ĐÁNH GIÁ 75 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 77 TÀI LIỆU THAM KHẢO 78 BÙI THÁI THÀNH LONG HVCNBCVT 4 ĐỒ Á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 X XML Extensible Markup Language ĐỒ ÁN TỐT NGHIỆP DANH MỤC CÁC KÝ HIỆU, CÁC CHỮ VIẾT TẮT DANH MỤC HÌNH VẼ Hình 1.1 Mô hình khách chủ 13 Hình 1.2 Mô hình đa tầng Multi-tier 15 Hình 1.3 J2EE và các trình chứa 16 Hình 1.4 Mô hình Enterprise Java Bean (EJB) .19 Hình 2.1 Khởi tạo môi trường J2EE .29 Hình 2.2 Giao tiếp giữa trình khách và đối tượng EJB 33 Hình 2.3 Chu trình hoạt đông của Stateless Bean 34 Hình 2.4 Sơ đồ trạng thái của Stateless Bean .34 Hình 2.5 Sơ đồ trình tự của Stateless Bean 35 Hình 2.6 Chu trình hoạt động của Stateful Bean 41 Hình 2.7 Sơ đồ trạng thái của Stateful Bean 42 Hình 2.8 Sơ đồ trình tự của Stateful Bean 43 Hình 6.1 Mô hình Use Case tổng quát của hệ thống 53 Hình 6.2 Phân rã Use Case Tim kiem .54 Hình 6.3 Phân rã Use Case Quan tri sách .54 Hình 6.4 Phân rã Use Case Quan tri don hang 55 Hình 6.5 Phân rã Use Case Quan tri thanh vien .55 Hình 6.6 Biều đồ trình tự cho Use Case Dang nhap .56 Hình 6.7 Biểu đồ trình tự cho Use Case Dat hang 56 Hình 6.8 Biểu đồ trình tự cho Use Case Tim kiếm 57 Hình 6.9 Biểu đồ trình tự cho Use Case Danh gia sach .57 Hinh 6.10 Biểu đồ trình tự cho Use Case Them sach moi 58 Hình 6.11 Biểu đồ trình tự cho Use Case Xem don hang .58 Hình 6.12 Biểu đồ trình tự cho Use Case Xoa don hang 59 ĐỒ ÁN TỐT NGHIỆP DANH MỤC CÁC KÝ HIỆU, CÁC CHỮ VIẾT TẮT Hình 6.13 Biểu đồ trình tự cho Use Case Xem thanh vien .59 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 trở nên phức tạp. Mô hình lập trình đơn lẻ truyền thống đã được thay đổi rất nhiều. Chương trình ứng dụng đòi hỏi sự tương tác từ nhiều phía người dùng, chia sẻ tài nguyên, kết nối từ xa, liên kết giao tác, phân tán dữ liệu…Với những yêu cầu trên mô hình khách/chủ đã ra đời. Mô hình khách chủ đã tỏ ra rất hiệu quả trong thời gian dài. Tuy nhiên cả máy khách và máy chủ đều bị quá tải bởi độ phức tạp và yêu cầu của người dùng. Tất cả các 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. Trong ứng dụng đa tầng, giao tiếp người dùng được đặt trên máy cục bộ, trong khi đó logic của ứng dụng được chạy trong tầng giữa trên một server. Tầng cuối cùng vẫn đóng vai trò lưu trữ dữ liệu. Khi logic của một ứng dụng cần cập nhật, thay đổi làm cho phần mềm của tầng giữa trên server, rất đơn giản cho việc quản lý cập nhật. EJB chứa những logic nghiệp vụ của ứng dụng, nên có thể nói EJB chính là phần lõi của hầu hết các ứng dụng phân tán cho enterprise. [...]... lưu vết trạng thái Thành phần Hello Bean mà ta xây dựng trên đây là thành phần Bean EJB thao tác phi trang thái (stateless bean) Có những thành phần Bean đòi hỏi phải lưu giữ thông tin trong suốt quá trình giao dịch, nó được gọi là thành phần Bean lưu vết trạng thái.Sau đây chúng ta sẽ thiết kế thành phần Bean phục vụ thao tác mua bán sách có tên là CartBean Việc thiết kế thành phần Bean thao tác lưu... Bởi vì Session Bean và Entity Bean chỉ phục vụ cho các dịch vụ đồng bộ ĐỒ ÁN TỐT NGHIỆP CHƯƠNG 2 2.1 CHƯƠNG 2: TRIỂN KHAI ĐỐI TƯỢNG BEAN EJB TRIỂN KHAI ĐỐI TƯỢNG BEAN EJB THIẾT KẾ THÀNH PHẦN EJB Chúng ta bắt đầu bằng việc thiết kế thành phần EJB đơn giản nhất Thành phần Bean phi trạng thái (stateless Bean) mang tên HelloWorld Bean Hello thực hiện chức năng xuất ra một chuổi “Hello World” Đối tượng Bean... như việc thiết kế thành phần Bean thao tác phi trang thái, chúng ta cũng xây dựng các lớp Remote, lớp Home và thành phần Bean Sau đây là đặc tả các lớp: • Lớp Cart: tương tự như lớp Hello nó cũng kế thừa lớp javax .ejb. EJBObject.: import java.util.* import javax .ejb. EJBObject; import java.rmi.RemoteException; ĐỒ ÁN TỐT NGHIỆP CHƯƠNG 2: TRIỂN KHAI ĐỐI TƯỢNG BEAN EJB public interface Cart extends EJBObject... từ Client Nó đóng vai trò như một proxy của EJB • Home interface: home interface kế thừa javax .ejb. EJBHome Nó đóng vai trò như một mô hình để khởi tạo EJB • Bean class: chứa phần cài đặt của các phương thức khai báo trong remote interface Bean class kế thừa javax .ejb. SessionBean hoặc javax .ejb. EntityBean hoặc javax .ejb. MessageDrivenBean 1.3.2.3 Vì sao dùng EJB Mô hình Client đã tồn tại rất lâu và rất... 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... sessionContext) throws EJBException, RemoteException; void ejbRemove() throws EJBException, RemoteException; void ejbActivate() throws EJBException, RemoteException; void ejbPassivate() throws EJBException, RemoteException; } ĐỒ ÁN TỐT NGHIỆP CHƯƠNG 2: TRIỂN KHAI ĐỐI TƯỢNG BEAN EJB 2.6.2 Phát triển Bean thao tác phi trạng thái (Stateless Session Bean) 2.6.2.1 Xây dựng Bean thao tác phi trạng thái Thành phần Bean... HelloLocalHome extends javax .ejb. EJBLocalHome { HelloLocal create() throws javax .ejb. CreateException; } ĐỒ ÁN TỐT NGHIỆP CHƯƠNG 2: TRIỂN KHAI ĐỐI TƯỢNG BEAN EJB 2.1.5 Viết file XML mô tả triển khai (Deployment Descriptor) HelloWorld< /ejb- name> Hello HelloHome HelloBean< /ejb- class> Stateless... khi viết phần mềm enterprise 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... 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,... 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