1
3
3
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
3
3
Bussines
Bussines
Logic
Logic
Layer
Layer
Podczas projektowania warstwy logiki
Podczas projektowania warstwy logiki
bussinesowej mamy w zasadzie do
bussinesowej mamy w zasadzie do
wyboru dwie drogi :
wyboru dwie drogi :
•
•
Plain
Plain
Old Java
Old Java
Objects
Objects
(POJO)
(POJO)
•
•
Enterprise
Enterprise
Java
Java
Beans
Beans
(EJB 3.0)
(EJB 3.0)
2014
2014
-
-
02
02
-
-
06
06
©
©
2014, Jerzy R. Jaworowski
2014, Jerzy R. Jaworowski
3
3
3
3
Bussines
Bussines
Logic
Logic
Layer
Layer
Je
Je
ż
ż
eli potrzebujemy wsparcia wy
eli potrzebujemy wsparcia wy
łą
łą
cznie w
cznie w
zakresie obs
zakresie obs
ł
ł
ugi transakcji to mo
ugi transakcji to mo
ż
ż
emy
emy
wykorzysta
wykorzysta
ć
ć
JTA (Java
JTA (Java
Transaction
Transaction
API)
API)
Je
Je
ż
ż
eli korzysta
eli korzysta
ć
ć
b
b
ę
ę
dziemy np. z przetwarzania
dziemy np. z przetwarzania
rozproszonego (
rozproszonego (
distributed
distributed
computing
computing
) to
) to
mo
mo
ż
ż
emy wykorzysta
emy wykorzysta
ć
ć
zar
zar
ó
ó
wno RMI (
wno RMI (
Remote
Remote
Method
Method
Invocation
Invocation
) / RMI
) / RMI
-
-
IIOP (RMI
IIOP (RMI
over
over
Inter
Inter
Orb
Orb
-
-
Protocol
Protocol
) jak i Web Services
) jak i Web Services
2014
2014
-
-
02
02
-
-
06
06
©
©
2014, Jerzy R. Jaworowski
2014, Jerzy R. Jaworowski
4
4
3
3
Java
Java
Transaction
Transaction
API
API
Trzy zasadnicze elementy :
Trzy zasadnicze elementy :
1.Interfejs umo
1.Interfejs umo
ż
ż
liwiaj
liwiaj
ą
ą
cy realizacj
cy realizacj
ę
ę
linii
linii
demarkacyjnych na poziomie aplikacji
demarkacyjnych na poziomie aplikacji
2.Interfejs managera transakcji przewidziany do
2.Interfejs managera transakcji przewidziany do
wykorzystania przez serwer aplikacyjny
wykorzystania przez serwer aplikacyjny
3.Mechanizm mapowania protoko
3.Mechanizm mapowania protoko
ł
ł
u X/
u X/
Open
Open
XA
XA
dla potrzeb zarz
dla potrzeb zarz
ą
ą
dzania zasobami
dzania zasobami
2014
2014
-
-
02
02
-
-
06
06
©
©
2014, Jerzy R. Jaworowski
2014, Jerzy R. Jaworowski
5
5
3
3
Java
Java
Transaction
Transaction
API
API
Przyk
Przyk
ł
ł
ad :
ad :
bean
bean
-
-
managed
managed
transaction
transaction
, session
, session
bean
bean
@
@
Stateless
Stateless
@
@
TransactionManagement(BEAN
TransactionManagement(BEAN
)
)
public
public
class
class
ExampleBean
ExampleBean
{
{
@
@
Resource
Resource
private
private
UserTransaction
UserTransaction
tx
tx
;
;
public
public
void
void
example
example
() {
() {
// start a
// start a
transaction
transaction
tx.begin
tx.begin
();
();
// do
// do
work
work
//
//
commit
commit
it
it
tx.commit
tx.commit
();
();
}
}
}
}
2014
2014
-
-
02
02
-
-
06
06
©
©
2014, Jerzy R. Jaworowski
2014, Jerzy R. Jaworowski
6
6
3
3
Standard XA
Standard XA
XA
XA
eXtended
eXtended
Architecture
Architecture
Standard definiuj
Standard definiuj
ą
ą
cy spos
cy spos
ó
ó
b rozumienia
b rozumienia
(realizacji) transakcji globalnych
(realizacji) transakcji globalnych
(rozproszonych) w czasie realizacji kt
(rozproszonych) w czasie realizacji kt
ó
ó
rych
rych
nast
nast
ę
ę
puje dost
puje dost
ę
ę
p do wi
p do wi
ę
ę
cej ni
cej ni
ż
ż
jednego
jednego
repozytorium danych
repozytorium danych
Definiuje protok
Definiuje protok
ó
ó
ł
ł
dwufazowego zatwierdzania
dwufazowego zatwierdzania
transakcji dla zapewnienia sp
transakcji dla zapewnienia sp
ó
ó
jno
jno
ś
ś
ci danych
ci danych
(2PC :
(2PC :
two
two
-
-
phase
phase
commit
commit
)
)
2
2014
2014
-
-
02
02
-
-
06
06
©
©
2014, Jerzy R. Jaworowski
2014, Jerzy R. Jaworowski
7
7
3
3
RMI
RMI
Remote
Remote
Method
Method
Invocation
Invocation
Obiekty zdalne s
Obiekty zdalne s
ą
ą
rejestrowane (RMI
rejestrowane (RMI
Registry)
Registry)
–
–
aplikacja mo
aplikacja mo
ż
ż
e pobra
e pobra
ć
ć
z
z
repozytorium
repozytorium
‘
‘
stub
stub
’
’
(trzpie
(trzpie
ń
ń
), pewien
), pewien
obiekt typu
obiekt typu
proxy
proxy
udost
udost
ę
ę
pniaj
pniaj
ą
ą
cy
cy
lokalnie po stronie klienta interfejs
lokalnie po stronie klienta interfejs
specyfikuj
specyfikuj
ą
ą
cy dost
cy dost
ę
ę
pne us
pne us
ł
ł
ugi (metody)
ugi (metody)
obiektu zdalnego
obiektu zdalnego
2014
2014
-
-
02
02
-
-
06
06
©
©
2014, Jerzy R. Jaworowski
2014, Jerzy R. Jaworowski
8
8
3
3
RMI
RMI
Remote
Remote
Method
Method
Invocation
Invocation
2014
2014
-
-
02
02
-
-
06
06
©
©
2014, Jerzy R. Jaworowski
2014, Jerzy R. Jaworowski
9
9
3
3
RMI
RMI
–
–
interfejs us
interfejs us
ł
ł
ugi
ugi
public
public
interface
interface
ExampleService
ExampleService
extends
extends
java.rmi.Remote
java.rmi.Remote
{
{
public
public
void
void
exampleMethod
exampleMethod
(
(
.)
.)
throws
throws
java.rmi.RemoteException
java.rmi.RemoteException
;
;
}
}
2014
2014
-
-
02
02
-
-
06
06
©
©
2014, Jerzy R. Jaworowski
2014, Jerzy R. Jaworowski
10
10
3
3
RMI
RMI
–
–
implementacja us
implementacja us
ł
ł
ugi
ugi
public
public
class
class
ExampleServiceImpl
ExampleServiceImpl
extends
extends
java.rmi.server.UnicastRemoteObject
java.rmi.server.UnicastRemoteObject
implements
implements
ExampleService
ExampleService
{
{
public
public
ExampleServiceImpl
ExampleServiceImpl
()
()
throws
throws
java.rmi.RemoteException
java.rmi.RemoteException
{
{
super;
super;
}
}
public
public
void
void
exampleMethod
exampleMethod
(
(
.)
.)
throws
throws
java.rmi.RemoteException
java.rmi.RemoteException
{
{
// body
// body
implementation
implementation
}
}
}
}
2014
2014
-
-
02
02
-
-
06
06
©
©
2014, Jerzy R. Jaworowski
2014, Jerzy R. Jaworowski
11
11
3
3
RMI
RMI
–
–
kompilacja implementacji
kompilacja implementacji
us
us
ł
ł
ugi
ugi
U
U
ż
ż
ywamy
ywamy
rmic
rmic
zamiast
zamiast
javac
javac
:
:
>
>
rmic
rmic
ExampleServiceImpl
ExampleServiceImpl
ExampleService.class
ExampleService.class
ExampleServiceImpl.class
ExampleServiceImpl.class
ExampleServiceImpl_Stub.class
ExampleServiceImpl_Stub.class
ExampleServiceImpl_Skel.class
ExampleServiceImpl_Skel.class
2014
2014
-
-
02
02
-
-
06
06
©
©
2014, Jerzy R. Jaworowski
2014, Jerzy R. Jaworowski
12
12
3
3
RMI
RMI
–
–
implementacja
implementacja
servera
servera
import
import
java.rmi.Naming
java.rmi.Naming
;
;
public
public
class
class
ExampleServer
ExampleServer
{
{
public
public
ExampleServer
ExampleServer
() {
() {
try
try
{
{
Server s =
Server s =
new
new
ExampleServiceImpl
ExampleServiceImpl
();
();
Naming.rebind
Naming.rebind
(
(
"
"
rmi
rmi
://localhost:1099/
://localhost:1099/
myService
myService
", s);
", s);
}
}
catch
catch
(
(
Exception
Exception
e) {
e) {
Q
Q
.. }
.. }
}
}
public
public
static
static
void
void
main(String
main(String
args
args
[]) {
[]) {
new
new
ExampleServer
ExampleServer
();
();
}
}
}
}
3
2014
2014
-
-
02
02
-
-
06
06
©
©
2014, Jerzy R. Jaworowski
2014, Jerzy R. Jaworowski
13
13
3
3
RMI
RMI
–
–
implementacja klienta
implementacja klienta
import
import
java.rmi.Naming
java.rmi.Naming
;
;
import
import
java.rmi.RemoteException
java.rmi.RemoteException
;
;
import
import
java.net.MalformedURLException
java.net.MalformedURLException
;
;
import
import
java.rmi.NotBoundException
java.rmi.NotBoundException
;
;
public
public
class
class
ExampleClient
ExampleClient
{
{
public
public
static
static
void
void
main(String
main(String
[]
[]
args
args
) {
) {
try
try
{
{
ExampleService
ExampleService
e = (
e = (
ExampleService
ExampleService
)
)
Naming.lookup
Naming.lookup
(
(
"
"
rmi
rmi
://
://
localhost
localhost
/
/
myService
myService
");
");
e.exampleMethod
e.exampleMethod
(
(
Q
Q
..);
..);
}
}
catch
catch
(
(
MalformedURLException
MalformedURLException
murle
murle
) {
) {
Q
Q
.
.
}
}
catch
catch
(
(
RemoteException
RemoteException
re
re
) {
) {
Q
Q
.
.
}
}
catch
catch
(
(
NotBoundException
NotBoundException
nbe
nbe
) {
) {
Q
Q
.
.
}
}
catch
catch
(
(
java.lang.Exception
java.lang.Exception
ex) {
ex) {
}
}
}
}
}
}
2014
2014
-
-
02
02
-
-
06
06
©
©
2014, Jerzy R. Jaworowski
2014, Jerzy R. Jaworowski
14
14
3
3
Bussines
Bussines
Logic
Logic
Layer
Layer
Je
Je
ż
ż
eli oczekujemy wsparcia w zakresie :
eli oczekujemy wsparcia w zakresie :
•
•
transakcyjno
transakcyjno
ś
ś
ci (
ci (
transaction
transaction
control
control
)
)
•
•
dost
dost
ę
ę
pu zdalnego (
pu zdalnego (
remote
remote
access
access
)
)
•
•
klastrowania
klastrowania
(
(
clustering
clustering
)
)
•
•
pooling
pooling
•
•
trwa
trwa
ł
ł
o
o
ś
ś
ci / jako
ci / jako
ś
ś
ci danych (
ci danych (
persistence
persistence
)
)
•
•
cache
cache
Enterprise
Enterprise
Java
Java
Beans
Beans
s
s
ą
ą
w
w
ł
ł
a
a
ś
ś
ciwym
ciwym
rozwi
rozwi
ą
ą
zaniem
zaniem
2014
2014
-
-
02
02
-
-
06
06
©
©
2014, Jerzy R. Jaworowski
2014, Jerzy R. Jaworowski
15
15
3
3
Enterprise
Enterprise
Java
Java
Beans
Beans
Oryginalna specyfikacja
Oryginalna specyfikacja
IBM
IBM
’
’
a
a
pochodzi z
pochodzi z
1997 roku
1997 roku
-
-
bardzo krytykowane
bardzo krytykowane
rozwi
rozwi
ą
ą
zanie : przeznaczone dla
zanie : przeznaczone dla
wsparcia z
wsparcia z
ł
ł
o
o
ż
ż
onych problem
onych problem
ó
ó
w
w
–
–
samo
samo
w sobie by
w sobie by
ł
ł
o bardzo z
o bardzo z
ł
ł
o
o
ż
ż
one i trudno
one i trudno
zrozumia
zrozumia
ł
ł
e
e
EJB 1.0 oraz 1.1
EJB 1.0 oraz 1.1
–
–
specyfikacja rozwijana
specyfikacja rozwijana
i opublikowana przez Sun
i opublikowana przez Sun
Microsystems
Microsystems
2014
2014
-
-
02
02
-
-
06
06
©
©
2014, Jerzy R. Jaworowski
2014, Jerzy R. Jaworowski
16
16
3
3
Enterprise
Enterprise
Java
Java
Beans
Beans
Wszelkie dalsze specyfikacje zosta
Wszelkie dalsze specyfikacje zosta
ł
ł
y
y
stworzone z wykorzystaniem
stworzone z wykorzystaniem
JSRs
JSRs
(
(
Java
Java
Specification
Specification
Requests
Requests
) oraz
) oraz
weryfikowane / akceptowane z u
weryfikowane / akceptowane z u
ż
ż
yciem
yciem
JCP (
JCP (
Java Community
Java Community
Process
Process
)
)
Stan obecny : specyfikacja EJB 3.0
Stan obecny : specyfikacja EJB 3.0
pochodz
pochodz
ą
ą
ca z maja 2006 roku.
ca z maja 2006 roku.
2014
2014
-
-
02
02
-
-
06
06
©
©
2014, Jerzy R. Jaworowski
2014, Jerzy R. Jaworowski
17
17
3
3
Enterprise
Enterprise
Java
Java
Beans
Beans
Podstawowa koncepcja architektury SOA
Podstawowa koncepcja architektury SOA
(Service
(Service
Oriented
Oriented
Architecture
Architecture
) jest
) jest
oparta o poj
oparta o poj
ę
ę
cie us
cie us
ł
ł
ugi, kt
ugi, kt
ó
ó
r
r
ą
ą
definiuje
definiuje
si
si
ę
ę
zwykle jako
zwykle jako
“
discoverable resource that executes a
repeatable task, and is described by an
externalized service specification
”.
( dający się wyszukać [w sieci] zasób, realizujący
powtarzalne zadanie [przetwarzania] i opisywany
przez zewnętrzną specyfikację usługi )
2014
2014
-
-
02
02
-
-
06
06
©
©
2014, Jerzy R. Jaworowski
2014, Jerzy R. Jaworowski
18
18
3
3
EJB as Services
EJB as Services
Komponenty EJB mog
Komponenty EJB mog
ą
ą
by
by
ć
ć
eksponowane na zewn
eksponowane na zewn
ą
ą
trz jako Web
trz jako Web
services, stwarzaj
services, stwarzaj
ą
ą
c tym samym
c tym samym
mo
mo
ż
ż
liwo
liwo
ść
ść
integracji z innymi us
integracji z innymi us
ł
ł
ugami
ugami
(powstaj
(powstaj
ą
ą
cymi w oparciu o inne
cymi w oparciu o inne
standardy) w celu budowy
standardy) w celu budowy
-
-
wype
wype
ł
ł
niaj
niaj
ą
ą
cych specyfikacj
cych specyfikacj
ę
ę
wymaga
wymaga
ń
ń
-
-
element
element
ó
ó
w Bussines
w Bussines
Application
Application
Service
Service
Layer
Layer
w architekturze SOA
w architekturze SOA
4
2014
2014
-
-
02
02
-
-
06
06
©
©
2014, Jerzy R. Jaworowski
2014, Jerzy R. Jaworowski
19
19
3
3
EJB jako
EJB jako
WebServices
WebServices
serializacja
EJB
SOAP
EJB jako WebService
2014
2014
-
-
02
02
-
-
06
06
©
©
2014, Jerzy R. Jaworowski
2014, Jerzy R. Jaworowski
20
20
3
3
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
21
21
3
3
Dzi
Dzi
ę
ę
kuj
kuj
ę
ę
za uwag
za uwag
ę
ę