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

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

Bạ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 (6.99 MB, 141 trang )



 !"!
####################
$%"
&'()**+,***( 
* -.,(  *** ).
/01$2**"

3$"453 
4.677.7)8
3$"453 9 
4.677.76)

3:;4
<=1>
 – 6/2010
NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN















Ngày….tháng….năm 2010
GVHD: Ths Nguyễn Minh Đạo
NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN














Ngày….tháng….năm 2010
GVPB:Ths Trần Công Tú
5?@
Chúng em chân thành cảm ơn Thầy Nguyễn Minh Đạo, dù rất bận rộn nhưng
luôn tận tình hướng dẫn cho chúng em trong suốt quá trình thực hiện đề tài cũng
như đã tạo mọi điều kiện tốt nhất để chúng em hoàn thành tốt đề tài tiểu luận này.
Chúng em xin chân thành cảm ơn các Thầy, Cô trường Đại Học Sư Phạm Kỹ
Thuật TP. Hồ Chí Minh đã cung cấp cho chúng em những kiến thức nền tảng và
đạo đức để chúng em có khả năng tự học và nghiên cứu.
Chúng em xin gửi lời cảm ơn sâu sắc đến quý Thầy, Cô trong khoa Công
nghệ Thông tin trường Đại Học Sư Phạm Kỹ Thuật TP. Hồ Chí Minh đã tận tình
dạy dỗ, dìu dắt, hướng dẫn chúng em suốt thời gian qua.

Chúng con cảm ơn Bố, Mẹ và những người thân đã luôn là nguồn động viên
chúng con trong thời gian học tập, nghiên cứu để có được thành quả như ngày hôm
nay.
Xin chân thành cám ơn sự giúp đỡ, động viên và chỉ bảo rất nhiệt tình của
các anh chị đi trước và tất cả bạn bè đã giúp đỡ chúng tôi trong thời gian làm bài
tiểu luận.
Mặc dù đã cố gắng nỗ lực hết sức mình, song chắc chắn luận văn không khỏi
thiếu sót. Chúng em rất mong nhận được sự thông cảm và chỉ bảo tận tình của quý
Thầy, Cô và các bạn.
TP.Hồ Chí Minh 06-2010
Nhóm sinh viên thực hiện
Lê Minh Sung – Lê Thanh Tiền
Mục lục


DANH MỤC CÁC BẢNG
DANH MỤC CÁC HÌNH
Chương 1: Mở Đầu Trang 9
Chương 1: Mở Đầu Trang 10
CHƯƠNG 1 : MỞ ĐẦU
 
Khi mà kinh tế thế giới đã phát triển và hoạt động kinh doanh của họ đã trở
nên toàn cầu hóa. Những ứng dụng của doanh nghiệp ngày càng xử lý nhiều cô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ề 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ư: JMS (Java Message Service), JavaMail, EJB
(Enterprise Java Bean)…Trong đó EJB là một đặc tả tốt nhất trong J2EE, EJB hổ
trợ mạnh việc thực hiện giao tác và bảo mật. Đi kèm với EJB là đặc tả 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. 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.
Chương 1: Mở Đầu Trang 11
 
Tìm hiểu về J2EE 5.0 tập trung tìm hiểu hai công nghệ chính là
Enterprise Java Bean (3.0) kết hợp với Java Persistence API (2.0).
Ứng dụng công nghệ vào việc xây dựng website bán điện thoại sử dụng
kết hợp với JavaServer Faces 1.2(JSF 1.2) và bộ thư viện RichFaces
3.3.2SR1 của Jboss.
  !
Tìm hiểu công nghệ J2EE 5.0 tập trung vào hai công nghệ chính là EJB
3.0 và JPA 2.0
Do thời gian có hạn nên chỉ xây dựng một số chức năng căn bản phía
khách hàng của website.
Chương 2: Cơ sở lý thuyết Trang 12
CHƯƠNG 2 : CƠ SỞ LÝ THUYẾT
 Tổng quan về J2EE
 J2EE là gì?

Java 2 Platform Enterprise Edition viết tắt là J2EE, định nghĩa một chuẩn để
phát triển những ứng dụng thương mại đa tầng (multitier enterprise applications).
J2EE platform chứa đựng những tính năng tốt của Java 2 Platform như "viết một
lần, chạy ở mọi nơi", JDBC (Java Database Connectivity) truy cập cơ sở dữ liệu,
CORBA kết hợp với những tài nguyên đã có…Được xây dựng trên nền tảng là Java
2 Platform, J2EE mở rộng hổ trợ cho nhiều công nghệ mới như Enterprise
JavaBeans, Java Servlets, JavaServer Pages và XML.
 Kiến trúc của J2EE
