53
1 EJB3: Session de Beans

Ejb3 2-session-beans fr

  • Upload
    oxia

  • View
    998

  • Download
    2

Embed Size (px)

Citation preview

Page 1: Ejb3 2-session-beans fr

1

EJB3: Session de Beans

Page 2: Ejb3 2-session-beans fr

2

Agenda

Session de Beans

Déploiement des projets EJB au serveur

Les clients distants pour les Session de

Beans

Session de beans sans état

L'accès local aux EJB

Page 3: Ejb3 2-session-beans fr

3

Aperçu

Page 4: Ejb3 2-session-beans fr

4

Avantages d’EJB Encapsuler la logique

– La logique métier séparé de contrôle et de présentation l'accès à distance

– Applications multiples sur différents serveurs peuvent accéder EJB la simplicité

– Relativement facile à utiliser par rapport aux autres systèmes à distance d'objets

Large soutien aux fournisseurs

– JBoss, Oracle AS, WebLogic, WebSphere, Glassfish, etc évolutivité

– Pratiquement tous les app Java EE en charge les serveurs de clustering, équilibrage de charge et de basculement

Page 5: Ejb3 2-session-beans fr

5

Désavantages de EJB La complexité

Bien EJB3 pourrait être plus simple que les systèmes RemoteObject autre, à distance objet-cadres sont beaucoup plus complexes que locale-objet d'approches.

Le printemps est plus facile et plus puissant pour l'accès local

Nécessite le serveur Java EE Impossible d'exécuter sur Tomcat, Jetty, Resin, JRun, Résine Serveurs Java EE sont généralement beaucoup plus difficile à configurer,

considérablement plus lent à démarrer / redémarrer au cours du développement et de test, et coûtent généralement de l'argent

Nécessite la dernière version de Java EE version Doit mettre à niveau vers les derniers communiqués de serveur

Mauvaise réputation à cause de versions antérieures EJB2 était si complexe que les EJB a mauvaise réputation à ce jour

Page 6: Ejb3 2-session-beans fr

6

Utilisation de l'Industrie (Mots-clés dans Offres d'emploi dans le monde)

Page 7: Ejb3 2-session-beans fr

7

Session Beans: Aperçu session de Beans

Sur le serveur, vous faites l'interface (marqué avec @ Remote) et POJO qu'elle met en œuvre (marqués avec @ Stateless) Ordinaires objet Java avec les méthodes ordinaires qui

utilisent des objets Java ordinaires comme arguments et les types de retour

Aucun Etat (vars exemple) maintenu entre les appels de méthode

Le client utilise InitialContext.lookup ("nom") pour obtenir la réf.

Client effectue des appels de méthode normale (données sérialisées sur le net.)

Session EJB sans état Mark POJO avec @ Stateful au lieu de @ Stateless Mark méthode spéciale avec @ Remove Le client ne similaires appels de recherche et de méthode, mais il

doit appeler la méthode particulière lorsque vous avez terminé. Etat (vars exemple) maintenu jusqu'à ce que cette

méthode appelée

Page 8: Ejb3 2-session-beans fr

8

session Beans sans état

Page 9: Ejb3 2-session-beans fr

9

session Beans sans état: Idée

POJOs Ordinaire des classes Java; pas d'interfaces ou des

classes spéciales parent. Fournissent souvent une sorte de service telles que la cartographie des identifications client à des objets à la clientèle.

L'accès local ou à distance Peut être consulté soit sur serveur d'application locale (même machine

que soft qui utilise les beans) ou serveur d'application distant (machine différente du soft qui utilise les beans)

Ne pas maintenir l'état du client Les variables d'instance sont protégés contre les conditions de course que

pendant un seul appel de méthode. Faut pas stocker l'état du client spécifique qui doit être accessible à travers des appels de méthodes multiples.

Page 10: Ejb3 2-session-beans fr

10

session Beans sans état: Approche• Faire nouvel EJB projet

– fichier Nouveau EJB Project

• Possibilité de choisir JBoss ou Glassfish comme exécution cible. De toute façon, vous pouvez déployer des projets à la fois aux serveurs.

• Définir une interface

– Marque avec @ Remote

• Pour accéder à d'autres serveurs ou de projets sur le même serveur

– Marque avec @ Local

• Pour ne permettre l'accès de projets sur un même serveur (par défaut)

• Créer une classe qui implémente l'interface

– Marque avec des apatrides par défaut du serveur JNDI cartographie @

– Marque AVEC @ Stateless (mappedName = "SomeJndiName")

• Déployer application serveur

– cliquez R-sur serveur, Ajouter / Supprimer des projets, de démarrer le serveur

Page 11: Ejb3 2-session-beans fr

11

EJB Project

faire des projets fichier nouveau EJB Project Choisissez un nom JBoss ou Glassfish comme cible d'exécution Vous pouvez ensuite déployer sur n'importe quel

serveur compatible; vous n'êtes pas limité à celui choisi initialement.

