Il 0% ha trovato utile questo documento (0 voti)
3 visualizzazioni32 pagine

mw05 Java Ee

Caricato da

Fabio Rossoni
Copyright
© © All Rights Reserved
Per noi i diritti sui contenuti sono una cosa seria. Se sospetti che questo contenuto sia tuo, rivendicalo qui.
Formati disponibili
Scarica in formato PDF, TXT o leggi online su Scribd
Il 0% ha trovato utile questo documento (0 voti)
3 visualizzazioni32 pagine

mw05 Java Ee

Caricato da

Fabio Rossoni
Copyright
© © All Rights Reserved
Per noi i diritti sui contenuti sono una cosa seria. Se sospetti che questo contenuto sia tuo, rivendicalo qui.
Formati disponibili
Scarica in formato PDF, TXT o leggi online su Scribd
Sei sulla pagina 1/ 32

Luca Cabibbo

Architetture Software

I
Introduzione
d i a J
Java EE

Dispensa MW 5
ottobre 2008

1 Introduzione a Java EE Luca Cabibbo – SwA

- Fonti
‰ Java Platform, Enterprise Edition
http://java.sun.com/javaee/

‰ The Java EE 5 Tutorial


http://java sun com/javaee/5/docs/tutorial/doc/
http://java.sun.com/javaee/5/docs/tutorial/doc/

‰ [SAP/2e] Chapter 16, J2EE/EJB

2 Introduzione a Java EE Luca Cabibbo – SwA


- Obiettivi e argomenti
‰ Obiettivi
ƒ descrivere le possibili architetture applicative per la piattaforma
Java EE
ƒ descrivere la tecnologia EJB e il supporto alla loro esecuzione
ƒ discutere
di le
l qualità
li à sostenute ddalla
ll piattaforma
i f JJava EE

‰ Argomenti
ƒ introduzione alla piattaforma Java EE
ƒ Enterprise Bean
ƒ Session bean
ƒ Message-driven bean
ƒ Java EE e qualità

3 Introduzione a Java EE Luca Cabibbo – SwA

* Introduzione alla piattaforma Java EE


‰ La piattaforma Java Enterprise Edition (Java EE)
ƒ il problema – oggi c’è il bisogno di sviluppare applicazioni
distribuite, transazionali e portabili, che sfruttino la velocità,
sicurezza ed affidabilità delle tecnologie di tipo enterprise –
queste applicazioni devono essere progettate
progettate, costruite e
prodotte con meno soldi, tempo e risorse
ƒ la soluzione Java EE – con Java EE lo sviluppo di applicazioni
enterprise con Java non è mai stato così facile o veloce –
intento di Java EE 5 è fornire agli sviluppatori un insieme
potente di API,
API per ridurre il tempo di sviluppo
sviluppo, ridurre la
complessità delle applicazioni, e migliorare le prestazioni delle
applicazioni
ƒ Java EE 5 introduce un modello di programmazione
semplificato ...

4 Introduzione a Java EE Luca Cabibbo – SwA


Java EE
‰ Java Enterprise Edition (Java EE)
ƒ modello/piattaforma per la progettazione, lo sviluppo,
l’assemblaggio e il deployment di applicazioni
distribuite/enterprise
ƒ supporto per
ƒ applicazioni distribuite multi-livello
ƒ componenti riusabili
ƒ gestione unificata della sicurezza
ƒ controllo flessibile delle transazioni
ƒ interazione sincrona/asincrona
ƒ web service
ƒ gestione di dati persistenti
ƒ ...

5 Introduzione a Java EE Luca Cabibbo – SwA

Java EE
‰ Alcuni obiettivi di Java EE
ƒ modello di programmazione semplificato
ƒ ma richiede una comprensione degli aspetti architetturali e di
altri aspetti resi trasparenti
ƒ supporto per qualitàli à architetturalmente
hi l significative
i ifi i
ƒ portabilità, disponibilità e scalabilità, sicurezza, apertura, ... –
ma come sono ottenute?
ƒ supporto per l’integrazione di sistemi esistenti

