Tải bản đầy đủ (.docx) (92 trang)

Tìm hiểu các cấu trúc, qui trình hoạt động và điều hành một website bán hàng

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.72 MB, 92 trang )

Tìm hiểu các cấu trúc, qui trình hoạt động và điều hành một website bán hàng

LỜI CẢM ƠN
Xin chân thành cảm ơn sự hướng dẫn, giúp đỡ của quý Thầy Cô trong trường Đại
Học Sư Phạm Kỹ Thuật.
Xin đặc biệt chân thành cảm ơn Thầy Ths. Nguyễn Minh Đạo giảng viên khoa
Công nghệ thông tin đã tận tình hướng dẫn truyền đạt những kiến thức và kinh nghiệm
quý báu, những tình cảm yêu mến của Thầy đã giúp chúng em có đầy đủ kiến thức và
nghị lực để hoàn thành luận văn.
Xin cảm ơn những bạn bè và người thân trong gia đình đã tin yêu và truyền cho
chúng em thêm sức mạnh trong công việc học tập nghiên cứu của bản thân.
Mặc dù đã có rất nhiều cố gắng trong việc thực hiện luận văn, song với thời gian
có hạn và mức độ nghiên cứu bản thân còn hạn chế, nên không thể không có những thiếu
sót, mong được sự đóng góp ý kiến của quý Thầy cô và các bạn.
Tp.HCM, ngày 06 tháng 06 năm 2013
Sinh viên

Trang 1


Tìm hiểu các cấu trúc, qui trình hoạt động và điều hành một website bán hàng

TÓM TẮT ĐỀTÀI
Trong thời kỳ kinh tế thế giới đang trong thời kỳ toàn cầu hóa. Các kênh bán hàng của
các doanh nghiệp ngày càng phong phú và đóng một vai trò nhất định trong quá trình
quảng bá và tiêu thụ sản phẩm của doanh nghiệp. Với sự phát triển của nền công nghiệp
công nghệ thông tin và đặt biệt là sự bùng nổ nhanh chóng của Internet . Kênh bán hàng
trực tuyến đã và đang là xu thế chung của các doanh nghiệp nhằm tiếp cận một cách
nhanh chóng với khách hàng.
Java EE 5 là một phiên bản chính trong sự phát triển của Java EE với nhiều đặc
tính mới. Điểm mạnh của nó là giúp cho sự phát triển ứng dụng web Java được dễ dàng.


Sự dễ dàng phát triển này bao gồm sử dụng những khai báo annotation thay vì dùng
những tập tin deployment description, đơn giản hóa sự phát triển EJB, sử dụng
dependency injection để truy nhập những tài nguyên. Và còn nhiều cái đặc biệt bên
dưới....
Trong đề tài này, nhóm thực hiện sẽ từng bước tìm hiểu các cấu trúc, qui trình hoạt
động và điều hành một website bán hàng . Tiến hành xây dựng một website bán sách
hoàn chỉnh.
Bố cục của đồ án được trình bày như sau:








Chương 1: Giới thiệu
Chương 2: Các công trình liên quan đến đề tài
Chương 3: Phương pháp luận
Chương 4: Giải quyết vấn đề thực tế
Chương 5: Kết luận
Chương 6: Hướng phát triển
Chương 7: Tài liệu tham khảo

MỤC LỤC

Trang 2


Tìm hiểu các cấu trúc, qui trình hoạt động và điều hành một website bán hàng


CHƯƠNG 1. GIỚI THIỆU
Trang 3


Tìm hiểu các cấu trúc, qui trình hoạt động và điều hành một website bán hàng

1.1 Tầm quan trọng của vấn đề nghiên cứu trong luận văn
Những ứng dụng của doanh nghiệp ngày càng xử lý nhiều công việ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 được triể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 Enterprise Edition) được giới thiệu lần đầu tiên vào
năm 1999 là một platform mang nhiều tính năng mạnh mẽ đặc biệt hổ trợ mạnh về xử lý
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 ứng dụ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ư: JSP/Servlet, JMS (Java Message Service), JavaMail, EJB
(Enterprise Java Bean), …Trong đó EJB là một thành phần tốt nhất trong J2EE, EJB hổ
trợ mạnh việc xử lý giao tác và bảo mật. Đi kèm với EJB là đặc tả Java Persistence API
(JPA) cho phép các lớp Java ánh xạ với các bảng trong cơ sở dữ liệu dựa trên mô hình
ORM (Object Relational Mapping). 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ùng vớ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 trung và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ập trình tiếp tục sử dụng EJB cũng như những công nghệ của J2EE để phát triển
ứng dụng phía máy chủ mà điển hình là những ứng dụng web.