Facultatif: Ajouter à une EAR Si vous faites Projet web dynamique plus tard tard qui

veut utiliser @ EJB, vous pouvez l'ajouter à la même EAR

Déploiement de projet cliquez R-sur JBoss ou Glassfish (ou tout autre serveur Java

EE 5 que vous avez enregistré avec Eclipse), Ajouter et supprimer des projets, choisissez Projet, Ajouter, Terminer

cliquez R-sur JBoss ou Glassfish (ou autre), Démarrer

Page 12: Ejb3 2-session-beans fr

12

Interface

Page 13: Ejb3 2-session-beans fr

13

Classe qui implémente l'interface

Page 14: Ejb3 2-session-beans fr

14

Les clients de session de Beans sans état

Page 15: Ejb3 2-session-beans fr

15

Idée Les clients estiment que le bean par JNDI

Client Java code ne sais même pas la machine sur laquelle réside le bean

Les clients utilisent bean comme un POJO normal Mais les arguments et les valeurs de retour sont envoyés à travers le

réseau Ainsi, les classes personnalisées doivent être sérialisables

Code de baseInitialContext context = new InitialContext();InterfaceName bean = (InterfaceName)context.lookup("JNDI-Name");

jndi.properties Fichier texte dans le classpath; donne URL distante et d'autres infos

Page 16: Ejb3 2-session-beans fr

16

Projet client distant Fait nouveau projet Web dynamique

Choisir chanceux numéros-client que le nom Choisir que JBoss 5 d'exécution cible

Peuvent être déployées pour Glassfish ou d'autres serveurs Java EE 5

jndi.properties Fichier texte créé, appelé «jndi.properties" dans le dossier src Doit donner URL distante. Souvent d'autres infos. Spécifiques du serveur! Détails montré dans la diapositive à venir

Déploiement N'a pas besoin de courir sur la même machine que le Projet d'EJB. Autonome (bureau) les clients n'ont pas besoin d'être déployé sur

n'importe quel serveur d'application, ils peuvent simplement avoir une "main" méthode.

Applications Web devrait être déployée sur un serveur Java EE 5 app

Page 17: Ejb3 2-session-beans fr

17

Distance autonome (bureau) du client

Page 18: Ejb3 2-session-beans fr

18

Remarque sur le nom de context.lookup Numéro

Vous passez un nom à context.lookup. Si vous utilisez simplement @ Remote sans mappedName, le nom par défaut est différents pour JBoss que pour Glassfish (ou autres serveurs).

Dans JBoss, le nom JNDI serait"NumberServiceBean/remote"

En Glassfish, le nom JNDI serait"coreservlets.bean.NumberService«

Solution: utiliser mappedName J'utilise @ Stateless (mappedName = "NumberCreator") au lieu de simplement @ Stateless Donc, je peux utiliser le même nom (NumberCreator) quel

que soit dont le serveur du projet EJB est déployé pour

Page 19: Ejb3 2-session-beans fr

19

Remote Client: jndi.properties

Page 20: Ejb3 2-session-beans fr

20

Standalone client distant: Résultats

lucky-numbers (EJB Project) Déployé à JBoss ou Glassfish. La sortie est la même

lucky-nombres-client (Proj Web dynamique.) Pas encore déployé sur n'importe quel serveur. jndi.properties correspond au serveur d'EJB projet

sortie

Page 21: Ejb3 2-session-beans fr

21

Client Web à distance (Servlet)

Page 22: Ejb3 2-session-beans fr

22

Client Web à distance(Servlet Suite)

Page 23: Ejb3 2-session-beans fr

23

Client Web à distance(web.xml)

Page 24: Ejb3 2-session-beans fr

24

Client Web à distance(Résultats de JBoss 5)

Page 25: Ejb3 2-session-beans fr

25

Client Web à distance(Résultats Glassfish 2.1)

Page 26: Ejb3 2-session-beans fr

26

Utilisation de @ EJB pour accéder à des beans locaux

Page 27: Ejb3 2-session-beans fr

27

Idée Utilisez @ EJB, avant variable d'instance

Bean sera automatiquement instanciée et assignée. Par exemple: @ d'EJB privés Certains services mon service;

utile pour les Un EJB qui utilise un autre d'EJB dans le cadre de sa logique Toujours une bonne idée puisque les EJBs sont

habituellement ensemble De multiples applications Web qui utilisent la même logique métier Plus simple, mais application Web ne peut pas passer au serveur

distant

restrictions Avant de variables d'instance, les variables non locales. Les deux classes doivent faire partie du même EAR sur le même

serveur Dans Eclipse, toutes les classes dans un seul projet d'EJB

satisfaire cette Si vous utilisez un projet EJB (EJB) et des projets web

dynamiques (les classes qui utilisent les EJB), vous devez choisir "Ajouter un projet à une EAR» et spécifiez un même

Page 28: Ejb3 2-session-beans fr

28

Exemple: Interface d'EJB