J2EE nền tảng sử dụng một mô hình ứng dụng phân tán đa tầng.
AB<)#7C<AB<DEFGBHIJE()**
Chương 2: Cơ sở lý thuyết Trang 13
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.
Có hai loại khách hàng (client) là: Những khách hàng ứng dụng
(application clients) và những khách hàng web (web client). Khách hàng web
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.
AB<)#)KBFELBMN=OPKQRKBMBF=
Chương 2: Cơ sở lý thuyết Trang 14
J2EE có các loại container như :
- Web Container : Quản lý sự thực thi của các thành phần web, và
container của chúng chạy trong máy chủ J2EE (J2EE server).
- EJB Container : Quản lý sự thực thi của các thành phần EJB, các
thành phần EJB và container của chúng chạy trong J2EE server.

- Application client Container : Quản lý sự thực thi các thành phần của
ứng dụng client.
- Applet Container : Quản lý sự thực thi của applets(ứng dụng ký sinh).
Các công nghệ trong J2EE :
1) Java Database Connectivity (JDBC) API: JDBC là một tập hợp các giao diệ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.
2) Remote Method Invocation (RMI): RMI là một API cho phép các đối tượng
Java để giao tiếp từ xa với các đối tượng khác.
3) Java IDL: IDL (Interface Definition Language) là một ngôn ngữ nền tảng
tiêu chuẩn khai báo độc lập được sử dụng để xác định các giao diện đối
tượng triển khai cung cấp và đối tượng khách hàng gọi. Java IDL cho phép
bất kỳ đối tượng Java để giao tiếp với các đối tượng khác trong ngôn ngữ bất
kỳ bằng phương tiện của IDL.
4) Enterprise Java Beans: Đóng gói các logic thương mại (business logic) và hổ
trợ thực hiện giao tác và bảo mật.
5) Servlets và Java Server Pages (JSP): Công nghệ dùng trong xây dựng những
ứng dụng web.
6) Java Message Service (JMS): Tập APIs cho phép ứng dụng tạo, gởi, nhận, và
đọc thông điệp bất đồng bộ.
7) Java Transaction API (JTA): JTA cho phép những ứng dụng J2EE thực hiện
những giao tác phân tán (distibuted transaction).
8) JavaMail: Cho phép thành phần java gởi và nhận mail.
9) Java API cho xử lý XML (Java API for XML Processing -JAXP): XML là
một định dạng dữ liệu cho các tài liệu thay thế cấu trúc trên Web. JAXP cho
phép các ứng dụng Java phân tích và chuyển đổi tài liệu XML. XML được
sử dụng nhiều trong J2EE như là một định dạng dữ liệu.
Chương 2: Cơ sở lý thuyết Trang 15
10) Java Naming và Directory Interface (JNDI): JNDI là một giao thức cung cấp
một tập API chuẩn cho phép truy cập tới những dịch vụ naming và directory.

11) Java Persistence API (JPA) : Cho phép ánh xạ giữa một lớp java với các cột
trong một bảng.
Chương 2: Cơ sở lý thuyết Trang 16
 "#$$%#&'#
 ()*"&'
 "&'+ ,
EJBs là các thành phần phía máy dùng để đóng gói lớp logic thương mại
(business logic) và hổ trợ mạnh việc thực hiện các giao tác và bảo mật. EJB cũng
có một tích hợp một ngăn xếp cho messaging, scheduling, remote access, web
service endpoints (SOAP and REST), dependency injection, component life
cycle, vv. Ngoài ra, EJBs còn kết hợp với các công nghệ khác của Java SE và
Java EE như JDBC, JavaMail, JPA, Java Transaction API (JTA), Java Messaging
Service (JMS), Java Authentication and Authorization Service (JAAS), Java
Naming and Directory Interface (JNDI), and Remote Method Invocation (RMI).
Ngày nay EJBs là một cách đơn giản cho các việc phát triển các mô hình
lập trình Java phía máy chủ, giảm độ phức tạp trong khi mang lại khả năng tái sử
dụng và khả năng mở rộng tới các ứng dụng thương mại quan trọng. Tất cả những
điều đạt được này đều xuất phát từ một lớp java nguyên thủy (Plain old Java
Object-POJO) sẽ được triển khai vào một thùng chứa (container).
Các loại EJB:
Session bean dùng để đóng gói logic thương mại (business logic) cấp cao
và là phần quan trọng nhất của công nghệ EJB. Các loại session bean:
- Stateless: Session bean không chứa trạng thái giao tiếp giữa các
phương thức và bất kỳ thể hiện (instance) nào của nó có thể được sử
dụng cho bất kỳ khách hàng nào.
- Stateful: Session bean có chứa trạng thái giao tiếp với khách hàng
(client) trong suốt phiên làm việc (session).
Message-driven beans (MDBs): Được sử dụng để liên kết các hệ thống
bên ngoài bằng việc nhận các thông điệp bất đồng bộ sử dụng JMS (Java
Message Service). MDBs chủ yếu được sử dụng để tích hợp các hệ thống