Cùng với sự ra đời của EJB 3.0, một bước tiến lớn so với phiên bản EJB 2.0 trước
đó, mang đến sự mạnh mẽ, giao tác (transaction), bảo mật (security) tốt cho việc xử lý
nghiệp vụ trong các ứng dụng Enterprise chạy trên nền J2EE, Sun còn cho ra đời công
nghệ Java Server Faces (JSF), một framework cho việc phát triển tầng giao diện của ứng
dụng Server. Với mục tiêu là giúp cho việc phát triển ứng dụng web nhanh hơn và dễ
Trang 4


Tìm hiểu các cấu trúc, qui trình hoạt động và điều hành một website bán hàng

dàng hơn cho người lập trình thông qua sự hỗ trợ của các thành phần giao diện người
dùng (như các text box, list box, datagrid,…), JSF thực sự là một framework tốt và cần
thiết cho người lập trình Java. Bên cạnh đó, hiện nay cũng có nhiều nhà phát triển lớn sử
dụng framework này để phát triển các bộ thư viện cho người dùng với nhiều control đẹp,
đa dạng và đặc biệt hỗ trợ Ajax chạy tốt trên nhiều trình duyệt. Trong số đó có thể nói
đến hai nhà phát triển mã nguồn mở lớn hiện này là Jboss với bộ thư viện RichFaces và
Apache với bộ thư viện MyFaces. Đây là hai bộ thư viện được sử dụng phổ biến nhất
hiện nay để phát triển ứng dụng JSF.
1.2 Mục tiêu của các vấn đề nghiên cứu trong luận văn
Ứng dụng các công nghệ trên nền J2EE 5.0 như EJB 3.0, JPA 2.0, JSP/Servlet, …
để xây dựng hoàn chỉnh ứng dụng website bán sách online với đầy đủ các tính năng và
tiện ích cho việc mua hàng và quản lý bán hàng.
1.3 Kết quả đạt được
Webiste bán sách online sử dụng các công nghệ trong J2EE, đáp ứng được nhu cầu
của một trang bán hàng trực tuyến và các gói quản lý cho hệ thống. Cho phép khách hàng
tìm kiếm, đặt hàng…

CHƯƠNG 2. CÁC CÔNG TRÌNH LIÊN QUAN ĐẾN ĐỀ TÀI
Trang 5



Tìm hiểu các cấu trúc, qui trình hoạt động và điều hành một website bán hàng

Với sự phát triển của internet đã tạo động lực cho sự phát triển mạnh mẽ của hoạt
động thương mại điện tử và đang trở thành một xu hướng kinh doanh trên toàn cầu. Cùng
với sự phát triển của thương mại điện tử, không thể không đề cập đến website thương mại
điện tử, đóng vai trò như một người bán hàng đắc lực và mang lại một nguồn thu lớn cho
doanh nghiệp. Dựa vào quá trình phát triển của thương mại điện tử và qui mô kinh doanh,
người ta phân thành hai loại website thương mại điện tử chính: website thương mại điện
tử loại một và website thương mại điện tử loại hai.
2.1 Các website thương mại điện tử loại một
Những website thương mại điện tử loại này thường chỉ thực hiện các hoạt
động mua bán và thanh toán trực tuyến thông thường mà không có sự phân loại
khách hàng. Ưu điểm của nó là tốn ít chi phí xây dựng, dễ dàng phát triển và thích
hợp cho những hệ thống kinh doanh qui mô nhỏ, số lượng sản phẩm không nhiều.
2.2 Các website thương mại điện tử loại hai
Đối với những hệ thống kinh doanh lớn và các hoạt động thương mại điện tử phức
tạp, các website thương mại điện tử loại một không đáp ứng các được các yêu cầu kinh
doanh cũng như gặp một số hạn chế. Việc ra đời các website thương mại điện tử loại hai
là sự cải tiến từ những hạn chế của website thương mại điện tử loại một với việc hỗ trợ
phân loại của khách hàng. Trong các hệ thống kinh doanh qui mô lớn, số lượng sản phẩm
kinh doanh lớn, khách hàng sẽ cảm thấy bất tiện trong việc tìm những sản phẩm kinh
doanh lớn, khách hàng sẽ cảm thấy bất tiện trong việc tìm những sản phẩm theo sở thích
của mình. Vì vậy, việc phân loại khách hàng sẽ giúp khách hàng nhanh chóng tìm được
những sản phẩm ưng ý. Hệ thống sẽ đưa ra những gợi ý sản phẩm cho khách hàng dựa
theo việc phân loại khách hàng theo hai tiêu chí : thông tin sở thích về sản phẩm và lịch
sử mua hàng của khách hàng.

