Thiết kế là quá trình mở rộng của pha phân tích bằng việc ta thêm vào đó những khía
cạnh kỹ thuật. Mục đích của thiết kế là xác định một giải pháp để dễ dàng cho việc mã hoá,
cũng như những yêu cầu kỹ thuật, công nghệ đặc trưng cho ứng dụng. Vì ở đây ứng dụng
được xây dựng theo hướng thành phần (Component), theo đặc tả J2EE. Trước tiên từ pha
phân tích ta xây dựng nên các thành phần thuộc tầng nghiệp vụ (business tier). Các thành
phần này có chức năng lưu trữ dữ liệu, tính toán, xử lý nghiệp vụ. Trong tầng này của ứng
dụng này ta xây dựng các Entity Bean, Session Bean. Với EJB phiên bản 1.x chưa đưa
loại Message Driver Bean vào. Dựa vào pha phân tích ta xác định th ành phần nào là Entity
Bean, thực hiện việc lưu trữ dữ liệu, thành phần nào là Session Bean, thực hiện các thao tác
tính toán, x ử lý, không liên quan đến việc lưu trữ dữ liệu.
Trước khi đi vào thiết kế chi tiết thành phần, ta phải thiết kế kiến trúc, đây là giai đoạn
thiết kế ở mức cao. Thiết kế kiến trúc ta sẽ chọn kiến trúc MVC- Model-View-Controller.
Kiến trúc tổng quát này được trình bày nh ư hình dưới đây.
71 trang |
Chia sẻ: oanh_nt | Lượt xem: 2443 | Lượt tải: 4
Bạn đang xem trước 20 trang tài liệu Đồ án Xây dựng ứng dụng J2EE với Rational Rose và UM, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
ity diagram là một biểu đồ tiến trình (flowchart). Lược đồ hoạt động và lược đồ
trạng thái có quan hệ với nhau. Khi lược đồ trạng thái tập trung vào một đối tượng thông
qua một quá trình, lược đồ hoạt động tập trung vào luồng hoạt động liên quan đến một tiến
trình đơn. Lược đồ hoạt động biểu diễn có nhiều hoạt động này phụ thuộc vào nhiều hoạt
động khác.
Ví dụ chúng ta sử dụng theo tiến tình:"Rút tiền ra khỏi ngân hàng thông qua ATM "
Ba lớp liên quan đến hoạt động Customer, ATM, và Bank.Tiến trình bắt đầu ở hình
tròn đen đầu tiên phía trên và kết thúc ở hình tròn trắng trọng tâm là màu đen phía dưới.
Lược đồ hoạt động có thể phân chia thành đối tượng swimlanes để xác định đối tượng
nào liên quan đến hoạt động này. Một chuyển đổi (transition) đơn giản ra khỏi hành động
để kết nối đến hành động khác.
Một chuyển đổi có thể tách ra thành hai hay nhiều chuyển đổi riêng biệt qua lại. Biểu
thức chắn (Guard expressions) bên trong dấu [] chuyển đổi ra khỏi một nhánh. Một nhánh
và nhánh kế tiếp của nó kết hợp để đánh dấu nhánh cuối xuất hiện trong lược đồ dưới dạng
hình thoi rỗng.
Một chuyển đổi có thể phân nhánh thành hai hay nhiều hoạt động song song. Sự phân
nhánh và sự kết hợp các tiểu trình tiếp theo ra khỏiphân nhánh xuất hiện trong lược đồ như
thanh rắn.
Đồ án tốt nghiệp - Xây dựng ứng dụng J2EE với Rational Rose và UML
Trang 22
Hình 1.22: lược đồ hoạt động
Đồ án tốt nghiệp - Xây dựng ứng dụng J2EE với Rational Rose và UML
Trang 23
CHƯƠNG 2
GIỚI THIỆU VỀ J2EE
(Java 2 Platform Enterprise Edition)
2.1. Giới thiệu sơ lược về J2EE System
J2EE là nền để phát triển các ứng dụng phần mềm phân tán của hãng. Từ lúc bắt đầu
của ngôn ngữ java, nó đã thích nghi và phát triển tốt. Ngày càng nhiều công nghệ đã trở
thành một phần của nền Java, các API và các chuẩn mới được phát triển đến nhiều địa chỉ
cần thiết. Sau cùng, Sun và 1 nhóm nhà lãnh đạo công nghiệp, dưới sự bảo trợ của open
Java Community Process(JCP) hợp nhất tất cả các chuẩn liên quan đến hãng vào nền J2EE
Một hệ thống J2EE về tổng quát có thể bao gồm 3 máy logic như sau: máy dùng cho
Client, máy J2EE Server, máy dùng cho Database Server. Xét về các lớp để xây dựng ứng
dụng thì bao gồm 4 lớp chính: client tier, web tier, business tier và EIS tier.(hình 2.1)
Hình 2.1:tổng quát các máy logic của J2EE
Client tier:
Application clients: là ứng dụng client thực thi trên máy client (logic) và chuẩn bị
trước một số cách thức để cho user có thể giao tiếp hệ thống J2EE để thực hiện một công
việc nào đó. Cách thức giao tiếp có thể là thông qua giao diện đồ họa hoặc dòng lệnh.
Application client có thể truy xuất trực tiếp đến các EJB của lớp Business hoặc có thể
thể thiết lập một kết nối HTTP đến các servlet của lớp Web.
Web Browsers: là môi trường để thực thi các ứng dụng trên web của máy logic client
Applets: cũng là một hình thức của application client nhưng được thiết kế để được
download xuống và thực thi trên Java VM của Web Browser, do đó khả năng của Applet
được khống chế bởi Web Browser.
Đồ án tốt nghiệp - Xây dựng ứng dụng J2EE với Rational Rose và UML
Trang 24
JavaBeans component: client cũng có thể bao gồm một số JavaBean để quản lý dòng
data giao tiếp giữa các application client hoặc applet để giao tiếp với các component thực
thi trên J2EE server.
Sau đây là sơ đồ giao tiếp giữa Client tier và J2EE server:
Hình 2.2: sơ đồ giao tiếp giữa Client tier và J2EE server
Web tier:
Bao gồm các trang JSP và các servlet và có thể có các JavaBean để quản lý các dòng
dữ liệu giữa các web components và business tier của hệ thống J2EE.
Hình2.3:sơ đồ tầng Web tier
Business tier:
Business tier là một lớp logic dùng để thực hiện việc xử lý của hệ thống J2EE server.
Đồ án tốt nghiệp - Xây dựng ứng dụng J2EE với Rational Rose và UML
Trang 25
Hình2.4: sơ đồ tầng Business tier.
Hình vẽ minh họa cho ta thấy 1 Enterprise Bean có thể nhận dữ liệu từ client, xử lý nó
(nếu cần thiết) và gửi nó đến EIS tier (Enterprise Information System tier) để lưu trữ. 1
Enterprise Bean cũng có thể nhận dữ liệu từ EIS tier, xử lý dữ liệu đó (nếu cần thiết) và
sau đó là gửi nó trở lại các chương trình client.
Có 3 loại Enterprise Bean: session bean, entity bean, message-driven bean.
Session Bean thể hiện cho một phiên dao dịch với client, với 1 client sẽ có 1 instance
của session bean tương ứng, và instance này có thể lưu giữ các thông tin của client đó. Tuy
nhiên, khi phiên giao dịch kết thúc (client kết thúc việc thực thi), các instance này cũng sẽ
bị hủy. Ngược lại với session bean, entity bean có thể lưu giữ lâu dài các thông tin về
client. Còn message-driven bean là sự kết hợp giữa sesssion bean và JMS message listener.
Enterprise Information System tier (EIS tier):
Lớp này thực hiện việc lưu trữ dữ liệu cho hệ thống J2EE, bao gồm cả các interface để
giao tiếp với các Database khác nhau, và giữa các OS khác nhau trong việc quản lý và lưu
trữ file…
Kiến trúc tổng thể của một hệ thống J2EE:
EJB container (Enterprise JavaBean container) quản lý việc thực thi của tất cả các
enterprise bean cho một ứng dụng J2EE. Các enterprise bean và container của nó đều được
chạy trên J2EE server.
Web container quản lý và thực thi của tất cả các trang JSP và các servlet cho một ứng
dụng J2EE. Các web component và container của nó đều được chạy trên J2EE server.
Application client container quản lý và thực thi của tất cả các thành phần application
client cho một ứng dụng J2EE. Các application client và container của nó đều được thực
thi trên máy client.
Applet container chính là web browser (có các Java Plug-in) chạy trên máy client.
Đồ án tốt nghiệp - Xây dựng ứng dụng J2EE với Rational Rose và UML
Trang 26
Hình 2.5:kiến trúc tổng thể của hệ thống J2EE.
2.2. Giới thiệu dịch vụ JNDI (Java Naming and Directory Interface)
JNDI là dịch vụ đăng ký và truy tìm tên đối tượng chuẩn. Enterprise JavaBeans dựa
vào JNDI để truy tìm các thành phần phân tán thông qua mạng. JNDI là một công nghệ
chính yếu được yêu cầu cho mã khách kết nối đến một thành phần EJB.
Cách lấy một tham chiếu tới một home object thông qua dịch vụ JNDI được trình bày
ở hình 2.6 như sau:
Hình 2.6: lấy một tham chiếu đến một home object (Acquiring a reference to a home
object)
Đồ án tốt nghiệp - Xây dựng ứng dụng J2EE với Rational Rose và UML
Trang 27
Hệ thống JNDI
Là một service trong hệ thống J2EE phục vụ cho việc đặt tên của các Object, trong đó
1 object ta có thể xem như là module, một service để thực hiện một chức năng nào đó. Với
1 object có thể có nhiều tên được tham khảo đến. Thông qua JNDI, client hoặc EJB có thể
truy xuất đến object thông qua tên mà không cần quan tâm object đó nằm ở đâu trên mạng
(khái niệm tương tự như việc đánh tên cho địa chỉ IP).
Hình 2.7: sơ đồ client truy xuất đốI tượng thông qua tên
Một hệ thống JNDI bao gồm 3 phần chính yếu sau: lookup services, service providers,
và clients.
Trong đó lookup services đóng vai trò trung tâm, nó là cầu nối giữa service providers
và clients. Lookup services có nhiệm vụ quản lý các dịch vụ mà service providers cung
cấp, service providers cung cấp các dịch vụ cho hệ thống JNDI, còn clients là người sử
dụng các dịch vụ, sẽ kết hợp các dịch vụ với nhau để thực hiện một công việc nào đó.
Khi một service provider “muốn” đưa ra một dịch vụ nào đó thì nó phải đăng ký dịch
vụ đó với lookup services. Khi một client muốn dùng một dịch vụ nào đó của hệ thống thì
nó sẽ phải “đề xuất yêu cầu” với lookup service, và các dịch vụ của hệ thống có thể phục
vụ cho client khi được lookup service cho phép.
Quá trình đăng ký một dịch vụ của service provider với lookup service được thực hiện
như sau (quá trình discovery): đầu tiên service proveider cần thông báo cho lookup service
biết ý định của mình bằng cách gửi broadcast một presence announcement packet (dùng
một well-known port). Khi loopkup service nhận được một presence announcement packet
(một packet có tính chất thông báo), nó sẽ mở ra và phân tích packet này và lấy các thông
tin về service provider và service mà service provider muốn cung cấp. Nếu lookup services
chấp nhận service này thì nó sẽ mở cầu nối TCP đến IP và port do presence announcement
packet cung cấp để gửi đến đó một Object, object này được gọi là service registrar. Mục
đích của service registrar object là để tạo sự dễ dàng trong việc giao tiếp giữa service
providers và lookup services trong quá trình đăng ký service.
Khi lookup service chấp nhận một service mới bằng cách gửi lại cho service providers
một service registrar object, thì quá trình đưa một service vào lookup service được thực
hiện như sau (quá trình join): service providers sẽ gọi hàm registrer() của service registrar
object với thông số là một object, object này gọi là service item, nó chứa tất cả các thông
tin cần thiết cho một dịch vụ cần đưa vào hệ thống JNDI. Khi quá trình đưa Service Item
vào lookup service kết thúc thành công thì ta có thể coi như quá trình đưa một service mới
vào hệ thống JNDI thành công.
Service Item có bản chất là một container và nó chứa một số các Object khác, trong đó
chính yếu nhất là một object được đặt tên là service object. Đây là object mà thông qua đó,
client có thể tương tác với service. Ngoài ra, service item còn chứa một số các Object
thuộc tính khác như icon, GUIs… của service.
Đồ án tốt nghiệp - Xây dựng ứng dụng J2EE với Rational Rose và UML
Trang 28
Trong service registrar object cũng còn có một method có tên là lookup() dành cho
client để yêu cầu lookup service kiểm tra tính tồn tại của 1 hoặc 1 số service trong hệ thống
JNDI. Và method này trả về service object cho client. Khi client gọi một method trong
service object thì service object đó sẽ kết nối trực tiếp với service provider tương ứng để
thực thi method (thông qua RMI)
Trong J2EE, JNDI được sử dụng bởi client để nhận ConnectionFactory object. Có 2
loại kỹ thuật có thể dùng được cho JNDI lookup của ConnectionFactory Object:
Dựa trên cơ sở của kỹ thuật Serialication: sử dụng java.io.Serializable. Application
server/component tạo ra một instance ManagedConnectionFactory. Instance này được cấu
hình bằng cách sử dụng các thông tin được lưu trong 1 file cấu hình theo cú pháp của
XML (các thông tin về server name, port, gateway…). Bước kế tiếp là server/component
tạo ra và thiết lập cấu hình cho một instance của ConnectionManager và truyền instance
này đến method createConnectionFactory của ManagedConnectionFactory object. Khi
server/component thực hiện JNDI loookup thì nó sẽ trả về 1 ConnectionFactory object để
sử dụng cho Connection này.
Dựa trên cơ sở của kỹ thuật Referenceable: sử dụng
javax.naming.spi.ObjectFactory và javax.naming.Referenceable. Application/Component
tạo ra một Reference object. Reference này chứa tất cả các thông tin mà application
server/component cần để tạo và cấu hình cho một ManagedConnectionFactory tương ứng.
Reference này có thể chứa cặp / được sử dụng để nhận
các đặt tính của factory, reference cũng có thể là một chuỗi nhị phân chứa các thông số
dùng để thiết lập cho ManagedConnectionFactory. Method getObjectInstance sẽ được gọi
khi component thực hiện thao tác loookup của ConnectionFactory.
Để loookup 1 object from naming service, ta sử dụng Context.lookup() với thông số là
tên của object mà ta muốn nhận
2.3. Giới thiệu về JDBC (Java Database Connectivity)
JDBC là một chuẩn mở rộng của Java cho việc truy cập dữ liệu, mà cho phép người lập
trình Java mã hóa đến giao diện lập trình ứng dụng cơ sở dữ liệu quan hệ đồng nhất. Bằng
cách dùng JDBC, người lập trình Java có thể trình diễn việc kết nối cơ sỡ dữ liệu, xuất các
câu lệnh SQL, kết quả của việc xử lý cơ sở dữ liệu, và nhiều cách linh động liên quan khác.
Clients lập trình đến JDBC API đồng nhất, cái này được thực hiện bởi trình điều khiển
JDBC (JDBC Driver), một trình điều hợp mà biết cách làm thế nào giao tiếp đến cơ sở dữ
liệu với cách độc quyền. JDBC tương tự như chuẩn ODBC(Open Database Connectivity),
và cầu nối thông qua hai thành phần thao tác khá tốt là JDBC-ODBC. JDBC 2.0 chứa sự
hỗ trợ cho sự thăm dò kết nối cơ sở dữ liệu, tăng sự độc lập cơ sở dữ liệu đối với mã ứng
dụng của bạn.
Đồ án tốt nghiệp - Xây dựng ứng dụng J2EE với Rational Rose và UML
Trang 29
Hình 2.7: kết nốI cơ sở dữ liệu qua cầu nốI JDBC (Java Database Connectivity)
2.4. Giới thiệu về RMI (Remote Method Invocation)
Mục đích là để tạo ra một Java distributed object model. Trong kiến trúc của RMI, có
một yếu tố khá quan trọng mà ta cần phải xác định rõ ràng, đó là việc định nghĩa ra các
method và việc thực thi các method đó là hoàn toàn khác nhau. RMI cho phép ta định
nghĩa 1 method với mã thực thi của nó trên 1 JVM (Java Virtual Machine) và có thể gọi để
thực thi method đó trên một JVM khác.
Hình 2.8: gọi thực thi phương thức thông qua RMI
RMI Architecture Layers: kiến trúc của RMI có thể phân vào 3 lớp sau:
Stub and Skeleton layer: lớp này có nhiệm vụ giao tiếp trực tiếp với chương
trình ứng dụng, tiếp nhận các lời gọi method của server từ client.
Remote Reference layer: lớp này quản lý các tham khảo được thiết lập từ
client đến remote object service trên server. Đây cũng là lớp dùng để thiết lập kết nối từ
client đến remote object service trên server.
Transport layer: thiết lập kết nối TCP/IP giữa các máy với nhau trên mạng để
truyền dữ liệu khi lớp Remote Reference yêu cầu.
Kiến trúc 3 lớp của RMI được thể hiện như hình vẽ sau:
Đồ án tốt nghiệp - Xây dựng ứng dụng J2EE với Rational Rose và UML
Trang 30
Hình 2.9: sơ đồ kiến trúc ba lớp của RMI
Làm thế nào một client có thể tìm ra một RMI remote service?
Client tìm remote service thông qua việc sử dụng naming or directory service, (1
naming or derectory service được chạy trên một well-known host và port). Trên máy host,
1 chương trình server tạo ra một remote service bằng cách: đầu tiên nó tạo ra một local
object để thực thi service đó, sau đó nó export object đó đến RMI. Khi một object được
export, RMI tạo ra một listening service để chờ client kết nối đến. Sau quá trình export,
server đăng ký object đó trong RMI với một public name và public name này có thể được
client sử dụng để kết nối với object tương ứng.
RMI (Java Remote Method Invocation) system là một cơ cấu cho phép 1 object trên 1
JVM (Java Virtual Machine) gọi method của 1 object trên 1 JVM khác. Bất kỳ các object
có method có thể được gọi “từ xa” đều phải thực thi (implement) interface
java.rmi.Remote. Khi 1 object được gọi, các giá trị truyền cho method được gửi từ JVM
cục bộ (JVM có chứa chương trình phát sinh lời gọi remote method) đến JVM chứa object
có method đó và kết quả trả về được gửi về lại cho JVM cục bộ.
Để tạo nên 1 remote object, chương trình phải đăng ký object đó với RMI registry.
Chương trình phải cung cấp 1 cái tên cho object đó khi đăng ký. Khi một chương trình nào
đó muốn truy xuất đến 1 remote object, nó phải cung cấp cho RMI system tên của object
mà nó muốn truy xuất và hệ thống sẽ trả về cho chương trình 1 reference đến remote object
đó (gọi là stub). Khi chương trình nhận được stub của 1 remote object thì nó có thể gọi các
method của remote object đó có trong stub.
Chuỗi tên của 1 object được RMI register chấp nhận phải có cú pháp như sau
“rmi:hostname:port/remoteObjectName” trong đó hostname và port chỉ định máy và port
mà trên đó RMI registry đang chạy, và remoteObjectName là tên của remote object được
đăng ký. Chú ý rằng, hostname, port và tiếp đầu ngữ rmi là tuỳ chọn. Nếu hostname không
được đặt tả thì giá trị default là localhost, giá trị default của port là 1099.
RMI được hỗ trợ bởi việc sử dụng Java Remote Method Protocol (JRMP) và Internet
Inter-ORB Protocol (IIOP). JRMP là đặt tả giao thức được thiết kế cho RMI, còn IIOP là
giao thức chuẩn cho việc giao tiếp giữa các CORBA object. RMI trên IIOP cho phép các
Java remote object không chỉ giao tiếp với các CORBA object viết bằng Java mà còn bằng
bất kỳ ngôn ngữ khác.
2.5.Tổng quan về Enterprise JavaBean(là thành phần chính trong đặc tả J2EE)
Enterprise JavaBean là mô hình lập trình ứng dụng đa tầng. Cấu trúc EJB là cấu trúc
Component để phát triển và triển khai các ứng dụng nghiệp vụ phân tán. Các ứng dụng
được viết với cấu trúc EJB có thể bảo mật đa người dùng, chia mức và thực hiện giao tác.
Những ứng dụng này có thể được viết một lần sau đó được triển khai trên bất kỳ nền
server nào mà hỗ trợ đặc tả EJB.
Môi trường mà các đối tượng Bean sẽ hoạt động gọi là trình chứa (Container). Các
trình chứa sẽ kiểm soát việc khởi tạo, cung cấp tài nguyên cho đối tượng, lưu trữ phục hồi
đối tượng.
Đồ án tốt nghiệp - Xây dựng ứng dụng J2EE với Rational Rose và UML
Trang 31
EJB server cung cấp các dịch vụ hệ thống và quản lý Container(hình 2.10). EJB server
có khả năng cung cấp các dịch vụ giao tác và dịch vụ đăng ký và truy tìm tên đối tượng
(JNDI-Java Naming and Directory Interface). EJB object bao bọc các thể hiện bean. Nó
được sinh ra bởi các tiện ích của nhà cung cấp EJB Container. EJB object cài đặt remote
interface của bean.
Hình 2.10 Quan hệ giữa EJB server và EJB container
EJB home gần giống với EJB object, nó được tự động sinh ra khi cài đặt enterprise
bean trong Container. Nó cài đặt các phương thức được định nghĩa bởi home interface và
chịu trách nhiệm hỗ trợ container quản lý vòng đời bean. Kết hợp với EJB container, EJB
home chịu trách nhiệm tạo, đặt, và loại bỏ enterprise bean. Khi phương thức tạo được gọi
trên home interface thì EJB home tạo một thể hiện của EJB object mà tham chiếu tới thể
hiện bean có kiểu tương ứng. Khi thể hiện bean được kết hợp với EJB object thì phương
thức ejbCreate() tương ứng của thể hiện đó sẽ được gọi. Khi hoàn thành phương thức
ejbCeate(), EJB home trả lại tham chiếu remote tới client cho EJB object. Sau đó client có
thể làm việc trực tiếp với EJB object bằng các phương thức nghiệp vụ.
Để cài đặt Enterprise JavaBean, chúng ta cần hai định nghĩa interface và một hoặc hai
lớp: Home interface: định nghĩa phương thức vòng đời của bean: tạo một thể hiện bean
mới, loại bỏ bean, và tìm kiếm bean.
Remote interface: để định nghĩa các phương thức nghiệp vụ, (mở rộng javax.ejb.
EJBObject-đối tượng này lại là mở rộng của java.rmi.Remote).
Bean class: cài đặt các phương thức nghiệp vụ của bean, không cài đặt các phương
thức của home interface và remote interface.
Primary key: là một lớp cực kỳ đơn giản, cung cấp con trỏ tới cơ sở dữ liệu. Chỉ bean
thực thể(entity bean) mới cần primary key.
Hoạt động: client không bao giờ tương tác trực tiếp với lớp bean mà nó luôn luôn sử
dụng các phương thức giao tiếp home interface và remote interface của bean để thực hiện
công việc của nó. Client sử dụng dịch vụ JNDI tham chiếu tới lớp chủ. Lớp chủ sẽ triệu gọi
phương thức tạo ra tham chiếu đến lớp giao tiếp của bean rồi trả về trình khách. Trình
Đồ án tốt nghiệp - Xây dựng ứng dụng J2EE với Rational Rose và UML
Trang 32
khách triệu gọi bean thông qua lớp giao tiếp trung gian mà do lớp chủ trả về. Lớp trung
gian này là giao tiếp giữa trình chứa Container và đối tượng bean thực sự.
Như ta đã giới thiệu ở trên, enterprise bean là một thành phần phần mềm ở phía Server
mà có thể triển khai trong một môi trường phân tán. Một enterprise bean có thể gồm một
hay nhiều các đối tượng java tại vì một thành phần có thể là nhiều hơn một đối tượng đơn
giản.
Có các loại Bean:(Type of Beans)
Session Beans:(Bean thao tác) chỉ có nhiệm vụ phục vụ trình khách trong một phiên
kết nối. Bean thao tác chỉ thực hiện các hành vi xử lý, tính toán đơn thuần không đòi hỏi
đến việc thể hiện dữ liệu. Các Session bean có thể dùng bởi một máy khách tại một thời
điểm, chúng không chia xẻ cho các máy khách khác. Khi máy khách đang dùng một
session bean máy khách đó là máy khách duy nhất giải quyết session bean đó. Điều này
trái ngược với entity bean, trạng thái của nó được chia xẻ giữa các máy khách với nhau.
Trong session bean được chia làm hai loại: Stateful Session Bean và Stateless Session
Bean:
Stateful Session Bean: là các thành phần bean cần lưu lại kết quả hay vị trí giao dịch
trước đó để phục vụ cho các lần giao dịch tiếp theo - thường phục vụ cho những thao tác
đòi hỏi qua nhiều bước triệu gọi trước khi trả về kết quả cuối cùng.
Stateless Session 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 lại cho lần giao dịch sau.
Session beans quản lý các xử lý nghiệp vụ. Các session bean có thể sử dụng entity
beans để thể hiện dữ liệu mà chúng dùng. Một điểm khác biệt giữa Session Bean và Entity
Bean là: Entity Bean có vòng đời lâu hơn Session Bean nhiều. Khi ứng dụng Server bị sự
cố thì Entity Bean có thể được xây dựng lại trong bộ nhớ bằng cách đơn giản là đọc lại dữ
liệu từ cơ sở dữ liệu bền vững.
Entity Bean:
Một phần cơ bản khác của một nghiệp vụ là bền vững dữ liệu mà xử lý nghiệp vụ sử
dụng. Entity Bean chính là một thành phần mà đại diện cho bền vững dữ liệu. Entity Bean
không chứa xử lý nghiệp vụ logic.
Có hai loại bean thực thể (entity bean)
Bean thực thể tự quản lý(Bean – Managed Persistent Entity Beans): là các thành
phần bean có khả năng tự truy vấn các hệ cơ sở dữ liệu để lấy về dữ liệu nó thể hiện. BMP
(Bean Managed Persistent) có những ưu điểm: mình có thể viết mã cho các phương thức,
nhất là các phương thức thao tác với nhiều bảng dữ liệu cùng một lúc. Đồng thời sẽ tiện
hơn khi tạo mới dữ liệu, vì ta có thể sử dụng định dạng sequence – tăng tự động chỉ số id
trong bảng dữ liệu. Nhưng có một nhựơc điểm là sẽ tốn thời gian để viết, mà chính ta viết
thì có thể bị lỗi.
Bean thực thể quản lý bởi trình chứa: (Container –Managed Persistent Entity Beans)
Là các thành phần bean không cần sử dụng lệnh SQL để tìm kiếm hay tạo mới dữ liệu
mà chỉ cần khai báo các tên trường hay cột dữ liệu tương ứng với các bảng trong hệ
CSDL. Trình chứa sẽ tự động thực hiện công việc truy vấn dữ liệu giúp thành phần bean.
CMP(Container – Managed Persistent) lại có một ưu điểm rất lớn là chúng ta không phải
viết mã, trình chứa đã thực hiện điều này. Và như thế chương trình không bao giờ có lỗi.
Nhưng nó lại bất lợi ở chỗ: trường primary key có kiểu java.math.BigDecimal nên không
tận dụng được định dạng sequence của cơ sở dữ liệu. Hơn nữa, khi chúng ta cần thao tác
Đồ án tốt nghiệp - Xây dựng ứng dụng J2EE với Rational Rose và UML
Trang 33
với nhiều bảng cùng một lúc(có sự join giữa các bảng) thì sẽ phức tạp hơn- cần viết thêm
lớp bean kết nối hai thực thể bean của hai bảng dữ liệu kia.
Message – driven bean: xử lý các thông điệp ( message một cách không đồng bộ. Nó
tương tự như stateless session bean ở chỗ nó không lưu trữ trạng thái giao dịch. Điểm khác
với Session và Entity Bean là client không thể truy cập chúng qua interface. Message –
driven bean chỉ là một lớp bean, không có interface. Chỉ cần một bean này nó vẫn có thể
xử lý nhiều message từ nhiều hoặc một client. Bean này là một khối mã ứng dụng mà có
thể thực hiện khi message đến.
2.6. Phát triển các thành phần: (Developing Beans)
The Enterprise Bean class:
Đặc tả EJB định nghĩa vài giao tiếp chuẩn mà lớp bean có thể thực hiện. Sức mạnh
giao tiếp của lớp bean là trình bày các phương thức đảm bảo mà tất cả các beans phải cung
cấp, như đã định nghĩa bởi mô hình thành phần EJB. Trình chứa gọi những phương thức đã
yêu cầu để quản lý các bean và thay đổi bean đến các sự kiện quan trọng.
Hầu hết các giao tiếp cơ bản của các lớp bean (cả session và entity bean) phải thực hiện
là:
public interface javax.ejb.EnterpriseBean extends java.io.Serializable
{
}
Source 3.1 javax.ejb.EnterpriseBean interface
The EJB object:
Khi một máy khách muốn dùng một thể hiện của một lớp enterprise bean, máy khách
đó không bao giờ triệu gọi phương thức đó một cách trực tiếp. Nói đúng hơn là sự viện cầu
bị ngăn chặn bởi trình chứa EJB và rồi chuyển giao cho thể hiện của bean. Trình chứa EJB
đang hoạt động như một tầng gián tiếp giữa mã khách và bean. Tầng gián tiếp này biểu
hiện như một đối tượng đơn nhận biết mạng, được gọi là EJB object. EJB object là một đối
tượng đại diện mà nhận biết về mạng, giao tác, an ninh …Nó là một đối tượng thông minh
biết làm thế nào để thực hiện logic trung gian các yêu cầu tới trình chứa EJB trước khi một
lời gọi phương thức được phục vụ bởi một thể hiện của lớp bean. Một EJB object hoạt
động hàn gắn giữa máy khách và thành phần bean, và nó trình bày mỗi phương thức
nghiệp vụ mà chính bean đó biểu hiện. EJB object chuyển giao tất cả các yêu cầu máy
khách đến bean. EJB object là một thành phần vật lý của trình chứa (container).
The Remote Interface:
Để định nghĩa các phương thức nghiệp vụ. Các thành phần máy k
Các file đính kèm theo tài liệu này:
- CD087.pdf