ejb advanced2010

39
09/12/2010 1 EJB avancés Objectif : Etudier la configuration du contexte d’exécution Sa mise en œuvre implicite Et explicite Transactions Sécurité Timer Récapitulatif Performances Les transactions Concept fondamental dans les applications distribuées Indispensables pour une exécution sûre des services Difficiles à mettre en œuvre Problèmes de performances

Upload: hrzandi

Post on 18-Jul-2015

189 views

Category:

Documents


0 download

TRANSCRIPT

09/12/2010

1

EJB avancés

Objectif : Etudier la configuration du contexte

d’exécution

Sa mise en œuvre implicite

Et explicite

Transactions

Sécurité

Timer

Récapitulatif

Performances

Les transactions

Concept fondamental dans les applications distribuées

Indispensables pour une exécution sûre des services

Difficiles à mettre en œuvre

Problèmes de performances

09/12/2010

2

Atomicité

Garantir une exécution tout ou rien

Difficile sur un système centralisé

Encore plus dans une architecture distribuée

Nombreuses possibilités d'erreurs

Concurrence d'accès

Cause de nombreux problèmes

Comment garantir des exécutions correctes ?

Et des performances acceptables ?

09/12/2010

3

Les propriétés ACID

Atomicité

Consistence

Isolation

Durabilité

Les modèles de transactions

Flat

Nested

Flexible

Distributed

...

09/12/2010

4

Flat Transactions

Nested Transaction

09/12/2010

5

Distributed Transaction

Java Transaction Service

Fournit l'interface avec des moniteurs transactionnels

Communication avec les moniteurs (XAResource)

Communication avec les serveurs d'application

(TransactionManager)

Communication avec les clients (UserTransaction)

09/12/2010

6

Transactions et EJB

Container Managed

Le container se charge de tout

Approche déclarative

Bean Managed

Transaction gérée par programme dans les beans

Client Controlled

Transaction programmée du coté client

Bean Managed

09/12/2010

7

Container Managed

Client Controlled

09/12/2010

8

Gérer la visibilité des transactions ?

Les attributs de transaction (Container

managed)

09/12/2010

9

Exemple

Transactions et types de beans

09/12/2010

10

L'interface UserTransaction

Statut des transactions

09/12/2010

11

Utilisation dans un client

Encore de l'injection

L'isolation

Garantir la cohérence des accès concurrent

Sérialisabilité (les exécutions concurrentes sont équivalentes à

des exécutions en série)

Problèmes classiques

Lecture impropre

Perte de mise à jour

Utilisations de verrous mais

Deadlock

Pénalités sur les performances

09/12/2010

12

Les niveaux d'isolation

READ UNCOMMITED

Pas d'isolation – on voit tout – on ne tient pas compte des verrous en lecture

READ COMMITED

On ne lit que des résultats commités – mais lectures non répétables

REPEATABLE READ

Les lectures sont répétables mais lecture fantomes (nouvelles données en cours de transaction)

SERIALIZABLE

Mise en oeuvre dépendante des serveurs d'application et des base de données

Container Managed Concurrency

09/12/2010

13

Concurrent access + Timeout

Bean Managed Concurrency

09/12/2010

14

Contrôle optimiste ou pessimiste

Pessimiste : on évite les problèmes à priori

Problèmes de performance

Optimiste : on vérifie a posteriori qu'il n'y en a pas eu

Meilleure performance

Risque de perdre du travail

Conclusion

Les transactions sont faciles à mettre en oeuvre

Mais difficile à contrôler

Quelles garanties on veut avoir ?

Quels scénarios sont les plus probables ?

Quels compromis entre performances et sureté de l'exécution

sont acceptables ?

09/12/2010

15

La sécurité

Aspect fondamental des applications distribuées

Quels sont les risques ? Quels sont les parties critiques

de l'application

Les fonctions

Authentification

Est-tu bien celui que tu prétends être ?

Autorisation

As-tu bien le droit de faire ça ?

Intégrité des données

Les données peuvent elles être modifiées

Confidentialité des données

As-tu le droit de lire ces données ?

09/12/2010

16

Sécurité des applications Web

Premier point d'interactions avec les utilisateurs

Dépend des specs servlet et J2EE

3 modes d'authentification

HTTP Basic and Digest

Form Based

HTTPS Client authentification (certificat)

09/12/2010

17

Autorisation dans les applications Web

Déclarative

Règles de sécurité dans le descripteur

Programmée

Contrôles de sécurité dans les servlets

Contexte de sécurité

Confidentialité/Intégrité

Basé sur un transport sécurisé (HTTPS)

Contraintes dans le descripteur de déploiement