CHƯƠNG 3. PHƯƠNG PHÁP LUẬN
3.1 Tổng quan về J2EE

3.1.1
J2EE là gì ?
Trang 6


Tìm hiểu các cấu trúc, qui trình hoạt động và điều hành một website bán hàng

Java 2 Platform Enterprise Edition viết tắt là J2EE, là một nền tảng công nghệ cho
phép phát triển những ứng dụng thương mại đa tầng (multitier enterprise applications).
J2EE mở rộng hổ trợ cho nhiều công nghệ như : JSP/Servlet, Enterprise JavaBeans, JSF,
JMS, JTA, …

3.1.2

Kiến trúc của J2EE
J2EE sử dụng một mô hình ứng dụng phân tán đa tầng.

Hình 3 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ầng web 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.
Trang 7


Tìm hiểu các cấu trúc, qui trình hoạt động và điều hành một website bán hàng

Hình 3 Giao tiếp giữa các tầng

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 clients). Khách hàng web 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 3 Containers và Components
J2EE có các loại container như :
Trang 8


Tìm hiểu các cấu trúc, qui trình hoạt động và điều hành một website bán hàng


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 :


Java Database Connectivity (JDBC) API: JDBC là một tập hợp các giao diện cho
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.
• 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.
• 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.
• 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.
• Servlets và Java Server Pages (JSP): Công nghệ dùng trong xây dựng những ứng
dụng web.
• 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ộ.
• 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 (distributed transaction).
• JavaMail: Cho phép thành phần java gởi và nhận mail.
• 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.
Trang 9


Tìm hiểu các cấu trúc, qui trình hoạt động và điều hành một website bán hàng


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.
• Java Persistence API (JPA) : Cho phép ánh xạ giữa một thực thể (entity) với một
bảng trong cơ sở dữ liệu quan hệ.

3.2 Enterprise Java Bean
3.2.1 Application Server
Một Application server là một chương trình ứng dụng nhận các yêu cầu và trả về
các phản hồi (Client) . Một Application server có thể chạy từ xa hoặc chạy trên các máy
tính có cài đặt ứng dụng. Bao gồm các ứng dụng như : file server, database server, backup
server, print server, mail server, web server, FTP server, application server, VPN server,
DHCP server, DNS server, WINS server, logon server, security server, domain controller,
backup domain controller, proxy server, firewall, etc.
Application server được phát triển để hổ trợ phát triển các ứng dụng lớn, chúng
bảo đảm an ninh và duy trì sự ổn định cho database.
Application server có thể nằm trong tầng thứ 3 của architecture model (Client
tier,Middle tier và Enterprise Information System).

Trang 10


Tìm hiểu các cấu trúc, qui trình hoạt động và điều hành một website bán hàng

Hình 3.4 Mô hình application server

Trang 11


Tìm hiểu các cấu trúc, qui trình hoạt động và điều hành một website bán hàng
3.2.2

Enterprise Beans

Enterprise beans là một phần của Java EE server,chạy trên EJB container và nằm
trong tầng business logic của một Enterprise Application.

