Ejb3 2-session-beans fr

Preview:

Citation preview

1

EJB3: Session de Beans

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

3

Aperçu

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

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

6

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

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

8

session Beans sans état

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.

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

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

12

Interface

13

Classe qui implémente l'interface

14

Les clients de session de Beans sans état

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

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

17

Distance autonome (bureau) du client

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

19

Remote Client: jndi.properties

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

21

Client Web à distance (Servlet)

22

Client Web à distance(Servlet Suite)

23

Client Web à distance(web.xml)

24

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

25

Client Web à distance(Résultats Glassfish 2.1)

26

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

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

28

Exemple: Interface d'EJB

29

Exemple: classe EJB qui Implémente interface

30

Exemple: client distant (Servlet)

31

Exemple: client distant (Servlet Suite)

32

Client à distant: jndi.properties

33

Exemple: Client à distant(web.xml)

34

Exemple: Résultats (JBoss 5)

35

Exemple: Résultats (Glassfish 2.1)

36

Sessions Dynamiques de Beans

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.

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

39

Exemple: Interface d’EJB

40

Exemple: Classe EJB qui implémente l'interface

41

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

42

Exemple: client distant (Servlet)

43

Exemple: client distant (Servlet Suite)

44

Exemple: : client distant (JSP)

45

Exemple: client distant (jndi.properties)

46

Exemple: : client distant (web.xml)

47

Exemple: client distant (formulaire de saisie)

48

Résultats : client distant (JBoss 5)

49

Résultat: client distant (Glassfish 2.1)

50

Récapitulation

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

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;

53

Questions?

Recommended