thông điệp hướng thành phần giữa (message-oriented middleware - MOM).
Chương 2: Cơ sở lý thuyết Trang 17
Entity Bean: Những thực thể bean kết nối với cơ sở dữ liệu thông qua ánh
xạ giữa một lớp java và một cột trong một bảng trong cơ sở dữ liệu .
 - !"&'."&'/#$0
EJB là một thành phần phía máy chủ và cần được thực thi trong một thùng
chứa (container). Môi trường thực thi này cung cấp các tính năng cốt yếu cho
nhiều ứng dụng thương mại như:
- Remote client communication: Giao tiếp khách hàng từ xa
- Dependency injection: Phụ thuộc tiêm
- State management: quản lý trạng thái
- Pooling: Hồ chứa
- Component life cycle: Vòng đời các thành phần
- Messaging: Gởi thông điệp bất đồng bộ
- Transaction management: Quản lý giao tác
- Security: Bảo mật
- Concurrency support: Hổ trợ tranh chấp
- Interceptors: Sự chặn đứng
EJB là các đối tương được quản lý. Khi một khách hàng gọi một EJB thì
nó không làm việc trực tiếp với một thể hiện của EJB đó mà là với một ủy
quyền trên một thể hiện. Mỗi lần một khách gọi một phương thức trên một
EJB, lời gọi đó thực sự được ủy nhiệm thông qua thùng chứa cung cấp các
dịch vụ đại diện cho một thể hiện của bean.
Trong một ứng dụng Java EE, thùng chứa EJB sẽ thường xuyên tương
tác với các thùng chứa khác như: thùng chứa servlet (servlet container),
thùng chứa ứng dụng khách hàng(application client container) Tất cả các
thùng chứa này sẽ chạy trong một máy chủ (GlassFish, Jboss, Weblogic, ).
 1234"&'5
6 14
- Đóng gói lớp logic thương mại: Tách biệt giữa lớp thương mại

(business) với các lớp điều khiển và hiển thị (control và presentation).
- Truy cập từ xa(remote access): Nhiều ứng dụng trên các máy chủ
khác nhau có thể truy cập đến EJB.
Chương 2: Cơ sở lý thuyết Trang 18
- Đơn giản hơn các hệ thống remote –object khác.
- ứng dụng có thể “leo thang”: Hầu hết các máy chủ J2EE đều hổ trợ
lustering, load balancing và failover.
- Hổ trợ nhiều server: JBoss, Oracle AS, WebLogic, WebSphere,
Glassfish…
7 8234
- Phức tạp: Mặc dù EJB 3.0 đơn giản hơn các hệ thống remote-object
khác những việc cài đặt một hệ thống này không phải là dễ.
o VD: Spring sẽ dễ dàng và mạnh mẽ hơn EJB cho những ứng
dụng truy cập Local.
- Yêu cầu máy chủ J2EE.
- Không hổ trợ với Tomcat, Jetty, Resin, JRun, Resin.
- Khó khăn để cấu hình và chậm trong quá trình bắt đầu hay khởi động
lại trong quá trình phát triển và kiểm lỗi, tốn tiền.
- Vì trong các phiên bản trước EJB vốn đã phức tạp nên dù đã cải tiến
cho đơn giản hơn nhưng vẩn bị coi là phức tạp.
 89 :)"&'5
 "&'+;<&<%.+<+=&<>?#%0
Trong EJB 3.0 việc tạo ra các bean đơn giản bằng cách sử dụng các
lớp POJO đơn giản.
 />@9 +)AB C
Những session bean mới sẽ chứa đựng tất cả các phương thức thương
mại bên trong các giao diện thương mại (business interface). Tùy thuộc
vào khách hàng thuộc loại cục bộ hay ở xa mà sẽ chỉ định là local hoặc
remote hay là cả hai.
Phương thức thương mại từ xa (remote business) không được phép