Enterprise Application là phần mềm được phát triển để sử dụng trong nhiều chức
năng. Những ứng dụng này bao gồm nhiều lượt truy cập đồng thời tới dữ liệu bởi nhiều
người dùng.
Enterprise beans được sử dụng trong nhiều chức năng như : tương tác với
client,duy trì sự ổn định của sesion, chứa dữ liệu từ database và tương tác với server.
Lợi ích của Enterprise beans : Enterprise beans được sử dụng rộng rãi trong nhiều
trong việc phát triển các ứng dụng lớn. EJB container cung cấp các dịch vụ ( như : quản
lý các chuyển đổi và phân quyền bảo mật) cho Enterprise beans. Những ứng dụng đó làm
đơn giản hóa việc xử lý trong quá trình phát triển ứng dụng và các lập trình viên chỉ phải
tập tring giải quyết những vấn đề phát sinh .
Các loại Enterprise beans : EJB 3.0 xác định 2 loại Enterprise beans :
• Sesion bean : tương tác trực tiếp với client
• Message driven bean : lắng nghe các tin nhắn dịch vụ đặc biệt như : Java Message
API hoặc JPA trong một khoảng thời gian ngắn.
3.2.3

Annotations

Annotation được thêm trong EJB3.0 để thay thế deployment descriptor trong các
phiên bản trước đó. Điều này mang lại tính đơn giản và hiểu quả hơn đối với các ứng
dụng sử dụng EJB(jdk 5 trở lên).
Annotation cũng giống như metadata,ta có thể code,variables,parameters,fields, methods
và constructors.
Annotation là cách để tương tác giữa các thành phần của chương trình với các meta-tag,
compiler có thể hổ trợ để sinh ra code tương ứng khi cần thiết.
1. Định nghĩa một annotation
public @interface Example {
String showSomething();
}


Trang 12


Tìm hiểu các cấu trúc, qui trình hoạt động và điều hành một website bán hàng

Ví dụ :
(showSomething="Hi! How r you")
public void anymethod() {
....
}

2. Annotation Types : Có 3 dạng annotation trong java

Marker : marker annotation không chứa bất kỳ một thành phần nào khác ngoài
trừ tên cửa chính nó .
marker annotation không chứa bất kỳ một thành phần nào khác ngoài trừ tên
cửa chính nó
Ví dụ :
public @interface Example{}
..
@Example
Public void anymethod(){
..
}
• Single-value: dạng annotation này chỉ cung cấp một giá trị duy nhất.
public @interfaceExample{
String showSomething();
}
@Example(“Xin chào”)
Public void anymethod(){

..
}
• Multi-value or Full-value: dạng annotation này có thể có nhiều dữ liệu thành
phần, vì vậy, cần sử dụng nhiều giá trị của annotation để chứa các dữ liệu thành
phần.
public @interface Example(){
int num;
String name;
}
@Example(showSomething=”Xin chào!”, num=5, name=”XXX” )


Trang 13


Tìm hiểu các cấu trúc, qui trình hoạt động và điều hành một website bán hàng

public void anymethod{
….
}
3. Các quy đinh khi định nghĩa Annotation

Định nghĩa một annotation với dạng: @interface annotationName.
• Các phương thức trong annotation không nên đưa ra các exception.
• Các phương thức không nên có chứa các đối số (parameter).
• Các phương thức thường được trã về các đối số.
4. Các dạng annotation: Có 2 dạng annatation
• Simple annotations : chỉ được sử dụng để chứa các đoạn code, không thể sử dụng
để tạo các custom-annotation.
• Meta annotations : thường được gọi là annotation,được sử dụng để tạo các