6 Introduzione a Java EE Luca Cabibbo – SwA


Modello applicativo di Java EE

7 Introduzione a Java EE Luca Cabibbo – SwA

Modello applicativo di Java EE


‰ Modello applicativo di Java EE
ƒ Java EE fornisce un modello per lo sviluppo di applicazioni
distribuite multi-livello
ƒ client tier, middle tier e back-end tier
ƒ client
li tier
i – supporto per diversi
di i tipi
i i di client
li
ƒ web tier – componenti web in esecuzione sul server Java EE
ƒ business tier – componenti di logica applicativa in
esecuzione sul server Java EE
ƒ back
back-end
end tier – EIS tier – accessibile tramite API standard

8 Introduzione a Java EE Luca Cabibbo – SwA


Componenti Java EE
‰ Le applicazioni Java EE sono fatte di componenti – ce ne sono di
diverse tipologie
ƒ client applicativi e applet – componenti di tipo client
ƒ componenti web – Java Servlet, JSP, JSF – gestiti dal server
Java EE
ƒ Enterprise Java Beans (EJB) o semplicemente Enterprise Bean
– gestiti dal server Java EE

‰ I componenti sono programmi Java, il cui ciclo di vita è diverso da


quello dei programmi Java più semplici
ƒ compilazione
ƒ assemblamento
ƒ deploy
ƒ esecuzione e g
gestione a cura di un application
pp server Java EE

9 Introduzione a Java EE Luca Cabibbo – SwA

Livello client e comunicazione col server

10 Introduzione a Java EE Luca Cabibbo – SwA


Livello web

11 Introduzione a Java EE Luca Cabibbo – SwA

Livello business e EIS

12 Introduzione a Java EE Luca Cabibbo – SwA


Contenitori Java EE
‰ La gestione dei componenti è basata su contenitori
ƒ i componenti devono essere assemblati e rilasciati (deployed)
in un contenitore
ƒ i contenitori (container) sono ambienti runtime standardizzati –
che forniscono servizi specifici ai componenti
ƒ ad es., sicurezza, gestione delle transazioni, persistenza, ...
ƒ i componenti si aspettano che questi servizi siano offerti da
tutte le implementazioni della piattaforma Java EE
ƒ l’assemblaggio gg p prevede la specifica
p di p
parametri p
per
personalizzare il tipo di supporto che deve essere fornito dal
contenitore
ƒ l’erogazione
l’ i di questi
ti servizi
i ièb
basatot su meccanismi
i i di
intercettazione delle richieste e delegazione

13 Introduzione a Java EE Luca Cabibbo – SwA

Contenitori

14 Introduzione a Java EE Luca Cabibbo – SwA


Un esempio noto: applicazioni web

15 Introduzione a Java EE Luca Cabibbo – SwA

Un esempio noto: applicazioni web


‰ Una servlet (HTTP) è una classe usata per estendere le capacità
del server che ospita l’applicazione sulla base di un modello di
programmazione
i richiesta-risposta
i hi t i t

‰ Ciclo di vita di una servlet – controllato dal server


ƒ quando il server riceve una richiesta per una servlet
ƒ se un’istanza non è stata creata, la crea e la inizializza
ƒ invoca il metodo di servizio – ad es., doPost – passandogli
gli oggetti richiesta e risposta
ƒ se il server ha bisogno di rimuovere la servlet
servlet, la finalizza e la
rimuove

‰ In linea di principio, un oggetto servlet può essere usato per


gestire zero o più richieste – in zero o più sessioni

16 Introduzione a Java EE Luca Cabibbo – SwA


Un esempio noto: applicazioni web
‰ Condivisione di informazioni tra componenti web
ƒ non è opportuno che informazioni da condividere siano gestite
dall’oggetto servlet
ƒ sono usati di alcuni oggetti di supporto – gestiti dal server
ƒ contesto web b – per gestire
i llo stato d
dell’applicazione
ll’ li i
ƒ sessione – per gestire lo stato della sessione
ƒ richiesta
ƒ pagina