Page 29: Ejb3 2-session-beans fr

29

Exemple: classe EJB qui Implémente interface

Page 30: Ejb3 2-session-beans fr

30

Exemple: client distant (Servlet)

Page 31: Ejb3 2-session-beans fr

31

Exemple: client distant (Servlet Suite)

Page 32: Ejb3 2-session-beans fr

32

Client à distant: jndi.properties

Page 33: Ejb3 2-session-beans fr

33

Exemple: Client à distant(web.xml)

Page 34: Ejb3 2-session-beans fr

34

Exemple: Résultats (JBoss 5)

Page 35: Ejb3 2-session-beans fr

35

Exemple: Résultats (Glassfish 2.1)

Page 36: Ejb3 2-session-beans fr

36

Sessions Dynamiques de Beans

Page 37: Ejb3 2-session-beans fr

37

Sessions Dynamiques de Beans: Idée

POJOs Ordinaire des classes Java; aucune des interfaces spéciales

ou d'un parent classes. Fournissent souvent une sorte de service qui stocke informations (temporairement) ainsi que de l'envoyer. Local ou accès à distant

Peut être consulté soit sur serveur d'application locale (même machine comme soft qui utilise les beans) ou serveur d'application à distance (différents machine à partir de app qui utilise les beans)

Maintenir l'état du client Vous pouvez configurer les beans avec le client-spécifiques

d'informations, d'accéder ensuite au info (sans crainte de la race conditions) jusqu'à ce que vous appelez la méthode spéciale marquée avec @ Remove.

Page 38: Ejb3 2-session-beans fr

38

Sessions Dynamiques de Beans : Approche

Faire nouvel EJB projet Fichier Nouveau projet EJB

Définir une interface Marque avec @ Remote Pour accéder à d'autres serveurs ou de projets sur le même serveur Marque avec @ Local Pour ne permettre l'accès de projets sur un même serveur (par défaut)

Créer une classe qui implémente l'interface Marque avec @ Dynamique pour serveur JNDI cartographie Marque avec @ (Stateful mappedName = "SomeJndiName") Marquer une méthode avec @ Retirer Lorsqu'elle est appelée, le serveur termine la session et l'instance de

GC

Déployer application serveur cliquez R-sur serveur, Ajouter / Supprimer des projets, de démarrer le serveur

Page 39: Ejb3 2-session-beans fr

39

Exemple: Interface d’EJB

Page 40: Ejb3 2-session-beans fr

40

Exemple: Classe EJB qui implémente l'interface

Page 41: Ejb3 2-session-beans fr

41

Exemple: Classe EJB qui implémente l'interface (suite)

Page 42: Ejb3 2-session-beans fr

42

Exemple: client distant (Servlet)

Page 43: Ejb3 2-session-beans fr

43

Exemple: client distant (Servlet Suite)

Page 44: Ejb3 2-session-beans fr

44

Exemple: : client distant (JSP)

Page 45: Ejb3 2-session-beans fr

45

Exemple: client distant (jndi.properties)

Page 46: Ejb3 2-session-beans fr

46

Exemple: : client distant (web.xml)

Page 47: Ejb3 2-session-beans fr

47

Exemple: client distant (formulaire de saisie)

Page 48: Ejb3 2-session-beans fr

48

Résultats : client distant (JBoss 5)

Page 49: Ejb3 2-session-beans fr

49

Résultat: client distant (Glassfish 2.1)

Page 50: Ejb3 2-session-beans fr

50

Récapitulation

Page 51: Ejb3 2-session-beans fr

51

Livres et références EJB 3 en action

Debu Panda, Reza Rahman, et Derek Lane (Manning) Enterprise JavaBeans 3.0 (5e édition)

Bill Burke et Richard Monson-Haefel (O'Reilly) Tutoriel Java EE 5 (EJB section)

http://java.sun.com/javaee/5/docs/tutorial/doc/bnblr.html JBoss EJB3 Tutoriel

http://docs.jboss.com/ejb3/app-server/tutorial/ Glassfish EJB FAQ

https://glassfish.dev.java.net/javaee5/ejb/EJB_FAQ.html Cay Horstmann EJB Tutoriel

http://www.horstmann.com/elvis/elvis-meets-glassfish.html

Page 52: Ejb3 2-session-beans fr

52

Résumer Session de Beans

Interface: marque avec @ Remote Classe: marque avec @ Stateless (mappedName = "blah")

Session d’ EJB Dynamique Classe Marque avec @ Dynamique lieu de @ Stateless Marquer une méthode avec @ Retirer

session Clients bean InitialContext context = new InitialContext ();InterfaceType var = (InterfaceType) context.lookup ("blah");var.someMethod (args); Pour les beans avec état, appelez la méthode spécialement

marqués lorsque vous avez terminé Besoin jndi.properties spécifiques au type de serveur

L'accès local aux beans@EJB private InterfaceType var;

Page 53: Ejb3 2-session-beans fr

53

Questions?