background image

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

)

)

background image

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

ć

ć

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

(

(

QQ

QQ

.)

.)

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

(

(

QQ

QQ

.)

.)

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

();

();

}

}

background image

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) { 

QQ

QQ

}

}

}

}

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

ó

ó

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

ł

ł

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 

background image

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

ę

ę