1
4
4
Jerzy R. Jaworowski,
Jerzy R. Jaworowski,
dr in
dr in
ż
ż
.
.
Instytut Teleinformatyki PK
Instytut Teleinformatyki PK
Zaawansowane techniki
Zaawansowane techniki
programowania
programowania
2013 / 2014
2013 / 2014
2014
2014
-
-
02
02
-
-
06
06
©
©
2014, Jerzy R. Jaworowski
2014, Jerzy R. Jaworowski
2
2
4
4
EJB Server
EJB Server
Serwer EJB
Serwer EJB
–
–
serwer aplikacyjny
serwer aplikacyjny
realizuj
realizuj
ą
ą
cy obs
cy obs
ł
ł
ug
ug
ę
ę
kontenera EJB.
kontenera EJB.
Serwer EJB
Serwer EJB
dostarcza (implementuje)
dostarcza (implementuje)
wsp
wsp
ó
ó
lne us
lne us
ł
ł
ugi elementarne dost
ugi elementarne dost
ę
ę
pne
pne
dla wszystkich EJB. Rol
dla wszystkich EJB. Rol
ą
ą
serwera EJB
serwera EJB
jest ukrycie wysokiej z
jest ukrycie wysokiej z
ł
ł
o
o
ż
ż
ono
ono
ś
ś
ci tych
ci tych
us
us
ł
ł
ug przed korzystaj
ug przed korzystaj
ą
ą
cymi z nich
cymi z nich
komponentami (tworzonymi przez
komponentami (tworzonymi przez
developer
developer
ó
ó
w)
w)
2014
2014
-
-
02
02
-
-
06
06
©
©
2014, Jerzy R. Jaworowski
2014, Jerzy R. Jaworowski
3
3
4
4
EJB Server
EJB Server
Przyk
Przyk
ł
ł
ady :
ady :
JBoss
JBoss
http://www.jboss.org
http://www.jboss.org
Glasfish
Glasfish
http://www.glasfish.dev.java.net
http://www.glasfish.dev.java.net
Uwaga :
Uwaga :
Tomcat
Tomcat
nie zawiera kontenera EJB
nie zawiera kontenera EJB
2014
2014
-
-
02
02
-
-
06
06
©
©
2014, Jerzy R. Jaworowski
2014, Jerzy R. Jaworowski
4
4
4
4
Services
Services
provided
provided
by Server
by Server
•
•
Naming
Naming
•
•
Transaction
Transaction
•
•
Security
Security
•
•
Persistence
Persistence
•
•
Concurrency
Concurrency
•
•
Life
Life
cycle
cycle
•
•
Messaging
Messaging
•
•
Timer
Timer
2014
2014
-
-
02
02
-
-
06
06
©
©
2014, Jerzy R. Jaworowski
2014, Jerzy R. Jaworowski
5
5
4
4
EJB
EJB
Container
Container
Kontener EJB (jako element serwera
Kontener EJB (jako element serwera
aplikacyjnego) funkcjonuje jako
aplikacyjnego) funkcjonuje jako
ś
ś
rodowisko
rodowisko
(runtime environment)
(runtime environment)
wspieraj
wspieraj
ą
ą
ce
ce
zarz
zarz
ą
ą
dzanie procesem wykonania EJB oraz
dzanie procesem wykonania EJB oraz
dostarczaj
dostarczaj
ą
ą
ce us
ce us
ł
ł
ug pierwotnych
ug pierwotnych
(elementarnych)
(elementarnych)
Kontener EJB odpowiada za zarz
Kontener EJB odpowiada za zarz
ą
ą
dzanie EJB
dzanie EJB
w ca
w ca
ł
ł
ym cyklu
ym cyklu
ż
ż
ycia oraz za identyfikacj
ycia oraz za identyfikacj
ę
ę
EJB.
EJB.
Kontener jest odpowiedzialny za tworzenie
Kontener jest odpowiedzialny za tworzenie
instancji EJB, zarz
instancji EJB, zarz
ą
ą
dzanie
dzanie
pol
pol
ą
ą
instancji oraz
instancji oraz
likwidacj
likwidacj
ą
ą
obiektu
obiektu
(destroy)
(destroy)
2014
2014
-
-
02
02
-
-
06
06
©
©
2014, Jerzy R. Jaworowski
2014, Jerzy R. Jaworowski
6
6
4
4
Naming
Naming
Kontener EJB jest odpowiedzialny za
Kontener EJB jest odpowiedzialny za
wykonanie procesu rejestracji unikalnej
wykonanie procesu rejestracji unikalnej
nazwy komponentu EJB w przestrzeni
nazwy komponentu EJB w przestrzeni
nazw JNDI (Java
nazw JNDI (Java
Naming
Naming
and
and
Directory
Directory
Interface
Interface
) w momencie startu serwera
) w momencie startu serwera
oraz wykonanie procesu powi
oraz wykonanie procesu powi
ą
ą
zania
zania
(
(
binding
binding
) z w
) z w
ł
ł
a
a
ś
ś
ciwym obiektem w
ciwym obiektem w
przestrzeni nazw JNDI
przestrzeni nazw JNDI
2
2014
2014
-
-
02
02
-
-
06
06
©
©
2014, Jerzy R. Jaworowski
2014, Jerzy R. Jaworowski
7
7
4
4
Transaction
Transaction
Kontener EJB
Kontener EJB
mo
mo
ż
ż
e realizowa
e realizowa
ć
ć
obs
obs
ł
ł
ug
ug
ę
ę
transakcji automatycznie
transakcji automatycznie
, zale
, zale
ż
ż
nie od typu
nie od typu
komponentu EJB oraz atrybutu okre
komponentu EJB oraz atrybutu okre
ś
ś
laj
laj
ą
ą
cego
cego
żą
żą
dany typ transakcji
dany typ transakcji
–
–
oba te elementy s
oba te elementy s
ą
ą
zewn
zewn
ę
ę
trzne w stosunku do komponentu i
trzne w stosunku do komponentu i
opisywane w jego deskryptorze.
opisywane w jego deskryptorze.
W przypadku obs
W przypadku obs
ł
ł
ugi transakcji przez kontener
ugi transakcji przez kontener
aplikacja mo
aplikacja mo
ż
ż
e by
e by
ć
ć
tworzona bez u
tworzona bez u
ż
ż
ycia
ycia
jawnego kodu obs
jawnego kodu obs
ł
ł
ugi demarkacji (np.
ugi demarkacji (np.
begin
begin
,
,
commit
commit
,
,
rollback
rollback
)
)
2014
2014
-
-
02
02
-
-
06
06
©
©
2014, Jerzy R. Jaworowski
2014, Jerzy R. Jaworowski
8
8
4
4
Security
Security
Kontener EJB jest odpowiedzialny za
Kontener EJB jest odpowiedzialny za
egzekwowanie strategii bezpiecze
egzekwowanie strategii bezpiecze
ń
ń
stwa
stwa
okre
okre
ś
ś
lonej na etapie tworzenia komponentu
lonej na etapie tworzenia komponentu
–
–
realizuje t
realizuje t
ę
ę
funkcjonalno
funkcjonalno
ść
ść
w oparciu o listy
w oparciu o listy
ACL (Access
ACL (Access
Control
Control
Lists
Lists
). ACL jest
). ACL jest
wykazem u
wykazem u
ż
ż
ytkownik
ytkownik
ó
ó
w, grup do kt
w, grup do kt
ó
ó
rych
rych
nale
nale
żą
żą
oraz wynikaj
oraz wynikaj
ą
ą
cych z tego uprawnie
cych z tego uprawnie
ń
ń
efektywnych.
efektywnych.
Kontener EJB zapewnia,
Kontener EJB zapewnia,
ż
ż
e u
e u
ż
ż
ytkownicy
ytkownicy
uzyskuj
uzyskuj
ą
ą
dost
dost
ę
ę
p wy
p wy
łą
łą
cznie do tych zasob
cznie do tych zasob
ó
ó
w
w
oraz mog
oraz mog
ą
ą
wykona
wykona
ć
ć
tylko te zadania, do
tylko te zadania, do
kt
kt
ó
ó
rych posiadaj
rych posiadaj
ą
ą
uprawnienia (
uprawnienia (
granted
granted
permissions
permissions
)
)
2014
2014
-
-
02
02
-
-
06
06
©
©
2014, Jerzy R. Jaworowski
2014, Jerzy R. Jaworowski
9
9
4
4
Persistence
Persistence
Kontener EJB jest odpowiedzialny za
Kontener EJB jest odpowiedzialny za
zarz
zarz
ą
ą
dzanie sp
dzanie sp
ó
ó
jno
jno
ś
ś
ci
ci
ą
ą
danych r
danych r
ó
ó
ż
ż
nych
nych
typ
typ
ó
ó
w komponent
w komponent
ó
ó
w
w
–
–
poprzez
poprzez
synchronizacj
synchronizacj
ę
ę
stanu instancji
stanu instancji
bean
bean
’ó
’ó
w
w
utrzymywanych w pami
utrzymywanych w pami
ę
ę
ci z
ci z
powi
powi
ą
ą
zanym rekordem w odpowiednim
zanym rekordem w odpowiednim
zewn
zewn
ę
ę
trznym
trznym
ź
ź
r
r
ó
ó
dle danych
dle danych
2014
2014
-
-
02
02
-
-
06
06
©
©
2014, Jerzy R. Jaworowski
2014, Jerzy R. Jaworowski
10
10
4
4
Concurrency
Concurrency
Kontener EJB obs
Kontener EJB obs
ł
ł
uguje proces
uguje proces
zarz
zarz
ą
ą
dzania r
dzania r
ó
ó
wnoczesnym dost
wnoczesnym dost
ę
ę
pem
pem
do komponent
do komponent
ó
ó
w, zgodnie z regu
w, zgodnie z regu
ł
ł
ami
ami
okre
okre
ś
ś
lonymi dla r
lonymi dla r
ó
ó
ż
ż
nych typ
nych typ
ó
ó
w EJB
w EJB
2014
2014
-
-
02
02
-
-
06
06
©
©
2014, Jerzy R. Jaworowski
2014, Jerzy R. Jaworowski
11
11
4
4
Life
Life
cycle
cycle
Kontener EJB kontroluje komponenty w ca
Kontener EJB kontroluje komponenty w ca
ł
ł
ym
ym
cyklu ich
cyklu ich
ż
ż
ycia. W miar
ycia. W miar
ę
ę
jak nadchodz
jak nadchodz
ą
ą
żą
żą
dania (
dania (
client
client
requests
requests
) do komponent
) do komponent
ó
ó
w
w
EJB, kontener dynamicznie tworzy niezb
EJB, kontener dynamicznie tworzy niezb
ę
ę
dn
dn
ą
ą
instancj
instancj
ę
ę
obiektu w pami
obiektu w pami
ę
ę
ci, decyduje o jej
ci, decyduje o jej
usuni
usuni
ę
ę
ciu lub ponownym u
ciu lub ponownym u
ż
ż
yciu (
yciu (
reuse
reuse
)
)
zale
zale
ż
ż
nie od potrzeb.
nie od potrzeb.
Kontener mo
Kontener mo
ż
ż
e dostarcza
e dostarcza
ć
ć
mechanizmy
mechanizmy
optymalizacji wykorzystania zasob
optymalizacji wykorzystania zasob
ó
ó
w, oraz
w, oraz
wspieraj
wspieraj
ą
ą
ce zarz
ce zarz
ą
ą
dzanie pul
dzanie pul
ą
ą
obiekt
obiekt
ó
ó
w.
w.
2014
2014
-
-
02
02
-
-
06
06
©
©
2014, Jerzy R. Jaworowski
2014, Jerzy R. Jaworowski
12
12
4
4
Messaging
Messaging
Kontener EJB wspiera niezawodny
Kontener EJB wspiera niezawodny
routing
routing
asynchronicznych komunikat
asynchronicznych komunikat
ó
ó
w
w
przesy
przesy
ł
ł
anych przez klient
anych przez klient
ó
ó
w (JMS) do
w (JMS) do
sterowanych komunikatami
sterowanych komunikatami
bean
bean
ó
ó
w
w
EJB (MDB
EJB (MDB
-
-
Message
Message
Driven
Driven
Beans
Beans
).
).
Komunikaty mog
Komunikaty mog
ą
ą
by
by
ć
ć
przetwarzane
przetwarzane
zar
zar
ó
ó
wno technik
wno technik
ą
ą
peer
peer
-
-
to
to
-
-
peer
peer
(kolejki)
(kolejki)
jak r
jak r
ó
ó
wnie
wnie
ż
ż
w modelu
w modelu
publisher
publisher
-
-
subscriber
subscriber
(temat, tre
(temat, tre
ść
ść
)
)
3
2014
2014
-
-
02
02
-
-
06
06
©
©
2014, Jerzy R. Jaworowski
2014, Jerzy R. Jaworowski
13
13
4
4
Timer
Timer
Aplikacje modeluj
Aplikacje modeluj
ą
ą
cz
cz
ę
ę
sto procesy, kt
sto procesy, kt
ó
ó
re s
re s
ą
ą
zale
zale
ż
ż
ne od zdarze
ne od zdarze
ń
ń
wyst
wyst
ę
ę
puj
puj
ą
ą
cych w
cych w
okre
okre
ś
ś
lonych momentach czasu. Do obs
lonych momentach czasu. Do obs
ł
ł
ugi
ugi
tego typu rozwi
tego typu rozwi
ą
ą
za
za
ń
ń
kontener musi
kontener musi
implementowa
implementowa
ć
ć
pewn
pewn
ą
ą
, transakcyjn
, transakcyjn
ą
ą
us
us
ł
ł
ug
ug
ę
ę
EJB
EJB
Timer
Timer
Service, kt
Service, kt
ó
ó
ra umo
ra umo
ż
ż
liwia
liwia
odwo
odwo
ł
ł
ania do zaplanowanych (
ania do zaplanowanych (
scheduled
scheduled
)
)
zale
zale
ż
ż
nych od czasu zdarze
nych od czasu zdarze
ń
ń
. Zdarzenia
. Zdarzenia
mog
mog
ą
ą
by
by
ć
ć
planowane na okre
planowane na okre
ś
ś
lony moment
lony moment
czasu, po up
czasu, po up
ł
ł
ywie okre
ywie okre
ś
ś
lonego odcinka czasu
lonego odcinka czasu
lub jako powtarzaj
lub jako powtarzaj
ą
ą
ce si
ce si
ę
ę
z
z
żą
żą
danym
danym
okresem.
okresem.
2014
2014
-
-
02
02
-
-
06
06
©
©
2014, Jerzy R. Jaworowski
2014, Jerzy R. Jaworowski
14
14
4
4
EJB
EJB
-
-
klasyfikacja
klasyfikacja
•
•
Session Beans
Session Beans
–
–
Stateless
Stateless
–
–
Stateful
Stateful
•
•
Entity Bean
Entity Bean
–
–
Bean Managed Persistency
Bean Managed Persistency
–
–
Container Managed Persistency (CMP)
Container Managed Persistency (CMP)
•
•
Message Bean
Message Bean
2014
2014
-
-
02
02
-
-
06
06
©
©
2014, Jerzy R. Jaworowski
2014, Jerzy R. Jaworowski
15
15
4
4
Session
Session
bean
bean
Bean
Bean
’
’
y
y
sesyjne graj
sesyjne graj
ą
ą
wa
wa
ż
ż
n
n
ą
ą
rol
rol
ę
ę
w fazie
w fazie
implementacji logiki
implementacji logiki
bussines
bussines
’
’
owej
owej
. W EJB
. W EJB
2.1 i wcze
2.1 i wcze
ś
ś
niej
niej
bean
bean
’
’
y
y
sesyjne by
sesyjne by
ł
ł
y cz
y cz
ę
ę
sto
sto
u
u
ż
ż
ywane. Wg. specyfikacji EJB 3.0 proces
ywane. Wg. specyfikacji EJB 3.0 proces
definiowania
definiowania
bean
bean
’
’
a
a
sesyjnego staje si
sesyjnego staje si
ę
ę
prosty i bardzo zbli
prosty i bardzo zbli
ż
ż
ony do definiowania
ony do definiowania
typowej klasy Java (lub POJO).
typowej klasy Java (lub POJO).
Skrajnie wa
Skrajnie wa
ż
ż
ne jest w
ne jest w
ł
ł
a
a
ś
ś
ciwe zrozumienie
ciwe zrozumienie
poj
poj
ę
ę
cia sesji oraz podstawowych koncepcji
cia sesji oraz podstawowych koncepcji
zwi
zwi
ą
ą
zanych z poj
zanych z poj
ę
ę
ciem stanu (
ciem stanu (
stateless
stateless
/
/
stateful
stateful
)
)
2014
2014
-
-
02
02
-
-
06
06
©
©
2014, Jerzy R. Jaworowski
2014, Jerzy R. Jaworowski
16
16
4
4
Co nazywamy sesj
Co nazywamy sesj
ą
ą
?
?
Sesja
Sesja
–
–
to po
to po
łą
łą
czenie (
czenie (
connection
connection
)
)
pomi
pomi
ę
ę
dzy klientem i serwerem
dzy klientem i serwerem
istniej
istniej
ą
ą
ce w pewnym ograniczonym
ce w pewnym ograniczonym
przedziale czasu.
przedziale czasu.
Sesja mo
Sesja mo
ż
ż
e by
e by
ć
ć
bezstanowa (
bezstanowa (
stateless
stateless
)
)
–
–
z sytuacj
z sytuacj
ą
ą
tak
tak
ą
ą
mamy do czynienia w
mamy do czynienia w
przypadku, gdy stan
przypadku, gdy stan
żą
żą
dania nie jest
dania nie jest
obs
obs
ł
ł
ugiwany w jakikolwiek spos
ugiwany w jakikolwiek spos
ó
ó
b
b
pomi
pomi
ę
ę
dzy kolejnymi wo
dzy kolejnymi wo
ł
ł
aniami.
aniami.
2014
2014
-
-
02
02
-
-
06
06
©
©
2014, Jerzy R. Jaworowski
2014, Jerzy R. Jaworowski
17
17
4
4
Stateless Session Bean
Stateless Session Bean
2014
2014
-
-
02
02
-
-
06
06
©
©
2014, Jerzy R. Jaworowski
2014, Jerzy R. Jaworowski
18
18
4
4
Czym jest sesja ?
Czym jest sesja ?
Żą
Żą
danie HTTP oraz sesja musz
danie HTTP oraz sesja musz
ą
ą
obs
obs
ł
ł
ugiwa
ugiwa
ć
ć
(zachowywa
(zachowywa
ć
ć
) stan
) stan
(
(
stateful
stateful
) je
) je
ż
ż
eli ma on by
eli ma on by
ć
ć
zachowany
zachowany
pomi
pomi
ę
ę
dzy nast
dzy nast
ę
ę
puj
puj
ą
ą
cymi po sobie
cymi po sobie
kolejnymi wo
kolejnymi wo
ł
ł
aniami
aniami
Np. : sesja Telnet, w kt
Np. : sesja Telnet, w kt
ó
ó
rej u
rej u
ż
ż
ytkownik
ytkownik
wysy
wysy
ł
ł
a kilka kolejnych komend do
a kilka kolejnych komend do
serwera, ka
serwera, ka
ż
ż
da z komend jest
da z komend jest
oddzielnym wo
oddzielnym wo
ł
ł
aniem, a stan musi by
aniem, a stan musi by
ć
ć
utrzymywany (np.
utrzymywany (np.
uid
uid
u
u
ż
ż
ytkownika )
ytkownika )
4
2014
2014
-
-
02
02
-
-
06
06
©
©
2014, Jerzy R. Jaworowski
2014, Jerzy R. Jaworowski
19
19
4
4
Stateful Session Bean
Stateful Session Bean
2014
2014
-
-
02
02
-
-
06
06
©
©
2014, Jerzy R. Jaworowski
2014, Jerzy R. Jaworowski
20
20
4
4
Entity Bean
Entity Bean
2014
2014
-
-
02
02
-
-
06
06
©
©
2014, Jerzy R. Jaworowski
2014, Jerzy R. Jaworowski
21
21
4
4
Session and Entity Beans
Session and Entity Beans
Wymagane
Wymagane
Reprezentuj
Reprezentuj
ą
ą
okre
okre
ś
ś
lonego klienta
lonego klienta
(1
(1
instancja / klient
instancja / klient
)
)
Kr
Kr
ó
ó
tkotrwa
tkotrwa
ł
ł
e
e
Chwilowy (
Chwilowy (
transient
transient
)
)
Dowolna klasa
Dowolna klasa
Java
Java
’
’
y
y
Mo
Mo
ż
ż
e by
e by
ć
ć
transakcyjny
transakcyjny
Business Logic Beans
Business Logic Beans
Opcjonalne
Opcjonalne
Reprezentuj
Reprezentuj
ą
ą
pewien
pewien
obiekt danych lub
obiekt danych lub
kontekst
kontekst
(wsp
(wsp
ó
ó
ł
ł
dzielona
dzielona
instancja
instancja
)
)
D
D
ł
ł
ugi okres
ugi okres
ż
ż
ycia
ycia
Trwa
Trwa
ł
ł
y (
y (
persistent
persistent
)
)
Klasa mapowana na
Klasa mapowana na
obiekt danych
obiekt danych
(
(
np
np
.
.
database)
database)
Zawsze jest
Zawsze jest
transakcyjny
transakcyjny
Reprezentuje dane
Reprezentuje dane
Session Beans
Entity Beans
2014
2014
-
-
02
02
-
-
06
06
©
©
2014, Jerzy R. Jaworowski
2014, Jerzy R. Jaworowski
22
22
4
4
Message Bean
Message Bean
2014
2014
-
-
02
02
-
-
06
06
©
©
2014, Jerzy R. Jaworowski
2014, Jerzy R. Jaworowski
23
23
4
4
Chwila na refleksj
Chwila na refleksj
ę
ę
...
...
•
•
Czy dowiedzia
Czy dowiedzia
ł
ł
e
e
ś
ś
si
si
ę
ę
czego
czego
ś
ś
nowego ?
nowego ?
•
•
Czy dowiedzia
Czy dowiedzia
ł
ł
e
e
ś
ś
si
si
ę
ę
czego
czego
ś
ś
Twym zdaniem
Twym zdaniem
wa
wa
ż
ż
nego ?
nego ?
•
•
Czy dostrzegasz zwi
Czy dostrzegasz zwi
ą
ą
zek i przydatno
zek i przydatno
ść
ść
przekazanych tre
przekazanych tre
ś
ś
ci w zawodzie, kt
ci w zawodzie, kt
ó
ó
ry sobie
ry sobie
wybra
wybra
ł
ł
e
e
ś
ś
?
?
•
•
Masz ewentualne uwagi b
Masz ewentualne uwagi b
ą
ą
d
d
ź
ź
sugestie,
sugestie,
podziel si
podziel si
ę
ę
nimi ...
nimi ...
jrj@pk.edu.pl
jrj@pk.edu.pl
2014
2014
-
-
02
02
-
-
06
06
©
©
2014, Jerzy R. Jaworowski
2014, Jerzy R. Jaworowski
24
24
4
4
Dzi
Dzi
ę
ę
kuj
kuj
ę
ę
za uwag
za uwag
ę
ę