‰ Come fa il contenitore ad offrire questi servizi ai suoi componenti?


ƒ la servlet può chiedere il suo contesto al contenitore
ƒ il contenitore passa sempre la sessione alla servlet – nella
richiesta – possibile perché il server intercetta la richieste
ƒ contestualmente,
contestualmente il contenitore può offrire ulteriori servizi ai suoi
componenti
17 Introduzione a Java EE Luca Cabibbo – SwA

Java EE: scenari applicativi


‰ Con Java EE sono possibili numerosi scenari applicativi, a due o
più livelli
ƒ i vari livelli sono infatti opzionali – tranne forse il livello client

18 Introduzione a Java EE Luca Cabibbo – SwA


API di Java EE

19 Introduzione a Java EE Luca Cabibbo – SwA

* Enterprise Bean
‰ Gli Enterprise Bean sono componenti Java EE che implementano
la tecnologia EJB
ƒ componenti server-side
ƒ la specifica EJB definisce un “modello (standard) per
componenti
componenti”
ƒ si tratta dunque di un’architettura basata su componenti
ƒ in applicazioni multi-livello
ƒ per implementare logica applicativa
ƒ per usufruire di servizi forniti dal contenitore EJB come gestione
delle transazioni, controllo della concorrenza, affidabilità,
sicurezza, scalabilità
ƒ poiché questi servizi sono disponibili, lo sviluppatore può
concentrarsi sulla soluzione di problemi di business
ƒ componenti portabili,
portabili e che possono essere riusati in
applicazioni diverse
20 Introduzione a Java EE Luca Cabibbo – SwA
Tipi di enterprise Bean
‰ Due tipi di enterprise bean
ƒ session bean
ƒ esegue un compito per un client
ƒ message-driven bean
ƒ agisce come un listener per un certo tipo di messaggi

21 Introduzione a Java EE Luca Cabibbo – SwA

Session bean
‰ Session bean
ƒ un session bean esegue un compito per un cliente –
rappresenta un singolo client all’interno dell’AS
ƒ serve ad implementare (incapsulare) logica applicativa
specifica per il cliente
ƒ il suo stato può riflettere (o meno) la sua interazione con un
client particolare
ƒ in linea di principio non è condiviso tra più client

22 Introduzione a Java EE Luca Cabibbo – SwA


Session bean
‰ Due tipi di session bean
ƒ stateless
ƒ fornisce/rappresenta del comportamento lato server – può
anche implementare un web service
ƒ stateful
t t f l
ƒ gestisce anche lo stato della conversazione con un client –
per tutta la durata di una sessione

‰ Si noti che la presenza o l’assenza di stato


ƒ non ha niente a che vedere con il fatto che il session bean
abbia un proprio stato
ƒ riguarda il fatto che il session bean debba conservare – o meno
– lo stato della sessione/conversazione con il suo client

23 Introduzione a Java EE Luca Cabibbo – SwA

Message-driven bean
‰ Message-driven bean
ƒ un message-driven bean consente di elaborare messaggi in
modo asincrono – agisce come un listener di messaggi JMS o
altri tipi di messaggi
ƒ definisce un metodo onMessage – invocato dal contenitore
quando è disponibile un messaggio – così come doPost di
una servlet è invocato dal contenitore quando viene ricevuta
una richiesta http
ƒ la destinazione da cui riceve messaggi è specificata dal suo
d
descrittore
itt di deployment
d l t
ƒ ad es., per la gestione di workflow

‰ Nota
ƒ i session bean possono essere usati per inviare e ricevere
messaggii JMS iin modo
d sincrono
i – ma non in i modo
d asincrono
i

24 Introduzione a Java EE Luca Cabibbo – SwA


* Session bean
‰ Consideriamo il modello di programmazione degli enterprise bean
di tipo session
ƒ un session bean implementa ed espone un’interfaccia remota
ƒ i suoi client accedono ai servizi offerti mediante l’interfaccia
remota

25 Introduzione a Java EE Luca Cabibbo – SwA