ném ngoại lệ java.rmi.RemoteException trong khi EJB 2.x tất cả phương
Chương 2: Cơ sở lý thuyết Trang 19
thức của giao diện Home và Object được yêu cầu thông qua
java.rmi.RemoteException. Javax.ejb.EJBException đóng gói các ngoại
lệ như các giao thức, hệ thống cấp vấn đề hay là những thùng chứa
(container) trả về cho khách hàng.
Trong EJB 2.x:
- Một (giao diện ở xa) remote interface phải extend từ
javax.ejb.EJBObject, định nghĩa các phương thức thương mại và
phải tuân thủ theo các luật của RMI-IIOP:
o Phải ném ngoại lệ java.rmi.RemoteException.
o Tất cả các thông số đầu vào phải được chuyển thành luồng
byte, và các giá trị trả về phải được chuyển thành luồng byte.
- Một giao diện tại chổ (home interface) phải extend từ
javax.ejb.ejbHOME và định nghĩa các lifecycle method.
- Một giao diện tại chổ cho stateless sesion bean phải có một
phương thức create không có tham số để khởi tạo các thể hiện của
bean.
- Lớp bean thực thiphải là public và thực thi giao diện
javax.ejb.SessionBean, và phải thực thi tất cả các phươn thức vòng
đời của giao diện javax.ejb.SessionBean.
Ví dụ định nghĩa một EJB trong vs 2.1 và 3.0:
// Remote Interface in EJB 2.x - StockQuote.java
package stockquote;
import java.rmi.RemoteException;
import javax.ejb.EJBObject;
public interface StockQuote extends EJBObject {
public double getStockQuote(String Symbol) throws RemoteException;
}
// Home Interface in EJB 2.x - StockQuoteHome.java

package stockquote;
import java.rmi.RemoteException;
import javax.ejb.EJBObject;
import javax.ejb.CreateException;
public interface StockQuoteHome extends EJBHome {
public StockQuote create() throws RemoteException,CreateException;
}
// Bean Implementation Class in EJB 2.x - StockQuoteBean.java
package stockquote;
import java.util.HashMap;
import javax.ejb.SessionBean;
import javax.ejb.SessionContext;
public class StockQuoteBean implements SessionBean {
private SessionContext context = null;
Chương 2: Cơ sở lý thuyết Trang 20
private HashMap mapSQ = null;
public void setSessionContext(SessionContext context) {
this.context = context.
}
public void ejbRemove() {
}
public void ejbActivate() {
}
public void ejbPassivate() {
}
public void ejbCreate() {
System.out.println("ejbCreate() method called");
mapSQ = new HashMap();
mapSQ.put("INFY", new Double(44.85));
mapSQ.put("SUNW", new Double(4.99));

}
public double getStockQuote(String symbol) {
double result = 0;
Object obj = mapSQ.get(symbol);
if(obj != null ) {
result = ((Double) obj).doubleValue();
}
return result;
}
}
Triển khai Descriptor trong EJB 2.x: META-INF \ ejb-jar.xml
<ejb-jar>
<enterprise-beans>
<session>
<ejb-name>StockQuoteEJB</ejb-name>
<home>stockquote.StockQuoteHome</home>
<remote>stockquote.StockQuote</remote>
<ejb-class>stockquote.StockQuoteBean</ejb-class>
<session-type>Stateless</session-type>
<transaction-type>Container</transaction-type>
</session>
</enterprise-beans>
</ejb-jar>
Trong EJB 3.0:
Chương 2: Cơ sở lý thuyết Trang 21
// Business Interface in EJB 3.0 - StockQuote.java
package stockquote;
import javax.ejb.Remote;
@Remote
public interface StockQuote {

public double getStockQuote(String Symbol);
}
// Bean Implementation Class in EJB 3.0 - StockQuoteBean.java
package stockquote;
import javax.ejb.Stateless;
@Stateless
public class StockQuoteBean implements stockquote.StockQuote {
private HashMap mapSQ = null;
public StockQuoteBean() {
mapSQ = new HashMap();
mapSQ.put("INFY", new Double(44.85));
}
public double getStockQuote(String symbol) {
double result = 0;
Object obj = mapSQ.get(symbol);
if(obj != null ) {
result = ((Double) obj).doubleValue();
}
return result;
}}
 DE= F//%G/H
 D#%%/'#
Session Bean là một thành phần được thiết kế để đóng gói các dịch vụ
thương mại (business services). Khách hàng không tương tác trực tiếp với thể hiện
bean mà tham chiếu thông qua giao diện cung cấp bởi máy chủ. Sự tách biệt giữa
khách hàng với bean này cho phép máy chủ chặn những lời gọi hàm từ phía khách
hàng và cung cấp những dịch vụ yêu cầu của bean (ví dụ như quản lý giao tác). Nó
cũng cho phép dùng lại những thể hiện cần thiết.
Ví dụ:
Một khách hàng bất cứ khi nào muốn thực hiện bất kỳ những hành

