Client Client Web Container JSP File, Servlets, HTML, XML JNDI, JMS, Java Mail Enterprise Bean Enterprise Bean Enterprise Bean EJB Container Information Systems / Database Server Lega
Trang 16.2 Phát tri n ng d ng Client/Server đa t ng v i EJB và J2EE
6.2.1 Khái ni m chung v EJB và J2EE
* EJB là gì ?
- Là ki n trúc đ đ nh ngh a / ch ra làm th nào đ xây d ng các thành ph n cho
ng d ng (application logic)
- Các thành ph n c a EJB có th s d ng đ xây d ng các ng d ng phân tán
* Mô hình EJB :
- EJB = Enterprise Java Bean
- Mô hình thành ph n nh m vào phát tri n Business Logic phía Server
- Giao di n đ giúp ng i l p trình ng d ng ph c t p trên n n (platform) các h
th ng giao d ch, CSDL, b o m t,
- EJB phát tri n d a trên n n t ng c a ngôn ng Java
* J2EE là gì ?
- Là n n chu n (Standard platform) đ phát tri n ch ng trình ng d ng có đ
ph c t p cao (business)
- EJB và J2EE l p trình Client/Server theo ki n trúc ng d ng đa t ng
+ M t ph n ng d ng s ch y trên Client
+ M t ph n ch y trên l p trung gian (d a trên Middleware – nh visiBroker) + Ph n còn l i s ch y trên Server : x lý CSDL hay tính toán ph c t p
- S d ng EJB và J2EE xây d ng các đ i t ng thành ph n đáp ng c phía Client và Server
* Ki n trúc J2EE :
- J2EE ki n trúc các thành ph n đ phát tri n Business Logic
Client
Client
Web Container JSP File, Servlets, HTML, XML
JNDI, JMS, Java Mail
Enterprise Bean
Enterprise Bean Enterprise
Bean
EJB Container
Information Systems / Database Server Legacy Application
J2EE Server
Trang 2- Các thành ph n đ c cung c p các d ch v t các Container
- Container th hi n giao di n gi a thành ph n và các ch c n ng m c th p (low-level) đ h tr cho các thành ph n
- J2EE cung c p các d ch v sau :
HTTP - nh ngh a d ch v HTTP phía trình ng d ng Client s d ng gói
java.net
- Phía Server đ nh ngh a trong Servlet ho c JSP
- HTTP cho phép trình duy t Web truy c p các file Servlet và JSP Enterprise Java Bean
(EJB)
Mô hình thành ph n đ phát tri n ng d ng Enterprise Java Client tri u
g i các ph ng th c trên Enterprise Beans
Java Transaction API
(JTA)
Giao di n cho các thành ph n ng d ng J2EE đ đi u khi n các giao
d ch
RMI-IIOP Trình ng d ng s d ng RMI-IIOP khi truy c p các thành ph n EJB Java IDL Cho phép các ng d ng J2EE tri u g i đ i t ng CORBA s d ng giao
th c IIOP
JDBC Trình ng d ng truy c p CSDL
Java Messager Service
(JMS)
Trình ng d ng g i thông báo mô hình đi m - đi m
Java Naming and
Directory Interface
(JNDI)
Trình ng d ng s d ng Naming và Directory đ truy c p các ngu n tài nguyên J2EE
Java Mail Trình ng d ng g i/nh n e-mail
JavaBeans Activation
Framework (JAF)
Trình ng d ng đ c s d ng b i Java Mail
Java API for XML
parsing (JAXP)
Trình ng d ng phân tích các tài li u XML
J2EE Connector
Architecture
Cho phép các trình ng d ng k t n i v i h th ng k th a và các ng
d ng non-java
Java Authentication
and Authorization
Service (JAAS)
Trình ng d ng s d ng d ch v J2EE đ xác th c và ki m soát truy c p
c a các user
6.2.2 Mô hình Client/Server v i EJB s d ng J2EE
* Enterprise Java Bean : mô hình Client/Server v i EJB :
Client
Java Application XML
Parser
Java Beans XML
JDBC Connection
Business Logic XML
Parser
Database
Trang 3* Mô hình ng d ng phân t ng EJB trong môi tr ng J2EE :
- xây d ng các ng d ng đa t ng, c n có c s h t ng (gi i thích ki n trúc và
c s h t ng ?)
+ H tr c a h th ng m ng
+ H đi u hành
+ Ngôn ng l p trình
+ Các công c phát tri n
+ Môi tr ng mà trình ng d ng ho t đ ng
+
- Các đ i t ng mu n ho t đ ng t t và hi u qu h n c n t n t i trong m t môi
tr ng có kh n ng ki m soát chúng
- Môi tr ng th c thi chu trình ho t đ ng c a đ i t ng (chu trình s ng c a đ i
t ng – life circle) :
+ Các tài nguyên
+ Ki m soát quá trình l u tr
+ Th c thi
+ Ch m d t ho t đ ng c a ch ng trình
- Enterprise Java Bean (EJB) là mô hình h tr cho các đ i t ng/Enterprise Bean
ho t đ ng k t h p v i nhau m t cách có đ nh h ng và hi u qu h n
- M i tr ng EJB : n i cung c p các d ch v Java h tr trình ch a
* EJB Container :
- i t ng Enterprise Bean ch y trong EJB Container
- Container là môi tr ng :
+ Ki m soát các Enterprise Bean
+ Cung c p cho chúng các di ch v m c h th ng
>>> l p trình viên ch t p trung vào các quy trình nghi p v (business method)
- Container cung c p các d ch v cho Enterprise Bean bao g m :
+ Qu n lý giao d ch
+ An toàn
J2EE SERVER Web Server
D ch v Web Servlet, JSP, CGI
JNDI, JDBC, JTS, JMS,
Môi tr ng EJB
Object Object
Container
M ng Web Browser
Client
Database
Server
M ng
M ng
Trang 4+ Client k t n i t xa
+ Qu n lý chu k s ng
+ K t n i CSDL
- Trong m t môi tr ng EJB có th có nhi u Container cùng ho t đ ng
* Web Container :
- Web Container là môi tr ng ch y các file JSP và Java Servlet
- Các thành ph n Web đóng vai trò quan tr ng c a ng d ng J2EE
* Liên k t gi a Web Container và EJB Container
* Enterprise Bean :
- Các Enterprise Bean là các thành ph n Server đ c vi t b ng ngôn ng Java
- Enterprise Bean ch a các business logic đ i v i ng d ng
- Có hai ki u Enterprise Bean :
+ Session Bean
+ Entity Bean
* Các ph ng th c Container đi u khi n thành ph n bean :
- ejbCreate() : ph ng th c đ t o ra đ i t ng bean
- ejbRemote() : ph ng th c đ h y đ i t ng bean
- ejbPassivate() : thông báo đ i t ng bean s p b đ a ra vùng nh t m th i (
c ng)
- ejbSessionContext() :
+ i t ng bean đ a v tr ng thái kích ho t (khôi ph c t vùng nh t m th i) + Thành ph n bean nh n các thông tin t Container
* Session Bean :
- i t ng bean ch th c hi n các hành vi x lý, tính toán đ n thu n
- Các đ i t ng không đòi h i đ n th c thi d li u : tính toán, phân tích, th ng kê,
đ a ra gi i pháp t t p d li u m u t m
- Ch có nhi m v ph c v Client trong m t phiên k t n i
- Session Bean chia làm hai lo i :
+ Session Bean phi tr ng thái (Stateless Bean) : không l u l i tr ng thái
c a giao d ch tr c đó đ s d ng cho giao d ch l n sau
+ Session Bean l u v t tr ng thái (Stateful Bean) : các thành ph n bean
l u l i k t qu hay v trí giao d ch tr c đó đ ph c v cho l n giao d ch ti p theo (th ng qua nhi u b c tri u g i tr c khi tr l i k t qu cho Client)
* L a ch n gi a Session Bean phi tr ng thái và Session Bean l u v t tr ng thái :
- S d ng Session Bean l u v t tr ng thái (Stateful Bean) n u :
Browser
Web Container
JSP, Servlet
EJB Container
JMS JNDI Java Mail JDBC
Database HTTP
XML
Trang 5+ Tr ng thái c a bean ph i đ c b t đ u khi kh i t o nó
+ Bean c n l u l i thông tin v Client t quá trình tri u g i ph ng th c + Client là m t trình ng d ng t ng tác
- S d ng Session Bean phi tr ng thái (Stateless Bean) n u :
+ Bean th c hi n m t nhi m v mà h th ng không c n quan tâm đ n m t Client c th
+ Bean không c n l u l i thông tin v Client khi tri u g i ph ng th c
* Chu trình s ng c a Stateful Bean :
* Chu trình s ng c a Stateless Bean :
* Entity Bean:
- Entity Bean - đ i t ng mô ph ng m t th c th - Entity
- Ánh x t ng dòng d li u thành đ i t ng bean – bean th c th (Entity Bean)
- C n đ a d li u t h CSDL vào trong đ i t ng bean
- Qu n lý Entity Bean chia thành 2 lo i :
+ Entity Bean t qu n lý : có kh n ng t truy v n các h CSDL đ l y d
li u th c thi (Ví d : dùng các câu l nh SQL : SELECT, INSERT – thông qua JDBC trong ph ng th c kh i d ng bean)
+ Entity đ c qu n lý b i trình ch a Container : đ i t ng bean ch c n khai báo các tr ng (field) hay c t d li u t ng ng v i b ng trong h CSDL, trình ch a Container t đ ng truy v n d li u giúp đ i t ng bean
* Chu trình s ng c a Entity Bean :
1 setSessionContext
2 ejbCreat
Ch a t n t i
i t ng đã
s n sàng
ejbRemote
1 Create
2 setSessionContext
3 ejbCreat
Ch a t n t i
Ch a t n t i
1 Remote
2 ejbRemote
Vùng t m l u đ i t ng
( c ng)
ejbPassivate
ejbActivate
Trang 6- EJB Container kh i t o th c thi, ph ng th c setEntityContext đ c th c hi n
* So sánh gi a Session Bean và Entity Bean :
- C hai lo i Session Bean và Entity Bean đ u ch y trong môi tr ng EJB Container, nh ng chúng hoàn toàn khác nhau B ng so sánh s khác nhau đó :
M c
đích Th c hi n m t nghi p v cho m t Client
Th hi n m t đ i t ng th c th business
đ c l u tr trong kho d li u
Chia s
truy c p
Có th ch có m t Client Có th nhi u Client truy c p cùng m t lúc
Tính
liên t c
Không liên t c, khi truy c p c a
Client k t thúc thì session bean
không còn có hi u l c (đi u
khi n b i Container)
T n t i liên t c, th m chí khi container EJB
đã k t thúc, tr ng thái c a th uc th (Entity) v n t n t i trong CSDL
- L u ý : Java Bean và Enterprise Bean là khác nhau, m c d đ u đ c vi t b ng ngôn ng l p trình Java Java Bean t o ra các l p Java th hi n yêu c u c a khách hàng
b ng các tool thi t k , cho phép liên k t các đ i t ng theo yêu c u khách hàng qua các
s ki n Enterprise Bean cài đ t cho multi-user, các d ch v giao d ch
6.2.3 Phát tri n ng d ng J2EE
- ng d ng J2EE có th ch a m t ho c nhi u Enterprise Bean, các thành ph n Web, ho c các thành ph n Client ng d ng J2EE
- M i ki u ng d ng s đ c đóng gói vào m t format file c th
- Mô t th c hi n đóng gói (deployment descripter – DD) là m t file XML mô t thành ph n
1 Create
2 ejbCreatee
3 ejbPostCreat
Ch a t n t i
Pooled
(vùng l u đ i t ng v i
đi u khi n c a container
setEntityContext unsetEntityContext
i t ng đã s n sàng
1 Remote
2 ejbRemote ejbActivive ejbPassivate
Trang 7* Các thành ph n c a ng d ng J2EE :
* Các File đ c s d ng trong ng d ng J2EE :
Ki u file
Mô t phát tri n ng d ng J2EE (J2EE App DD) xml
Mô t phát tri n ng d ng EJB (EJB App DD) xml
J2EE Application Client ( ng d ng Java ch y trong môi tr ng Container
cho phép truy c p d ch v J2EE)
.jar
Mô t phát tri n J2EE Appliaction Client (J2EE App Client DD) xml
J2EE Application J2EE App DD .ear file
J2EE App.Client
J2EE App.Client DD
Java App
Enterprise Bean
EJB DD EJB Class Remote Home
.jar file .jar file
Web Component
Web comp DD JSP file Servlet Class HTML File
.war file
Trang 8* Quá trình xây d ng trình ng d ng EJB
- Ki n trúc Client/Server c a EJB :
- Cài đ t m t Enterprise Bean c n đ nh ngh a 2 giao di n và 1 ho c 2 l p :
+ Home Interface
+ Remote Interface
+ Bean Class
+ Primary key class (ch cho Entity Bean)
- Mô hình ng d ng liên k t Client - đ i t ng EJB trong Container :
+ Client s d ng d ch v JNDI đ tham chi u đ n l p EJB home
+ Client g i ph ng th c Creat() c a l p home interface yêu c u tham chi u
đ n l p Remote Interface
+ S d ng Remote Interface g i ph ng th c c a EJB Objject trong Container + Container nh n l i tri u g i t Remote đ g i thành ph n trong EJB Object
- Quá trình xây d ng trình ng d ng EJB v i JSP :
Client JSP và Enterprise Bean
EJB home stub
home interface
EJB object stub
remote interface
EJB Container
EJB home
EJB Object
bean class home interface
remote interface
Web Browser
J2EE Server
JSP Component (Web Comp.)
JavaBeans Component
JavaBeans Component
Client
JNDI, JDBC, JTS,
EJB home
EJB Object
Remote Interface
J2EE
1
3
2
4
Container
Trang 9* Thành ph n Java Bean :
- Java Bean là đ i t ng Java đ c cài đ t d ng Interface Serializable (giao di n
tu n t hóa - đ i t ng có th l u tr l i tr ng thái ho t đ ng t m th i và khôi ph c l i
ho t đ ng)
- Java Bean s d ng các th t ng t nh HTML đ đ nh ngh a bean, thi t l p
ho c l y v giá tr c a bean
- M u chu n đ nh ngh a Java Bean :
public class YourBean implements java.io.Serializable {
protected int theValue ;
//ph ng th c kh i d ng bean
public MyBean {
//
//khai báo ph ng th c đ t giá tr cho thu c tính MyValue public void setBeanValue(int newValue) {
//khai báo ph ng th c nh n thu c tính c a MyValue
public int getBeanValue() {
}
- Biên d ch thành ph n bean t ng t nh biên d ch l p đ i t ng Java thông
th ng (s d ng javac.exe)
- Có th vi t đo n mã Java trong JSP đ tri u g i đ i t ng bean
<html>
<% YourBean bean = new YourBean() ;
%>
</html>
- K t h p JSP và JavaBean, JavaBean cho phép s d ng các th thay th mã Java (theo cú pháp c a XML) :
<html>
<jsp:useBean id = "bean" scope = "page">
<jsp:setProperty name"bean" property = "BeanValue" value =
"4+5">
<jsp:getProperty name"bean" property = "BeanValue">
</html>
- Các th chu n c a JavaBean trong trang JSP:
<jsp :useBean> // đ nh ngh a Bean
<jsp :setProperty> // đ t thu c tính cho Bean
<jsp:getProperty> //l y giá tr thu c tính c a Bean
* Xây d ng trình ng d ng J2EE v i các thành ph n c a JSP
Trang 10Các thành ph n c a JSP đ cài đ t deploy ng d ng J2EE
* Quá trình phát tri n ng d ng J2EE:
- Các giai đo n phát tri n ng d ng J2EE:
+ Thi t k và l p trình Enterprise Bean
+ Thi t k các Web component
+ Thi t k và l p trình Client ng d ng J2EE
+ L p ráp/t h p ng d ng J2EE (J2EE Application Assembly)
+ Cài đ t ng d ng J2EE
Cài đ t và l p ráp ng d ng J2EE
- Nhi m v thi t k và l p trình Enterprise Bean (ng i phát tri n ph n m m): + L p trình và d ch mã ngu n Java theo ki n trúc thành ph n Enterprise Bean + a ra mô t deployment cho Enterprise Bean
+ óng gói các file class và mô t deplyment vào trong EJB.jar file
+ K t qu là file: EJB.jar ch a các Enterprise Bean
- Nhi m v thi t k các Web component (ng i thi t k Web):
+ L p trình và biên d ch các mã ngu n Java cho Servlet
+ Vi t các file JSP và HTML
+ a ra mô t deployment cho Web component
+ óng gói các file class, jsp, html và mô t deployment vào war file + K t qu : file war ch a các Web component
J2EE Application.ear EJB.jar
EJB.class HomeInterface.class RemoteInterface.class
Web Component.war App.jsp file
JavaBean.class
Web Component
(.war file)
Enterprise Bean (EJB.jar file)
J2EE Application (.ear file)
J2EE Server
giai đo n l p ráp
giai đo n cài đ t
Trang 11- Nhi m v thi t k và l p trình Client ng d ng J2EE (ng i phát tri n ph n
m m)
+ L p trình và d ch mã ngu n Java theo yêu c u Client
+ a ra mô t deployment vào trong jar file cho Client
+ K t qu là file jar ch a J2EE Application Client
- L p ráp ng d ng J2EE (J2EE Application Assembly) (ng i phát tri n ph n
m m)
+ Ghép các Enterprise Bean (EJB.jar) và các Web Component (.war) thành file ng d ng J2EE(.ear)
+ a ra mô t deployment cho ng d ng J2EE
+ K t qu : file ear ch a ng d ng J2EE
- Nhi m v cài đ t ng d ng J2EE (ng i qu n tr h th ng):
+ Cài đ t ng d ng J2EE (.ear) t i J2EE Server
+ C u hình ng d ng J2EE cho môi tr ng ho t đ ng th c hi n b ng quá trình deployment
+ Deploy/Install ng d ng J2EE (.ear) trong J2EE Server