Modello di programmazione
‰ Accesso locale
ƒ oltre all’interfaccia remota, un session bean può offrire servizi
localmente, mediante un’interfaccia locale
ƒ i servizi locali possono essere acceduti solo da componenti
client che risiedono nello stesso contenitore
ƒ per brevità, ignoriamo questo aspetto

26 Introduzione a Java EE Luca Cabibbo – SwA


Modello di programmazione
‰ Implementazione di un session bean
ƒ un session bean è costituito da vari elementi
ƒ l’interfaccia remota – e l’eventuale interfaccia locale
ƒ la classe che implementa il session bean
ƒ informazioni circa la sua configurazione

27 Introduzione a Java EE Luca Cabibbo – SwA

Remote interface per Hello

package hello;

import javax.ejb.Remote;

@Remote
@R t
public interface HelloRemote {

/* dichiara le funzionalità offerte dall’enterprise bean */


public String hello(String name);

session bean definito nell’ambito


nell ambito di un
progetto EJB

d compilare
da il e ffare il d
deploy
l su un AS

28 Introduzione a Java EE Luca Cabibbo – SwA


Implementazione per Hello

package hello;

import javax.ejb.Stateless;

@Stateless(mappedName=“ejb/Hello”)
@Stateless(mappedName= ejb/Hello )
public class Hello implements HelloRemote {

/* iimplementa
l t i metodi
t di d
dell’interfaccia
ll’i t f i remota
t */
public String hello(String name) {
return “Hello, ” + name + “!”;
}

}
sono possibili diverse convenzioni con i nomi
• HelloRemote per l’interfaccia
• HelloBean,
HelloBean HelloImpl o Hello per l’implementazione
l implementazione

29 Introduzione a Java EE Luca Cabibbo – SwA

Client per Hello (1)

package hello.client;

iimportt javax.ejb.EJB;
j jb EJB
import hello.HelloRemote;

public class HelloClient {


@EJB(mappedName=“ejb/Hello”)
private static HelloRemote hello;;
p

public HelloClient() { }

...
}

da compilare ed eseguire
come application client

30 Introduzione a Java EE Luca Cabibbo – SwA


Client per Hello (2)

public static void main(String[] args) {


HelloClient client = new HelloClient();
client.doConversation();
}

public void doConversation() {


String answer = hello.hello(“Luca”);
System.out.println(answer);
}

31 Introduzione a Java EE Luca Cabibbo – SwA

EJB ed annotazioni
‰ Nel codice mostrato, le annotazioni rivestono un ruolo importante
ƒ @Remote, @Local, @Stateless e @Stateful dichiarano il ruolo
svolto dalle diverse unità di programmazione
ƒ nell’esempio, quando verrà fatto il deploy dell’applicazione, il
session bean sarà registrato sul server JNDI
ƒ con un nome di default o con il nome indicato
esplicitamente – ejb/Hello
ƒ hanno a che fare con le “interfacce fornite”
ƒ@@EJB indica una dependency
p y injection
j
ƒ prima di iniziare l’esecuzione dell’application client, verrà
effettuata una ricerca sul server JNDI di un EJB di tipo
H ll R
HelloRemote t (ejb/Hello)
( jb/H ll ) – il riferimento
if i t remoto
t all bean
b
memorizzato nella variabile hello
ƒ ricerca con un nome indicato esplicitamente o di default

ƒ si tratta di un’ “interfaccia richiesta”


32 Introduzione a Java EE Luca Cabibbo – SwA
EJB e composizione
‰ Il binding (collegamento) tra i diversi componenti runtime di
un’applicazione Java EE (in questo caso, l’EJB e l’application
client)
li t) viene
i d
dunque effettuato
ff tt t sulla
ll b
base d
delle
ll iinformazioni
f i i di
deployment
ƒ nell
nell’esempio
esempio, sono immerse nel codice tramite annotazioni
ƒ in pratica, potrebbero essere separate dal codice in
opportuni file di configurazione
g
ƒ si noti il tipo di dipendenze tra componenti
ƒ l’EJB non sa nulla dei suoi client
ƒ l’application client deve conoscere interfaccia e nome
simbolico dell’EJB – ma non deve sapere nulla circa la sua
particolare implementazione