động nào như một việc đặt phòng hoặc phê chuẩn một thẻ tín dụng, một
Session Bean nên được sử dụng. Session Bean quyết định dữ liệu nào sẽ
Chương 2: Cơ sở lý thuyết Trang 22
được sửa đổi. Thông thường, các Session Bean sử dụng một entity bean truy
cập hoặc sửa đổi dữ liệu. Nó sẽ cài đặt logic thương mại, thuật toán và luồng
công việc. Một session bean tương đối ngắn. Các thùng chứ EJB có thể hủy
một session bean nếu quá thời gian (time out).
Hình 2-3 Minh họa Session bean tương tác với khách hàng
Có 2 loại session bean là: Stateless và Stateful.
Chương 2: Cơ sở lý thuyết Trang 23
 D#+#%%%#%%/>#
Một stateless không duy trì trạng thái giao tiếp với khách hàng. Khi một
khách khẩn gọi một phương thức của stateless session bean các thể hiện của
bean có thể chứa các trạng thái của khách hàng trong suốt phiên làm việc nhưng
khi phiên làm việc kết thúc thì thùng chứa EJB sẽ hủy các trạng thái. Loại
session bean này chia sẽ các thể hiện bean giữa các khách hàng nên nó rất có
hiệu quả cho những ứng dụng lớn hàng ngàn khách hàng. Sự tương tác giữa
khách hàng và bean kết thúc trong một lời khẩn gọi hàm (request).
 Các trường hợp dùng Stateless
o Không chứa dữ liệu cho một client cụ thể.
o Nếu chỉ có một phương thức thực hiện chung cho tất cả các khách hàng.
Thùng chứa EJB sẽ tạo ra Pool (hồ chứa) chứa các thể hiện của Stateless
sesion bean và sẽ lựa chọn một cách ngẫu nhiên một thể hiện để phục vụ mỗi
yêu cầu của khách hàng. Vì vậy giữa những yêu cầu của khách hàng có thể
được thực hiện bởi những thể hiện bean khác nhau.
Hình 2-4 Stateless session bean pooling
 Vòng đời của Stateless session bean
Chỉ có hai trạng thái là “KM=BKFMSL=F” và “METU”:
Chương 2: Cơ sở lý thuyết Trang 24
Hình 2-5 Stateless life cycle

1) Một statelesss session bean bắt đầu khi một khách hàng lần đầu tiên
yêu cầu tham chiếu tới bean (dependency injection hay JNDI lookup).
2) Nếu một thể hiện mới được tạo ra sử dụng phụ thuộc tiêm (dependency
injection) thông qua annotation (@Resource, @EJB,
@PersistenceContext, etc…) hoặc trong tập tin triển khai mô tả
(deployment descriptors), thùng chứa EJB tiêm những tài nguyên cần
thiết khi khởi tạo các thể hiện bean.
3) Nếu thể hiện có phương thức chỉ định @PostContruct thì sẽ được khẩn
gọi.
4) Thể hiện bean xử lý các khẩn gọi của khách hàng và ở trong trạng thái
ready để sẳn dàng cho các khẩn gọi sau.
5) Thùng chứa EJB gọi phương thức @PreDestroy để kết thúc vòng đời
của bean.
 D#I+%#%%/>#
Loại bean này sử dụng những biến thực thể cho phép bảo tồn dữ liệu thông
qua những lời gọi phương thức. Stateful session bean sẽ khôi phục lại trạng thái
của cùng một khách hàng qua những session. Nếu một khi mà khách hàng gỡ bỏ
Chương 2: Cơ sở lý thuyết Trang 25
(remove) Bean hoặc quá thời gian thì session sẽ chấm dứt và trạng thái sẽ mất.
Loại Bean này hữu dụng khi thực hiện những tác vụ có nhiều bước và những
bước nhờ vào kết quả của các bước trước.
Ví dụ:
Khi giao dịch với thẻ ghi nợ ATM, các máy ATM có thể thực hiện
các giao dịch khác nhau như: kiểm tra tài khoản, rút tiền… Những thao tác
này phải được thực hiện từng bước bởi cùng một khách hàng. Vì vậy bean
cần phải giữ dấu những thao tác này. Vì vậy trong trường hợp này thì stateful
thì thích hợp hơn stateless.
 Quản lý trạng thái: (State management)
Hình 2-6 Quá trình chuyển bean sang trạng thái thụ động (Passived)

×