annotation type.
5. Override annotation
Override annotation đảm bảo các annotated-method được sử dụng để override các
phương thức trong lớp cha. Nếu các phương thức này không định nghĩa lại các
phương thức trong lớp cha thì trình biên dịch sẽ sinh ra lỗi lúc biên dịch.
6. Deprecated annotation
Khi sử dụng Deprecated annotation,trình biên dịch sẽ đưa ra các cảnh
báo(warning) khi sử dụng các thành phần được khai báo. Đồng thời, các phương thức
được khai báo với deprecated sẽ không thể sử dụng thêm được nữa.
Ví dụ :
public class Deprecated_method{
@Deprecated
public void showSomething() {
System.out.println("Method has been depricated'");
}
}
gọi deprecated-method từ class khác:
public class Test_Deprication {
public static void main(String arg[]) throws Exception {
new Test_Deprication();
}


Trang 14


Tìm hiểu các cấu trúc, qui trình hoạt động và điều hành một website bán hàng

public Test_Deprication() {
Deprecated_method d = new Deprecated_method();

d.showSomething();
}
Sau khi biên dịch,trinh biên dịch sẽ thông báo :
Compiling 1 source file to D:tempNew Folder
(2)TestJavaApplication1buildclasses
D:tempNew Folder
(2)TestJavaApplication1srctestmyannotation
Test_Deprication.java:27:
warning: [deprecation] showSomething() in
test.myannotation.Deprecated_method has been deprecated
d.showSomething();
1 warning
7. Suppresswarning annotation
Suppresswarning annotation bảo đảm trình biên dịch sẽ che đi các warning đối với
các annotated-elements và sub-elements.
Ví dụ :
public class Test_Depricated {
public static void main(String arg[]) throws Exception {
new TestDepricated().showSomething();
}
@SuppressWarnings({"deprecation"})
public void showSomething() {
Deprecation_method d = new Deprecation_method();
d.showSomething();
}
}
Lúc biên dịch,trình biên dịch sẽ không đưa ra bất kỳ một warning nào.
8. Meta-Annotations :Có 4 dạng meta-annotation được định nghĩa trong JDK5
• Target annotation : đặc tả các thành phần của class,bao gồm các dạng :
 @Target(ElementType.TYPE) : có thể dùng được với bất kỳ thành phần nào

của class.
 @Target(ElementType.FIELD) : dùng được cho field hoặc property.
Trang 15


Tìm hiểu các cấu trúc, qui trình hoạt động và điều hành một website bán hàng
 @Target(ElementType.PARAMETER) : dung được cho các parameter của các

phương thức.
 @Target(ElementType.LOCAL_VARIABLE) : dụng được cho các biến local.
 @Target(ElementType.METHOD) : dùng cho các method trong annotation.
 @Target(ElementType.CONSTRUCTOR) : dùng cho các constructors.
 @Target(ElementType.ANNOTATION_TYPE): xác định khai báo là một
annotation type.
Ví dụ:
@Target(ElementType.METHOD)
public @interface Test_Element {
public String doTestElement();
}
Tạo một class sử dụng annotation trên
public class Test_Annotations {
public static void main(String arg[]) {
new Test_Annotations().doTestElement();
}
@Test_Target(doTestElement="Hi ! How r you")
public void doTestElement() {
System.out.printf("Testing Target Element annotation");
}
}
• Retention annotation

Retention annotation dùng để xác định địa điểm và phương thức annotation sẽ
được lưu lại. Có 3 dạng retention annotation :
 RetentionPolicy.SOURCE : được lưu ở source-level và trình biên dịch sẽ
bỏ qua chúng
 RetentionPolicy.CLASS : được lưu vào lúc biên dịch, virtual
machine(VM) sẽ bỏ qua chúng.
 RetentionPolicy.RUNTIME : virtual machine sẽ lưu dạng annotation này
và có thể được đọc vào lúc run-time.
Ví dụ :
@Retention(RetentionPolicy.RUNTIME)
public @interface Retention_Demo {
Trang 16


Tìm hiểu các cấu trúc, qui trình hoạt động và điều hành một website bán hàng

String doRetentionDemo();
}
• Documented annotation
Documented annotation không được khai báo mặc định,được xử lý bằng
javadoc tool để sinh ra các document.
Ví dụ :
@Documented
public @interface Documented_Demo {
String doTestDocumentedDemo();
}

public class Test_Annotations {
public static void main(String arg[]) {
new Test_Annotations().doTestRetentionDemo();

new Test_Annotations().doTestDocumentedDemo();
}
@Retention_Demo (doTestRetentionDemo="Hello retention annotation")
public void doTestRetentionDemo() {
System.out.printf("Testing 'Retention' annotation");
}
@Documented_Demo (doTestDocumentedDemo="Hello Test documentation")
public void doTestDocumentedDemo() {
System.out.printf("Testing 'Documented' annotation");
}
}
• Inherited annotation
Nếu annotate 1 class với @Inherited, các class con khi extend từ class đó sẽ tự
động kế thừa các properties.
Ta phải implement tất cả các method của parent-interface, bao gồm :
equals(),toString(),hashCode(). Ngoài ra, trong class phải có các phương thức
của lớp cha,dù có thực thi hay không.
Ví dụ :
Trang 17


Tìm hiểu các cấu trúc, qui trình hoạt động và điều hành một website bán hàng

@ParentObjectDemo
public Class ChildObjectDemo {
}
public class ChildObjectDemo implements ParentObjectDemo {
public boolean isInherited() {
return false;
}

public String showSomething() {
return "";
}
public boolean equals(Object obj) {
return false;
}
public int hashCode() {
return 0;
}
public String toString() {
return "";
}
public Class annotationType() {
return null;
}
}
3.2.4

Sesion Beans

Session bean là một enterprise bean tương tác trực tiếp với người dùng và chứa
các bussiness logic của ứng dụng. Một session bean thể hiện cho một client kết nối tới
enterprise application trên server thông qua việc gọi cái phương thức. Một ứng dụng có
thể có nhiều sesion tùy thuộc vào số lượng người dùng kết nối tới ứng dụng. Một session
bean tương tác với session và chặn các client khác bằng việc xử lý các business-task trên
server. EJB container sẽ hủy session bean sau khi xử lý xong.

Trang 18



Tìm hiểu các cấu trúc, qui trình hoạt động và điều hành một website bán hàng

Hình 3.5 : Session bean tương tác với client
1. Các loại Session Beans
a. Stateless Session Beans
Trạng thái giao dịch liên kết với một client, gọi là trạng thái đặc trưng cho client
(client-specific state). Trạng thái này gọi là conversation state, thực tế còn bao gồm cả
các kết nối socket, kết nối database, tham chiếu đến bean khác...
Stateless Session Bean được thiết kế để phục vụ cho nhiều client, với những session chỉ
có một request
Stateless Session Bean chỉ có 2 trạng thái:
• Does Not Exist: không có thực thể bean tồn tại trong bộ nhớ.
• Method-Ready Pool: thực thể bean có mặt trong pool, sẵn sàng phục vụ các triệu
gọi business method từ client
Stateless Session Bean yêu cầu ít resource nên còn gọi là lightweight bean.
b. Stateful Session Bean
Một phiên giao dịch giữa client và bean còn gọi là một conversation. Một Stateful
Session Bean có khả năng lưu lại trạng thái của conversation trong các biến thực thể của
lớp bean xuyên qua các request của conversation. Một ví dụ quen thuộc là shopping cart
Trang 19


Tìm hiểu các cấu trúc, qui trình hoạt động và điều hành một website bán hàng

dùng để lưu trữ các món hàng đã chọn xuyên qua hàng loạt request chọn hàng (hoặc loại
bỏ hàng đã chọn) của một session mua hàng. Như vậy, Stateful Session Bean chứa trong
nó business logic và trạng thái conversation của client.
Stateful Session Bean được thiết kế để phục vụ cho một client trong đời sống của nó
thông qua một EJB Object.
Stateful Session Bean không có khả năng tự lưu giữ (persistent) giống như entity

bean. Để lưu giữ được trạng thái của conversation như trên, Stateful Session Bean có 3
trạng thái :



Does Not Exits: không tồn tại trong bộ nhớ.
Method-Ready: sẵn sàng phục vụ các yêu cầu từ client được ủy nhiệm (delegate)



bởi EJB Object.
Passivated: thụ động, lưu trữ trạng thái của conversation, sẽ được kích hoạt
(activate) khi cần.

2.

Khi nào sử dụng Session Beans
Thông thường, một session bean được sử dụng trong các hoàn cảnh sau:
• Khi chỉ có một client kết nối tới bean tại một thời điểm
• Khi dữ liệu không còn mang tính ổn định thì bean cũng không còn tồn tại nữa
• Khi bean thực thi các dịch vụ trong web.
Stateful session beans được sử dụng khi :




Cần khởi gán khi tạo bean.
Client triệu gọi phương thức nhiều lần.
Cần lưu trữ thông tin client xuyên qua nhiều lần gọi.


Stateless session beans được sử dụng khi :



Khi bean không chứa dữ liệu của client.
Khi chỉ có một phương thức chung giữa nhiều client để thực hiện một công việc
chung.

3. Vòng đời của Session Bean
a. Vòng đời của Stateless Session Bean

Trang 20


Tìm hiểu các cấu trúc, qui trình hoạt động và điều hành một website bán hàng

EJB Container quản lý các thực thể bean. Khi cần thực thể, thực thể bean được khởi
tạo bằng cách dùng phương thức Class.newInstance() trên lớp bean. Sau đó phương thức
setSessionContext( sc ) của thực thể bean được triệu gọi để thực thể bean nhận tham
chiếu đến đối tượng SessionContext. Thực thể bean cần SessionContext để truy xuất
thông tin môi trường: identity và role của client, transaction context,… Cuối cùng
phương thức ejbCreate() không đối số của bean được EJB Container triệu gọi (chỉ một
lần trong vòng đời của bean). Lúc này bean đã ở trạng thái sẵn sàng thực hiện các yêu cầu
của client do EJB(Local) Object ủy nhiệm (delegate) đến, gọi là trạng thái Method-Ready
Pool.
Do không cần lưu trữ trạng thái giao dịch, Stateless Session Bean không quan tâm đến
việc kích hoạt (activation) bean, container không bao giờ gọi đến các phương thức
callback ejbActivate() và ejbPassivate() của nó. Ra khỏi trạng thái Method-Ready Pool,
bean sẽ rơi vào trạng thái Does Not Exits nghĩa là container không cần nó nữa. Khả năng
lưu trữ của pool là cơ sở để container thu giảm số bean ở trạng thái Method-Ready Pool

bằng phương thức ejbRemove(), giải phóng tài nguyên và hủy bean. Xem phần Instance
swapping phía dưới để hiểu rõ cơ chế.

Hình 3.6: Vòng đời của Stateless Session Beans
b. Vòng đời của Stateful Session Bean
Stateful Session Bean không dùng instance pooling. Ở trạng thái không hoạt động,
thực thể bean bị đẩy khỏi bộ nhớ một cách đơn giản trong lúc EJB Object vẫn còn giữ
liên hệ với client.
Khi phương thức create() của EJB Home được gọi, container triệu gọi phương
thức newInstance() của lớp bean để tạo một thực thể bean mới. Sau đó container triệu gọi
phương thức setSessionContext() để liên kết bean với một SessionContext dùng suốt
vòng đời của nó, lúc này bean sẽ được gán cho một EJB Object. Cuối cùng, container
triệu gọi phương thức ejbCreate()tương ứng với create() của EJB Home. Thực thể bean
bây giờ ở trạng thái Method-Ready.
Để tiết kiệm tài nguyên, khi không phục vụ client, bean có thể chuyển sang trạng thái
Passivated bằng phương thứcejbPassivate(). Bean sẽ trả lại tất cả các tài nguyên đang mở
Trang 21


Tìm hiểu các cấu trúc, qui trình hoạt động và điều hành một website bán hàng

và đặt các field thành null. Trạng thái của conversation sẽ được lưu, cách lưu trữ tùy đối
tượng.

Hình 3.7: Vòng đời của Stateful Session Bean
Khi có yêu cầu của client đối với một bean đang ở trạng thái Passivated, container sẽ
kích hoạt thực thể bean, khôi phục bean và tham chiếu SessionContext, trạng thái
conversation lưu trữ, … rồi gọi ejbActivate().

Trang 22



Tìm hiểu các cấu trúc, qui trình hoạt động và điều hành một website bán hàng

Khi phương thức của bean nhận một exception hệ thống, container không dùng EJB
Object và loại bỏ thực thể bean. Bean sẽ chuyển trực tiếp sang trạng thái Does Not Exits,
không gọi phương thức ejbRemove()

Các phương thức CallBack
a. Đối với Stateless Session Bean
• Phương thức void ejbCreate() chỉ có duy nhất một và không tham số vì không
cần khởi tạo trạng thái conversation. Session bean phải có ít nhất một phương thức
ejbCreate(). Thường rỗng do client không triệu gọi đến.
• Phương thức void ejbRemove() thường rỗng do client không triệu gọi đến.
• Phương thức void ejbPassivate() rỗng vì container không bao giờ thụ động hóa
thực thể bean.
• Phương thức void ejbActivate() rỗng vì container không bao giờ kích hoạt thực
thể bean.
4.

Trang 23


Tìm hiểu các cấu trúc, qui trình hoạt động và điều hành một website bán hàng

Phương thức void setSessionContext( SessionContext ctx ) thường rỗng vì bean
không có biến thực thể (biến lớp riêng) nên không cần lưu các tham chiếu đến các
biến đó.
b. Đối với Stateful Session Bean
• Phương thức ejbCreate() khởi gán dữ liệu thành viên, cũng là nơi lưu trữ trạng thái

conversation, cho thực thể bean. Sau khi được tạo, bean có thể ở:
 Trạng thái Method-Ready, thực hiện các business method phục vụ cho
client.
 Không cần thiết, sẽ được container chuyển thành trạng thái Passivated.
 Chuyển sang trạng thái Does Not Exist do lỗi server hoặc do người dùng
chấm dứt session.
• Phương thức ejbPassivate() sẽ được container gọi trước khi chuyển bean vào trạng
thái Passivated, lưu trữ trạng thái của conversation. Phương thức này gọi thực thể
bean để giải phóng các tài nguyên liên kết với nó. Container chuyển trạng thái của
bean thành Passivated theo nguyên tắc LRU (Least Recently Used – bean tồn tại
lâu nhất sẽ được chọn để thụ động hóa). Bean ở trạng thái Passivated có thời gian
timeout, quá thời gian này hoặc do lỗi server, bean sẽ bị loại.
• Phương thức ejbActivate() chuyển bean từ trạng thái Passivated ngược trở lại
trạng thái Method-Ready. Trạng thái của conversation đang lưu trữ sẽ được đọc lại
và bean được khôi phục trước khi container gọi ejbActivate(). Khi kích hoạt bean,
container dùng nguyên tắc JIT (Just-In-Time – tức thời).
• Phương thức setSessionContext() được container gọi để liên kết một session
context với một bean chỉ định ngay từ đầu vòng đời của bean đó.


3.2.5

Message Driven Beans

Message Driven Beans là một bean trong EJB cho phép thực hiện gởi và nhận
những thông điệp bất đồng bộ. Message Driven Bean hoạt động như một Listener cho
JMS API. Vòng đời của Message Driven Bean tương tự như stateless session bean.
Message Driven Bean là một thành phần EJB nên nó thừa hưởng được những thuộc tính
tốt của EJB như: giao tác và bảo mật. Ngoài ra, Message Driven Bean được quản lý bởi
EJB container nên việc tạo ra nhiều thể hiện bean để hỗ trợ nhiều khách hàng cùng lúc

được thực hiện bởi EJB container, đối với các hệ thống JMS bình thường thì điều này đòi
hỏi lập trình viên phải code và xử lý những thao tác phức tạp.
1. Motivations for messaging
Các thành phần của EJB được sử dụng để phát triển các ứng dụng trong mạng máy
tính phân tán. Các máy tính trong mạng máy tính phân tán sử dụng giao thức RMI-IIOP
Trang 24


Tìm hiểu các cấu trúc, qui trình hoạt động và điều hành một website bán hàng

để giao tiếp với nhau. Giao thức này sử dụng để gọi các thành phần của EJB. RMI-IIOP
chấp nhận các dạng :
• Asynchrony : Một dạng RMI-IIOP điển hình, client phải chờ cho đến khi server
xử lý xong và trả về kết quả, sau đó, client sẽ tiếp tục xử lý.
• Decoupling : RMI-IIOP server phải có thông tin về server đang sử dụng, client có
thể gửi chúng trực tiếp cho các đối tượng tham chiếu. Muốn bỏ đi server thì phải
tác động trực tiếp lên client.
• Reliability : Dữ liệu có thể mất đi hoặc client không thể thực thi bất kỳ chức năng
nào nếu server hoặc mạng(network) xảy ra lỗi.
• Support for multiple senders and receivers : Ta có thể sử dụng messaging server
: thay thế cho RMI (remote method invocation) nhưng messaging service sử dụng
bộ trung chuyển (middleman) giữa client và server. Middleman nhận thông báo từ
một hoặc nhiều sender và gửi những thông báo đó tới một hoặc nhiều receiver.
Messaging service không yêu cầu sự phản hồi ngay lập tức từ receiver. Receiver
có thể phản hồi tới sender sau khi xử lý xong.
2. Java Message Services (JMS)
JMS API là một công cụ được phat triển bởi Sun MicroSystems, được sử dụng để
phát triển các ứng dụng lớn. JMS API hổ trợ một framework cho phép phat triển các ứng
dụng một cách thuận tiện.
JMS sử dụng 2 phương thức giao tiếp : đồng bộ và bất đồng bộ, tương ứng với 2 kiểu

model : point-to-point và publish-subcribe.
JMS được cung cấp bới các nhà cung cấp lớn như : IBM,Oracle,Hewlett-Packard,BEA
Systems và Macromedia.
3. JMS API

JMS APIs đóng vai trò quan trọng trong giao thức RMI-IIOP.

Trang 25


×