33 Introduzione a Java EE Luca Cabibbo – SwA

Modello di programmazione
‰ Si noti anche che
ƒ l’enterprise bean non viene mai creato esplicitamente dal
programmatore
ƒ come una servlet, viene creato dal contenitore, se e quando
serve
ƒ le chiamate al bean sono in realtà chiamate remote
ƒ come in Java RMI
ƒ come per le servlet, ci aspettiamo che il bean possa definire dei
metodi che verranno chiamati dal contenitore – e non dai suoi
client remoti
ƒ in momenti specifici della vita del bean

34 Introduzione a Java EE Luca Cabibbo – SwA


Il session bean Counter
‰ Consideriamo un altro breve esempio
ƒ un enterprise bean di tipo session/stateful

‰ Interfaccia remota

package counter;

import javax.ejb.Remote;

@Remote
public interface CounterRemote {
/* incrementa il contatore e restituisce il suo valore */
public
bli int
i t count();
t()
}

35 Introduzione a Java EE Luca Cabibbo – SwA

Implementazione del bean Counter


package counter;

import
p jjavax.ejb.Stateful;
j ;
import javax.annotation.*;

@Stateful(mappedName=“ejb/Counter”)
@Stateful(mappedName ejb/Counter )
public class CounterBean implements CounterRemote {
private int val;

/* assegna un valore iniziale al contatore */


@PostConstruct un metodo annotato @ @PostConstruct
public
bli voidid initialize()
i iti li () {
viene eseguito subito dopo la
this.val = 0;
} costruzione dell’istanza del bean
/* incrementa il contatore e restituisce il suo valore */
public int count() {
val++; return val;
}
}
36 Introduzione a Java EE Luca Cabibbo – SwA
Client per Counter (1)
package counter.client;

import javax.ejb.EJB;
javax ejb EJB;
import counter.CounterRemote;

public class CounterClient {


@EJB(mappedName=“ejb/Counter”)
private static CounterRemote counter;

public CounterClient() { }

public static void main(String[] args) {


CounterClient client = new CounterClient();
client.doConversation();
();
}
da compilare ed eseguire
... segue ... come application client
}
37 Introduzione a Java EE Luca Cabibbo – SwA

Client per Counter (2)

public void doConversation() {


for (int i=1; i<=50; i++) {
System.out.println( counter.count() );
/* stamperà 1, 2, ..., 50
g
* anche se vengono mandati in esecuzione
* più client concorrenti */
}
}

38 Introduzione a Java EE Luca Cabibbo – SwA


Ciclo di vita dei session bean
‰ La programmazione degli enterprise bean richiede la conoscenza
del loro ciclo di vita
ƒ durante alcuni eventi significativi della vita di un enterprise
bean, vengono infatti invocati eventuali metodi etichettati con
delle opportune annotazioni

39 Introduzione a Java EE Luca Cabibbo – SwA

Ciclo di vita dei session bean stateless

‰ Ad esempio, si consideri un session bean (stateless) che fornisce


un metodo findProduct(int id) per effettuare la ricerca di un
Product in una base di dati
ƒ findProduct potrebbe ottenere una connessione alla base di
dati, fare l’interrogazione, e chiudere la connessione
ƒ la connessione jdbc potrebbe essere riutilizzata in più
esecuzioni di findProduct – aprendola in un metodo annotato
@PostConstruct e chiudendola in un metodo annotato
@PostConstruct,
@PreDestroy
40 Introduzione a Java EE Luca Cabibbo – SwA
Ciclo di vita dei session bean stateful

‰ Il ciclo di vita dei session bean stateful è più complesso


ƒ un session bean stateful può essere “passivato”
passivato – lo stato della
sessione può essere serializzato e salvato automaticamente in
memoria secondaria – per essere poi “attivato” (ricaricato) in
memoria in un secondo tempo
41 Introduzione a Java EE Luca Cabibbo – SwA