(CONFIDENTIAL, INTEGRAL, NONE)

09/12/2010

18

Sécurité dans les EJB

Authentification basée sur JAAS

Java Authentication and autorisation Service

Subject

Container pour principal et credentials

The Subject in Detail

Subject

PrincipalPrincipal

Principal

Public

Credential

Public

Credential

Public

Credential

Private

Credential

Private

Credential

Private

Credential

09/12/2010

19

Principal

Identifie un Subject

Un Subject = plusieurs principals

1. package java.security;2. public interface Principal {3. ...4. public String getName();5. }

Role, User, Group

09/12/2010

20

Différents login modules

Pluggable Authentication

Login Modules

Application

Login Context

JndiLogin

Module

NTLogin

Module

UnixLogin

Module

Krb5Login

Module

MyLogin

Module

LDAP Server

DbLogin

Module

NT

Authentication

Unix

Authentication

Kerberos

AuthenticationRDBMS

Biometric

Authentication

Le fonctionnement de JAAS

09/12/2010

21

Login Configuration

Exemple de login

09/12/2010

22

Le CallBackHandler

Les autorisations

Autorisations programmées

Codées dans les Beans

Autorisations déclarées

Le container prend en charge le contrôle des autorisations

09/12/2010

23

Les roles

Un rôle = une collection d'identités

Employé

Etudiant

Administrateurs

...

La déclaration de la sécurité

Les roles utilisés

Le rôle par défaut

Le rôle autorisé

Tout le monde peut le faire

09/12/2010

24

Les annotations

@RolesAllowed

@PermitAll

@DenyAll

La définition au niveau de la méthode surcharge la

définition au niveau de la classe

Progagation de la sécurité

@RunAs(''admin'')

Surcharge le rôle du contexte de l'appelant

La méthode va s'exécuter avec le rôle admin

09/12/2010

25

La propagation de la sécurité

L'identité et les rôles sont transmis par le contexte

L'identité de l'appelant

Vérification de son rôle

Autre exemple (from Oracle)

09/12/2010

26

Description par fichier de configuration

Declaratif ou programmée

Déclaratif :

Découplage du code métier et de la définition de la sécurité

Mais .... c'est insuffisant

Programmée

Complique le code

Mais permet un contrôle au niveau des instances

09/12/2010

27

Sécurité et WebServices

Comment sécuriser des appels de Web Services de bout

en bout

XML Signature et XML Encryption

Permettent le transfert de documents XML entre des

noeuds inconnus

Les parties cryptées ne seront lisibles que par les noeuds

qui connaissent les clés.

Tout le message n'a pas besoin d'être crypté/signé

09/12/2010

28

SAML

Security Assertion Markup Language

Assertion = Security token

Utilisées par les PEP (Policy Enforcement Point)

SAML Authority : emets les token

Token = le sujet est authentifié par moi ou j'autorise le sujet à

faire A et B ou le sujet a le rôle X

Le PEP doit faire confiance à l'autorité

WS-Security

The security context is in the message

09/12/2010

29

Conclusion sur la sécurité

Encore difficile à mettre en oeuvre

Encore plus dans un environnement distribué

Nombreux standards

Ça progresse dans le domaine des Web Services

EJB Timer

Comment déclencher des actions à des instants

particuliers

Opérations de maintenance

Batch processing

Deadline dans des workflows

Comment permettre d'appeler des services à des

instants donnés

09/12/2010

30

Timer Service API

javax.ejb.TimedObject

javax.ejb.Timer

javax.ejb.TimerHandle

javax.ejb.TimerService

TimerService

Permet de créer un Timer

09/12/2010

31

Interactions avec les EJB

Création automatique de Timers

09/12/2010

32

EJB et Timer

Portable

Facile à mettre en oeuvre

Granularité des services

Limitations dans la définition des timers

L’exemple Duke Bank

09/12/2010

33

La structure de l’application

Les Session Beans

AccountController

CustomerController

TxController

Implantation des méthodes métiers de l’application

Facade pour les clients

Masquent la représentation du modèle

09/12/2010

34

09/12/2010

35

Les Entity Classes

Entity Account

09/12/2010

36

Les requêtes

La table

09/12/2010

37

Application d’administration

Application Web

09/12/2010

38

EJB et Web

CustomerBean

Composant représentant le client dans la vue

Performance

http://java.sun.com/developer/technicalArticles/ebeans/ej

b_30/

Conception des applications

Un appel par cas d’utilisation

Stateful vs Stateless

Gestion de la persistence

Gestion des différents niveaux de cache

Consistence vs availability

09/12/2010

39

That’s all folks

http://www.youtube.com/watch?v=gBzJGckMYO4