ejb3 2-session-beans fr
Post on 03-Jun-2015
1.003 Views
Preview:
TRANSCRIPT
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?
top related