Ciclo di vita dei session bean stateful (1/2)


‰ I metodi di callback del ciclo di vita devono essere pubblici, senza
parametri, void – ed annotati come segue
ƒ @PostConstruct
ƒ invocato dal contenitore su istanze del bean appena
costruite – dopo che tutte le iniezioni di dipendenze sono
state completate – prima della prima invocazione dei metodi
di business
ƒ @PreDestroy
ƒ invocato dopo l’esecuzione di metodi annotati @Remove –
prima che l’istanza del bean sia rimossa dal contenitore
ƒ @Remove
ƒ invocato
i t su richiesta
i hi t ddall client
li t per iindicare
di lla fifine d
della
ll
sessione – ad es., @Remove public void endSession() {}

42 Introduzione a Java EE Luca Cabibbo – SwA


Ciclo di vita dei session bean stateful (2/2)
ƒ @PrePassivate
ƒ invocato prima che il contenitore passivi il bean (serializza e
salva lo stato) – prima che il container rimuovi il bean
temporaneamente dalla sua memoria
ƒ @PostActivate
ƒ invocato dal contenitore dopo aver attivato (caricato e
deserializzato lo stato) il bean

43 Introduzione a Java EE Luca Cabibbo – SwA

Attivazione e passivazione
‰ Il contenitore EJB gestisce un pool di oggetti EJB
ƒ assegna le richieste ad oggetti in questo pool
ƒ può decidere di riassegnare un oggetto, inizialmente assegnato
ad un client, ad un client diverso
ƒ il client
li di
diverso potrebbe
bb non aver ancora completato
l lla sua
sessione

‰ Il container gestisce lo swapping di oggetti EJB mediante


ƒ passivazione – lo stato del bean serializzato e salvato in
memoria – il metodo @PrePassivate specifica come rilasciare
risorse non serializzabili (ad es., connessioni)
ƒ attivazione – lo stato del bean ripristinato dai dati salvati in
memoria – il metodo @PostActivate specifica come riprendere
risorse

44 Introduzione a Java EE Luca Cabibbo – SwA


* Message-driven bean
‰ Message-driven bean
ƒ un message-driven bean è un enterprise bean che consente di
elaborare messaggi in modo asincrono
ƒ funge normalmente da ascoltatore di messaggi JMS
ƒ questii messaggii JMS possono essere iinviati
i id da altri
l i
componenti Java EE e non

45 Introduzione a Java EE Luca Cabibbo – SwA

Similitudini e differenze
‰ I message-driven bean sono simili ai session bean stateless
ƒ le istanze sono equivalenti, poiché non gestiscono stato
conversazionale
ƒ un message-driven bean può elaborare messaggi da più clienti

‰ I message-driven bean sono diversi dai session bean


ƒ poiché non vengono acceduti mediante un’interfaccia – ma
tramite una destinazione JMS

46 Introduzione a Java EE Luca Cabibbo – SwA


Produttore di messaggi
‰ Come produttore, può essere utilizzato l’application client
SimpleProducer mostrato nel contesto di JMS
ƒ che genera ed invia un certo numero di messaggi di testo alla
destinazione jms/MyQueue

47 Introduzione a Java EE Luca Cabibbo – SwA

Esempio – SimpleMessageConsumerEJB (1)


package simplemessageconsumer;

import
p jjavax.ejb.*;
j ;
import javax.jms.*;
import java.util.logging.*;

@MessageDriven(
activationConfig = {
@ActivationConfigProperty(
propertyName = "destinationType",
propertyValue = "javax.jms.Queue"
) }},
mappedName = “jms/MyQueue")
public class SimpleMessageConsumer implements MessageListener {

...

48 Introduzione a Java EE Luca Cabibbo – SwA


Esempio – SimpleMessageConsumerEJB (2)
@MessageDriven(...)
public class SimpleMessageConsumer implements MessageListener {
public SimpleMessageConsumer()
p p g () { }

public void onMessage(Message message) {


...
}
}

49 Introduzione a Java EE Luca Cabibbo – SwA

Esempio – SimpleMessageConsumer (3)


public void onMessage(Message message) {
Logger logger = Logger.getLogger("SimpleMessageConsumer");

try {
if (message instanceof TextMessage) {
TextMessage msg = (TextMessage) message;
logger.info("SimpleMessageConsumer: Message received: " +
msg.getText());
} else {
logger.warning("Message of wrong type: " +
message.getClass().getName());
}
} catch (Exception e) {
System.err.println("Exception in SimpleMessageConsumer");
e.printStackTrace();
}
}
da compilare e fare il deploy su un AS
50 Introduzione a Java EE Luca Cabibbo – SwA
* Java EE e qualità
‰ La piattaforma Java EE si propone di sostenere/realizzare un
certo numero di qualità
ƒ alcune tipiche per applicazioni web e applicazioni distribuite
ƒ altre più strategiche

‰ Per alcuni attributi di qualità, discutiamo brevemente


ƒ obiettivi di progetto
ƒ come raggiunti
ƒ tattiche usate

51 Introduzione a Java EE Luca Cabibbo – SwA

Soluzioni Java EE – in sintesi


‰ Soluzioni di Java EE
ƒ componenti EJB
ƒ JSP
ƒ Java servlet
ƒ JMS – Java Messaging Service
ƒ JNDI – Java NAming and Directory Interface
ƒ JTS – Java Transaction Service
ƒ JCA – J2EE Connector Architecture
ƒ Client
Cli t AAccess S
Services
i COM BBridge
id
ƒ RMI over IIOP
ƒ JDBC
ƒ WS
ƒ ...

52 Introduzione a Java EE Luca Cabibbo – SwA


Portabilità
‰ Portabilità – “write once, run everywhere”
ƒ obiettivi
ƒ portabilità su piattaforme/AS diversi – con uno sforzo minimo
ƒ non garantito dal solo linguaggio Java – i componenti lato
server richiedono
i hi d servizi
i i addizionali
ddi i li come transazioni
i ie
sicurezza
ƒ come raggiunta
ƒ la specifica impone che i contenitori per componenti
forniscano servizi addizionali definiti contrattualmente
ƒ contenitori definiti per le principali piattaforme
ƒ tattiche usate
ƒ maintain existing interfaces, generalize modules, abstract
common services

53 Introduzione a Java EE Luca Cabibbo – SwA

Costruibilità
‰ Costruibilità
ƒ obiettivi
ƒ alcuni servizi comuni devono poter essere gestiti in modo
semplice – ad es., transazioni, sicurezza, servizi di naming,
...
ƒ come raggiunta
ƒ la specifica impone che i contenitori implementino diversi
servizi comuni pronti da usare
ƒ servizi specificati
p spesso
p a livello di rilascio – i descrittori di
deployment consentono di selezionare e configurare i servizi
da usare
ƒ tattiche
t tti h usate t
ƒ abstract common services, maintain interfaces, hide
information

54 Introduzione a Java EE Luca Cabibbo – SwA


Specificità bilanciata
‰ Specificità bilanciata
ƒ obiettivi
ƒ standard per componenti dettagliato abbastanza – per
definire una semantica di riferimento
ƒ ma allo
ll stesso tempo, abbastanza
bb generalel per consentire
i
ai venditori di offrire funzionalità/caratteristiche
specifiche/aggiuntive
ƒ come raggiunta
ƒ servizi pper EJB specificati
p in termini di API – dettagliato
g – ma
generale per consentire al costruttore del contenitore di
implementare caratteristiche specifiche e ottimizzazioni
ƒ tattiche
t tti h usate t
ƒ anticipate expected changes, abstract common services,
hide information

55 Introduzione a Java EE Luca Cabibbo – SwA

Trasparenza nell’implementazione
‰ Trasparenza nell’implementazione
ƒ obiettivi
ƒ fornire una trasparenza completa in modo che programmi
client possano essere indipendenti dai dettagli
implementativi – ad es.,
es piattaforma hw/sw,
hw/sw posizione dei
componenti, ...
ƒ come raggiunta
ƒ l’uso di interfacce (remote e locali) incoraggia il
disaccoppiamento tra interfaccia e implementazione
ƒ le decisioni relative alle implementazioni degli enterprise
bean sono quindi trasparenti ai suoi client
ƒ tattiche
t tti h usate t
ƒ maintain existing interfaces, semantic coherence

56 Introduzione a Java EE Luca Cabibbo – SwA


Interoperabilità
‰ Interoperabilità
ƒ obiettivi
ƒ supportare l’interoperabilità di componenti lato server
realizzati su contenitori di fornitori diversi
ƒ interoperabilità
i bili à con CORBA e componentii Mi Microsoft
f
ƒ come raggiunta
ƒ supporto per l’interoperabilità tra componenti lato server
definito contrattualmente a livello della piattaforma
ƒ sostiene anche la definizione di bridge verso altre
piattaforme (CORBA e COM)
ƒ supporto per Web services
ƒ tattiche usate
ƒ adherence to defined protocols

57 Introduzione a Java EE Luca Cabibbo – SwA

Evolvibilità/estendibilità
‰ Evolvibilità/estendibilità
ƒ obiettivi
ƒ possibilità di adottare diverse tecnologie in modo
incrementale
ƒ possibilità
ibili à di iincorporare nuove tecnologie
l i quandod iintrodotte
d
ƒ come raggiunte
ƒ specifiche partizionate in categorie (ad eses., web tier
tier, EJB
tier) – che possono essere adottate ed evolvere
separatamente
p
ƒ specifica basata su componenti consente estensioni future –
alcune tecnologie attuali erano assenti in versioni precedenti
ƒ tattiche usate
ƒ semantic coherence, hide information
ƒ anticipate
ti i t expected t d changes
h

58 Introduzione a Java EE Luca Cabibbo – SwA


Disponibilità/affidabilità
‰ Disponibilità/affidabilità
ƒ obiettivi
ƒ sistema disponibile 24/7 – con fuori servizio di breve durata
ƒ come raggiunta
ƒ contenitori implementano servizi per la gestione di
transazioni e meccanismi di recovery
ƒ tattiche usate
ƒ heartbeat, transactions, passive redundancy

59 Introduzione a Java EE Luca Cabibbo – SwA

Prestazioni
‰ Prestazioni
ƒ obiettivi
ƒ il sistema deve rispondere rapidamente agli utenti
ƒ come raggiunta
ƒ l’approccio a componenti distribuiti rende possibile la
ridistribuzione del carico e il tuning
ƒ tattiche usate
ƒ configuration files, load balancing, maintain multiple copies

60 Introduzione a Java EE Luca Cabibbo – SwA


Scalabilità
‰ Scalabilità
ƒ obiettivi
ƒ il sistema deve sopportare variazioni del carico – senza
intervento umano
ƒ come raggiunta
i
ƒ architettura client/server multi-livello
ƒ la piattaforma prevede la possibilità di espandere il numero
di server e fare bilanciamento del carico
ƒ tattiche usate
ƒ load balancing

61 Introduzione a Java EE Luca Cabibbo – SwA

Sicurezza
‰ Sicurezza
ƒ obiettivi
ƒ autenticazione e autorizzazioni
ƒ come raggiunta
ƒ la specifica definisce diversi meccanismi per la sicurezza –
dichiarativi, basati su ruoli e programmabili
ƒ tattiche usate
ƒ authentication, authorization, data confidentiality

62 Introduzione a Java EE Luca Cabibbo – SwA


Usabilità
‰ Usabilità
ƒ obiettivi
ƒ utenti diversi devono poter accedere contenuti diversi in
forme diverse
ƒ come raggiunta
i
ƒ la piattaforma prevede tecnologie specifiche (ad es., JSP e
servlet) per fornire contenuti in forme diverse
ƒ tattiche usate
ƒ separate user interface

63 Introduzione a Java EE Luca Cabibbo – SwA

Potrebbero piacerti anche